一、简单查询
# 查询t_emp表的所有字段
SELECT * FROM t_emp;
# 查询t_emp表的指定字段
SELECT ename, empno FROM t_emp;
# 为sal*12列名起一个名字叫incom
SELECT empno, sal*12 AS "incom" FROM t_emp;
执行顺序: 词法分析与优化->FROM->SELECT
二、高级查询
2.1 分页
看朋友圈,只会加载少量的部分的信息,不用一次性加载全部的朋友圈,那样会浪费CPU、时间,内存和网络带宽
如果结果集很多,则可以使用LIMIT关键字限定结果集的数量。
# 分页处理
# SELECT ... FROM ... LIMIT 起始位置,偏移量;
# 起始位置不写,默认是0
SELECT empno, ename FROM t_emp LIMIT 0, 5;
执行顺序: FROM->SELECT->LIMIT
2.3 结果集排序
# 查出来的结果排序, ORDER BY 字段名称,默认升序
SELECT empno, ename, sal, deptno FROM t_emp ORDER BY sal;
# 降序排列 DESC 升序:ASC
SELECT empno, ename, sal, deptno FROM t_emp ORDER BY sal DESC;
多字段排序:
# 当指定的排序字段一致时,默认再按照主键的升序排序
# 但是可以指定多关键字排序
SELECT empno, ename, sal, hiredate FROM t_emp ORDER BY sal DESC, hiredate ASC;
排序+分页
# 例子:查出公司工资前5的员工
SELECT empno, ename, sal FROM t_emp ORDER BY sal DESC LIMIT 0, 5;
执行顺序: FROM->SELECT->ORDER BY->LIMIT
2.4 去重
DISTINCT的使用: 结果集中的重复记录 ——>去除重复记录
- DISTINCT只能有一个字段,当查询有多个字段时,DISTINCT会失效
- DISTINCT关键字只能在SELECT子句中使用一次
- DISTINCT关键字必须加在第一关键字前面,也只能有一个关键字
例子: 想要看看员工一共有哪几种工作,这时要求不重复显示
SELECT DISTINCT job FROM t_emp;
三、条件查询
SELECT empno, ename, sal FROM t_emp WHERE (deptno=10 OR deptno=20) AND sal >= 2000;
例子:找出部门为10, 年收入(sal+comm)超过15000并且工龄超过20年的员工
SELECT empno, ename, sal, hiredate
FROM t_emp
WHERE deptno=10 AND (sal + IFNULL(comm,0))*12>=15000 AND DATEDIFF(NOW(),hiredate)/365>=20;
注意:
-
任何值与NULL加减乘除之后依然时NULL
-
IFNULL()函数,如果第一个参数为NULL,返回第二个参数
-
DATEDIFF()两个日期参数,返回天数
-
NOW()函数返回当前的日期和时间
3.1 算术运算符
+ - * / %
3.2 比较运算符
>, <, >=, <=, =, !=, IN
IN为包含
表达式 | 意义 | 例子 |
---|---|---|
IS NULL | 为空 | comm IS NULL |
IS NOT NULL | 不为空 | comm IS NOT NULL |
BETWEEN AND | 范围 | sal BETWEEN 2000 AND 3000 |
LIKE | 模糊查询 | ename LIKE “A%” |
REGEXP | 正则表达式 | ename REGEXP “[a-zA-Z]{4}” |
注释: LIKE“A%” 指的是以A开头,“%A”表示以A结尾,“%A%”表示字段中包含A
# 在部门10,20,30中查找工作不是销售,入职日期在1985-01-10之前的
SELECT empno, ename, sal, deptno, hiredate
FROM t_emp
WHERE deptno IN(10, 20, 30) AND job != "SALESMAN" AND hiredate<"1985-01-10";
例子: 查找佣金不为空的员工,并且底薪是2000到3000,并且名字以A开头的员工
SELECT ename, comm, sal
FROM t_emp
WHERE comm IS NOT NULL
AND sal BETWEEN 2000 AND 3000
AND ename LIKE "A%";
3.3 逻辑运算符
AND, OR, NOT, XOR
`
例子: 查询不在10,20部门的员工
SELECT ename, deptno
FROM t_emp
WHERE NOT deptno IN(10, 20);
3.4 按位运算符
二进制运算
& | ~ ^ << >>
文章来源:https://www.toymoban.com/news/detail-599373.html
3.5 WHERE子句的注意事项
- WHERE子句中,条件执行的顺序是从左到右的。所以应该把索引条件,或者筛选掉最多的条件写在最左侧
- 条件优先级:索引条件、筛选掉最多的记录的条件、普通检索条件
执行顺序: FROM->WHERE->SELECT-> ORDER BY->LIMIT
文章来源地址https://www.toymoban.com/news/detail-599373.html
到了这里,关于数据库的基本查询(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!