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 ;
相关推荐
八月林城37 分钟前
JAVA导出数据库字典到Excel
java·数据库·excel
TiDB_PingCAP4 小时前
国产化新标杆:TiDB 助力广发银行新一代总账系统投产上线
运维·数据库·开源·tidb
乐安lan5 小时前
数据库的操作
数据库·oracle
霖烟易辞5 小时前
MySQL中的DDL语句
数据库·mysql·ddl
PY1785 小时前
Python的上下文管理器
数据库·python·oracle
阿猿收手吧!6 小时前
【MySQL】表的操作{创建/查看/修改/删除}
数据库·mysql
超维Ai编程6 小时前
mysql从入门到精通
数据库·mysql
CCI3446 小时前
Rust简明教程第三章-所有权与借用
开发语言·数据库·rust
zengson_g7 小时前
如何监控和分析 PostgreSQL 中的查询执行计划?
数据库·postgresql·oracle
Lingoesforstudy7 小时前
InfluxDB v2.x中的Flux基本概念
数据库·influxdb