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 ;
相关推荐
无奈笑天下几秒前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人2 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
2601_967987372 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
隔窗听雨眠3 小时前
Oracle日志体系分层结构与故障定位路径
数据库·oracle·故障排查
为思念酝酿的痛3 小时前
C语言操作MySQL
数据库·mysql
ShineWinsu3 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
星恒随风14 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
吴名氏.16 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
爱码少年16 小时前
Springboot下如何将CSV文件数据导入H2、Mysql数据库表
数据库·mysql·csv