数据库执行DQL 语句不会对数据进行改变,而是让数据库发送结果集给客户端。 查询返回的结果集是一张虚拟表
。
查询语句书写顺序
:
select – from- where- group by- having- order by-limit
先给出查询顺序
from -> join -> where -> group by -> 聚合函数 -> having -> select -> order by -> limit
注:having 与where 的区别:
分组后
对数据进行过滤, where 是在分组前
对数据进行过滤后面可以使用聚合函数
(统计函数), where 后面不可以使用聚合函数。emp表字段详情
stu表字段详情
下面开始进行查询
查询所有列
select * from emp;
查询指定列
select empno,sal from emp;
条件查询关键字
查询性别为女,并且年龄 50 的记录
select * from stu where gender="女" and sage=50;
查询学号为 S_1001,S_1002,S_1003 的记录
select * from stu where sid in ("S_1001","S_1002","S_1003");
查询年龄为 null 的记录
select * from stu where age is null;
查询姓名不为 null 的学生记录
select * from stu where sname is not null;
通配符:
_
:任意一个字符%
:任意0~n 个字符查询姓名由 5 个字母构成的学生记录
select * from stu where sname like "_____"
查询姓名由 5 个字母构成,并且第 5 个字母为“i”的学生记录
select * from stu where sname like "____i"
查询姓名以“z”开头的学生记录
select * from stu where sname like "z%"
聚合函数
查询每个部门的部门编号和每个部门的工资和:
select deptno,sum(sal) from emp group by deptno;
select deptno,count(*) from emp group by deptno;
select deptno,count(*) from emp where sal>1500 group by deptno;
查询工资总和大于 9000 的部门编号以及工资和:
select deptno,sum(sal) from emp group by deptno having sum(sal)>9000;
asc 升序(默认)
desc 降序
重点:获取emp的ename, 查询按照ename的最后两个字母降序进行排列
select ename from emp order by substring(ename, -2) desc;
查询 5 行记录,起始行从 0 开始
select ename from emp limit 0,5;
查询 10 行记录,起始行从 3 开始
select ename from emp limit(3,10)
select ename from emp substring(ename, -2);