DQL查询数据库

写在前面

数据库执行DQL 语句不会对数据进行改变,而是让数据库发送结果集给客户端。 查询返回的结果集是一张虚拟表

1. 查询顺序和表字段

查询语句书写顺序

selectfrom- where- group by- having- order by-limit 

先给出查询顺序

from -> join -> where -> group by -> 聚合函数 -> having -> select -> order by -> limit

注:having 与where 的区别:

  1. having 是在分组后 对数据进行过滤, where 是在分组前对数据进行过滤
  2. having 后面可以使用聚合函数(统计函数), where 后面不可以使用聚合函数。

emp表字段详情

在这里插入图片描述
stu表字段详情

在这里插入图片描述

下面开始进行查询

2. 基础查询和条件查询

查询所有列

select * from emp;

查询指定列

select empno,sal from emp;

条件查询关键字

  • =、!=、<>、<、<=、>、>=;
  • between…and;
  • in(set);
  • is null; is not null
  • and、or、not;

查询性别为女,并且年龄 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;

3. 模糊查询

通配符:

  • _:任意一个字符
  • %:任意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%"

4. 分组查询

聚合函数

  • 聚合函数是用来做纵向运算的函数:
    • count():统计指定列不为 NULL 的记录行数;
    • max():计算指定列的最大值,如果指定列是字符串类型,使用字符串排序运算;
    • min():计算指定列的最小值,如果指定列是字符串类型,使用字符串排序运算;
    • sum():计算指定列的数值和,如果指定列类型不是数值类型,计算结果为 0;
    • avg():计算指定列的平均值,如果指定列类型不是数值类型,计算结果为 0;

查询每个部门的部门编号和每个部门的工资和:

select deptno,sum(sal) from emp group by deptno;
  • 查询每个部门的部门编号以及每个部门的人数:
select deptno,count(*) from emp group by deptno;
  • 查询每个部门的部门编号以及每个部门工资大于1500的人数:
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;

5. 排序、limit方言、字段控制查询

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值