MYSQL入门-DQL
前言
本文是本人根据黑马学习mysql做的笔记,分享出来,供大家一同学习,希望大家多多关注,点赞,收藏哦
一、DQL是什么?
DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录
二、DQL语法
三、具体实例
下面通过一张具体的表进行讲解说明
1.基本查询
语法:
SELECT * FROM 表名;
SELECT 字段1,字段2,字段3... FROM 表名
//起别名
SELECT 字段1[AS 别名],字段2[As 别名] FROM 表名
//去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
代码如下(示例):
select workno ,name ,age from emp;
select * from emp;
select workaddress as "工作地址" from emp; //as可以省略
select DISTINCT workaddress as "工作地址" from emp; //去除重复记录
2.条件查询
语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
代码如下(示例):
-- 1.查询年龄等于27员工
select * from emp where age = 27;
-- 2. 查询年龄小于30的员工
select * from emp where age < 30;
-- 3. 查询年龄小于等于30的员工
select * from emp where age <= 30;
-- 4.查询没有身份证的员工
select * from emp where idcard is null;
-- 5.查询有身份证号的员工
select * from emp where idcard is not null;
-- 6.查询年龄不等于24的员工
select * from emp where age !=24;
select * from emp where age <>24;
-- 7.查询年龄在15岁(包含)到30(包含)员工
select * from emp where age>=15 and age<=30;
select * from emp where age between 15 and 30;
-- 8.查询性别为女且年龄小于30的员工
select * from emp where gender="女" and age<30;
-- 9.查询年龄等于21或年龄等于24的员工
select * from emp where age =21 or age =24;
select * from emp where age in (21,24);
-- 10.查询姓名为两个字的员工
select * from emp where name like "__";
-- 11.查询身份证号最后一个是X的员工
select * from emp where idcard like "%X";
主要的条件如下图:
3.聚合函数
语法:
SELECT 聚合函数(字段列表) FROM 表名
代码如下(示例):
-- 1.统计企业员工数量
select count(*) from emp;
-- 2.统计员工平均年龄
select avg(age) from emp;
-- 3.统计员工最大年龄
select max(age) from emp;
-- 4.统计员工最小年龄
select min(age) from emp;
-- 5.统计北京地区员工的年龄之和
select sum(age) from emp where workaddress ="北京";
主要的聚合函数如下图:
4.分组查询
语法:
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组过滤条件];
代码如下(示例):
-- 1.根据员工性别分组,统计男性员工女性员工数量
select gender,count(*) from emp group by gender;
-- 2. 根据性别分组,统计男性女性员工平均年龄
select gender,avg(age) from emp GROUP BY gender;
-- 3. 查询年龄小于45的员工,并根据工作地址分组,获取员工大于等于2的工作地址
select workaddress as "工作地址",count(*) from emp where age<45 GROUP BY workaddress having count(*)>=2;
这里需要区分where和having:主要有以下两点不同:
- 执行时机不同:where是分组之前过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
- 判断条件不同:where不能对聚合函数进行判断,having可以
注意:
- 执行顺序:where>聚合函数>having
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无意义
5.排序查询
语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式
代码如下(示例):
-- 1.根据年龄对员工进行升序排序
select * from emp order by age;
-- 2.根据入职时间,对员工进行降序排序
select * from emp order by entrydate desc;
-- 3.根据年龄对员工升序排序,年龄相同,再按照入职时间进行降序排序
select * from emp order by age, entrydate desc;
注:
- ASC升序
- DESC降序
6.分页查询
语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数
代码如下(示例):
-- 1.查询第一页员工数据,每页展示10个
select * from emp limit 0,10;
-- 2.查询第二页员工数据,每页展示10条
select * from emp limit 10,10;
注意:
- 起始索引从0开始,起始索引=(查询页码-1)*每页记录数
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
- 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10.
总结
以上是对SQL语句中的DQL的总结,希望对你能够有用!!