前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据库基础查询语句笔记

MySQL数据库基础查询语句笔记

作者头像
Breeze.
发布2022-06-05 12:14:14
3.2K0
发布2022-06-05 12:14:14
举报
文章被收录于专栏:一只无聊的清风

普通查询

  • 最基本的查询语句是由 CELECT 和 FROM 关键字组成的

*:代表所有字段的意思

  • SELECT 语句屏蔽了物理层的操作,用户不比关心数据的真是存储,交由数据库高效的查询数据
  • 通常情况下,SELECT子句中使用了表达式,name这列的名字就默认为表达式,因此需要一中对列明重命名的机制
代码语言:javascript
复制
SELECT
    empno,
    sal*12 AS "income"
FROM t_emp;

查询语句的子句执行顺序

数据分页

比如我们查看朋友圈,只会加载少量部分信息,不会一次性加载全部朋友圈,那样只会浪费CPU时间、内存和网络带宽 如果结果集的记录很多,则可以使用LIMIT关键字限定结果集数量。

简写用法

如果LIMIT子句只有一个参数,他表示的是偏移量,起始值默认为0

代码语言:javascript
复制
SELECT empno,ename FROM T_emp LIMIT 10;
# 等价于
SELECT empno,ename FROM T_emp LIMIT 0,10;

执行顺序:FROM -> SELECT -> LIMIT

结果排序

如果没有设置,查询语句不会对结果集进行排序。也就是说,如果想让结果集按照某种顺序排列,就必须使用 ORDER BY子句。

代码语言:javascript
复制
SELECT ...... FROM ...... ORDER BY 列名 [ASC | DESC]; #升序加ASC,降序加DESC
SELECT empno,ename,sal,deptno FROM t_emp ORDER BY sal;#升序
SELECT empno,ename,sal,deptno FROM t_emp ORDER BY sal DESC;#降序

ASC代表升序(默认),DESC代表降序。

升序:按从小到大的顺序排列 (如1、3、5、6、7、9)。 降序:就是按从大到小的顺序排列 (如9、8、6、4、3、1)。

如果排序列的是数字类型,数据库就按照数字大小排序,如果是日期类型,就按照日期大小排序,如果是字符串就按照字符串集序号排序。

排序+分页

ORDER BY子句书写的时候放在LIMIT子句的前面

FROM -> SELECT -> ORDER BY -> LIMIT

去除重复记录

如果我们需要去除重复的数据,可以使用DISTINCT关键字来实现

DISTINCT修饰的不是列名,而是SELECT,即可以连起来看作一个整体SELECT DISTINCT,跟普通的SELECT相比,表明这种查询会执行去重。因此,看起来像是“必须放在第一个字段前面”,实际上它跟字段没关系,是跟SELECT有关系。

重复,指的是结果集中的两行每一列的值都完全一样。如果存在任何一列值不一样,都不算重复。因此,重复不是只看一个列,而是要看一行的所有列。

当SELECT DISTINCT后面跟多个字段时,同样也会做去重(按上面说的重复的定义来判断)。只不过视频中的数据在同时选择job和ename时,没有job和ename都相同的行,所以看起来像是没有做去重,像是“去重失效了”,实际上并没有失效,只是确实没有重复而已。

代码语言:javascript
复制
SELECT DISTINCT 字段 FROM ......;
SELECT DISTINCT job FROM t_emp;

注意事项

使用DISTINCT的SELECT子句中只能查询一列数据,如果查询多列,去除重复记录就会失效。

DISTINCT关键字只能在SELECT子句中使用一次

条件查询 I

很多时候,用户感兴趣的并不是逻辑表里的全部记录,而是他们当中能够满足一种或某几种条件的记录。这类条件要用WHERE子句来实现数据的筛选

代码语言:javascript
复制
SELECT DISTINCT 字段 FROM ... WHERE 条件 [AND | OR] 条件 ...; 
#假设每个条件都需要满足,在每个条件之间添加AND。假设这些条件只需要满足一个,在每个条件之间添加OR
SELECT DISTINCT empno,ename,sal FROM t_emp WHERE deptno=10 AND sal >= 2000;
#想查询10部门里边底薪超过2000的员工

四类运算符

WHERE语句中的条件运算会用到一下四种运算符:

算数运算符

MySQL ifnull()函数 - MySQL教程™ (yiibai.com)

IFNULL(null,0)把null转换成0

不管什么值与null值进行预算结果都是null,可以用 IFNULL(null,0) 来解决

代码语言:javascript
复制
SELECT empno,sal,ename,hiredate
FROM t_emp
WHERE deptno=10 AND (sal+IFNULL(comm,0))*12>=15000
AND DATEDIFF(NOW(),hiredate)/365>=20;

DATEDIFF(第一个日期,第二个日期)可以返回第一个日期减去第二个日期的天数

NOW()获取当前日期和时间

比较运算符

MySQL IN运算符简介. IN 运算符允许你确定一个指定的值在一组值匹配的任何值或 子查询

代码语言:javascript
复制
SELECT
    deptno,empno,sal,hiredate
FROM t_emp
WHERE deptno IN(10,20,30) AND job!="SALLESMAN" AND hiredate<"1985-01-01";
代码语言:javascript
复制
SELECT 
    ename,comm,sal
FROM t_emp WHERE comm IS NULL
AND sal BETWEEN 2000 and 3000
AND ename LIKE "_LAKE";

正则表达式的运算符

代码语言:javascript
复制
SELECT 
    ename,comm,sal
FROM t_emp WHERE comm IS NOT NULL
AND sal BETWEEN 1000 and 3000
AND ename REGEXP"^[\\u4e00-\\u9fa5]{2,4}$";
# ^代表字符串的开头$代表字符串的结尾,

条件查询 II

逻辑运算符

二进制运算符

二进制运算的实质是将参与运算的两个操作数,按对应的二进制诸位进行逻辑运算

按位运算符

WHERE子句的注意事项

WHERE子句中,条件执行的顺序是从左到右。所以应该把索引条件,或者筛选掉记录最多的条件写在做左侧

代码语言:javascript
复制
SELECT empno,ename FROM t_emp
WHERE ename = "FORD" AND sal >= 2000;
#-------------------------------------
SELECT empno,ename FROM t_emp
WHERE deptno = 10 AND sal >= 2000;

各种子句的执行顺序

FROM –> WHERE -> SELECT -> ORDER BY -> LIMIT

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 普通查询
    • 查询语句的子句执行顺序
    • 数据分页
      • 简写用法
      • 结果排序
      • 排序+分页
      • 去除重复记录
        • 注意事项
        • 条件查询 I
          • 四类运算符
            • 算数运算符
            • 比较运算符
        • 条件查询 II
          • 逻辑运算符
            • 二进制运算符
              • 按位运算符
                • WHERE子句的注意事项
                相关产品与服务
                云数据库 SQL Server
                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档