SQL语句(DQL)

  • Data Query Language(数据查询语言),用来查询数据库中表的记录

DQL-基本查询

DQL-条件查询(WHERE)

sql 复制代码
-- 查询姓名为2个字的员工信息
select * from emp where name like '__';

-- 查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X';

DQL-聚合函数

sql 复制代码
-- 1.统计该企业员工数量
select count(*) from emp;
select count(idcard) from emp;

-- 2.统计该企业员工的平均年龄
select avg(age) from emp;

-- 3.统计企业员工的最大,最小年龄
select max(age) from emp;
select min(age) from emp;

-- 4.统计西安地区员工的年龄之和
select sum(age) from emp where workno = '西安';

DQL-分组查询(GROUP BY)

sql 复制代码
-- 分组查询
-- 1.根据性别分组 , 统计男性员工 和女性员工的数量
select gender , count(*) from emp group by gender;

-- 2.根据性别分组 , 统计男性员工 和 女性员工的平均值
select gender , avg(age) from emp group by gender;

-- 3.查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
select workaddress ,count(*) from emp where age < 45 group by workaddress having count(*) >= 3;

注意事项:

  • 执行顺序:where > 聚合函数 > having
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

DQL-排序查询(ORDER BY)

sql 复制代码
-- 排序查询
-- 1.根据年龄对公司的员工进行升序排序
select * from emp order by age asc ;

-- 2.根据入职时间,对员工进行降序排序
select * from emp order by entrydate desc ;

-- 3.根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age asc , entrydate desc ;

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序


DQL-分页查询(LIMIT)

sql 复制代码
-- 分页查询
-- 1.查询第1页员工数据,每页展示10条记录
select * from emp limit 0 , 10;
select * from emp limit 10;

-- 2.查询第2页员工数据,每页展示10条数据 -----> (页码 - 1) * 页展示记录数
select * from emp limit 10,10;

注意事项:

  • 起始索引从0开始,起始索引 = (查询页码-1)*每页显示记录数
  • 如果查询的是第一页数据,可以直接写成limit10
  • 分页查询是数据库的方言

案例练习

sql 复制代码
-- 查询年龄为20,21,22,23的女性员工信息
select * from emp where gender = '女' and age in(20,21,22,23);

-- 查询男性年龄在20-30岁以内姓名为三个字的员工
select * from emp where gender = '男' and ( age between 20 and 30 ) and name like '___';

-- 统计员工表中,年龄小于60岁的, 男性员工和女性员工的人数
select gender ,count(*) from emp where age < 60 group by gender ;

-- 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select name , age from emp where age <= 35 order by age asc , entrydate desc ;

-- 查询性别为男,且年龄在20-40岁以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序
select * from emp where gender = '男' and ( age between 20 and 40 ) order by age asc , entrydate asc limit 5 ;

DQL-执行顺序

里面的age和name字段可以使用别名

sql 复制代码
-- 查询年龄大于15的员工的姓名、年龄、并根据年龄进行升序排序
select e.name ename ,e.age eage from emp e where e.age > 15 order by eage asc ;
相关推荐
怕什么真理无穷7 分钟前
mysql server 9.4 windows安装教程(sqlyog 下载)
数据库
Olrookie13 分钟前
MySQL运维常用SQL
运维·数据库·sql·mysql·dba
数据库生产实战23 分钟前
ORACLE 19C ADG环境 如何快速删除1.8TB的分区表?有哪些注意事项?
数据库·oracle
blackorbird40 分钟前
使用 Overpass Turbo 查找监控摄像头
运维·服务器·数据库·windows
IT永勇44 分钟前
SQLite数据库基本操作
数据库·sqlite·嵌入式开发·增删改查·关系型数据库
洋不写bug1 小时前
数据库的创建,查看,修改,删除,字符集编码和校验操作
android·数据库·adb
想ai抽1 小时前
吃透大数据算法-算法地图(备用)
大数据·数据库·spark
weixin_307779131 小时前
Clickhouse导出库的表、视图、用户和角色定义的SQL语句
开发语言·数据库·算法·clickhouse·自动化
流星白龙1 小时前
【Qt】7.信号和槽_connect函数用法(1)
开发语言·数据库·qt
码界奇点1 小时前
平替MongoDB金仓多模数据库在电子证照国产化中的实践与优势
数据库·mongodb·社交电子·里氏替代原则