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 ;
相关推荐
dazhong201210 分钟前
PLSQL 客户端连接 Oracle 数据库配置
数据库·oracle
路在脚下@44 分钟前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
了一li2 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
码农君莫笑3 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
别致的影分身3 小时前
使用C语言连接MySQL
数据库·mysql
京东零售技术5 小时前
“慢”增长时代的企业数据体系建设:超越数据中台
数据库
sdaxue.com5 小时前
帝国CMS:如何去掉帝国CMS登录界面的认证码登录
数据库·github·网站·帝国cms·认证码
o(╥﹏╥)6 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
阿里嘎多学长6 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_6 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端