mysql知识点总结3—DQL(期末可用)

目录

 一、DQL-基础查询

1.语法

2.例子

 二、DQL-条件查询

1.语法

2.条件

3.例子

 三、聚合函数

1.介绍

2.常见聚合函数

3.语法

4.例子

​  四、 分组查询

1,语法

2.where与having区别

3.注意

4.例子

  五、排序查询

1.语法

2.排序方式

3.注意

4.例子

  六、分页查询

1.语法

2.技巧

3.分页查询的使用场景

4.例子

 七、总案例练习

1.DQL语法总结:

2.执行顺序

3.案例


一、DQL-基础查询

1.语法

1.1查询多个字段
SELECT  字段1,字段2,字段3...   FROM   表名;
SELECT * FROM表名;
1.2设置别名
SELECT  字段1   [AS 别名1],  字段2  [AS别名2]..  .FROM  表名;
1.3去除重复记录
SELECT   DISTINCT   字段列表   FROM   表名; 

2.例子

2.1要求①查询指定字段 name,workno,age并返回
②查询所有字段返回
③查询所有员工的工作地址,起别名
④查询公司员工的上班地址(不要重复)

2.2代码:

先创建查询要用的数据,代码在下面一并给了

#创建表结构
CREATE TABLE emp (
  `id` int DEFAULT NULL COMMENT '编号',
  `workno` varchar(10) DEFAULT NULL,
  `name` varchar(10) DEFAULT NULL COMMENT '员工姓名',
  `gender` char(1) DEFAULT NULL COMMENT '性别',
  `age` tinyint unsigned DEFAULT NULL COMMENT '年龄',
  `idcard` char(18) DEFAULT NULL comment '身份证',
  `workaddress` varchar(50) DEFAULT NULL comment '工作地址',
  `entrydate` date DEFAULT NULL COMMENT '入职时间'
)  COMMENT '员工信息表';
#插入数据
insert into emp values (1,1,'柳岩','女',20,'123456789012345678','北京','2000-01-01'),
                    (2,2,'张无忌','男',18,'123456789012345670','北京','2005-09-01'),
                    (3,3,'韦一笑','男',38,'12345678901234567X','上海','2005-08-01'),
                    (4,4,'赵敏','女',18,'123456789012345670','北京','2009-12-01'),
                    (5,5,'小昭','女',16,'123456757123845670','上海','2007-07-01'),
                    (6,6,'杨逍','男',28,'123456789012345673','北京','2006-01-01'),
                    (7,7,'范瑶','男',40,'123456789012345670','北京','2005-05-01'),
                    (8,8,'黛绮丝','女',88,'123456789012345670','天津','2015-05-01'),
                    (9,9,'范凉凉','女',45,null,'北京','2010-04-01'),
                    (10,10,'陈友谅','男',53,'123456789012345678','上海','2011-01-01');


#  1.查询指定字段 name,workno,age并返回
select name,workno,age from emp;
#  2.查询所有字段返回
select *from emp;
#  3.查询所有员工的工作地址,起别名
select workaddress as '工作地址' from emp;
#  4.查询公司员工的上班地址(不要重复)
select  distinct  workaddress  from emp;

2.3查询结果:

mysql知识点总结3—DQL(期末可用)_第1张图片

mysql知识点总结3—DQL(期末可用)_第2张图片

mysql知识点总结3—DQL(期末可用)_第3张图片

 二、DQL-条件查询

1.语法

SELECT   字段列表  FROM   表名    WHERE  条件列表; 

2.条件

mysql知识点总结3—DQL(期末可用)_第4张图片mysql知识点总结3—DQL(期末可用)_第5张图片

注:between...and...这个运算符中,between后面必须跟着最小值,and后面必须跟着最大值。

3.例子

3.1要求

-- 条件查询
-- 1.查询年龄等于88的员工
-- 2.查询年龄小于20的员工信息
-- 3.查询年龄小于等于20的员工信息
-- 4.查询没有身份证号的员工信息
-- 5.查询有身份证号的员工信息
-- 6.查询年龄不等于88的员工信息
-- 7.查询年龄在15岁(包含)到20岁(包含)之间的员工信息
-- 8.查询性别为女且年龄小于25岁的员工信息
-- 9.查询年龄等于18或20或40的员工信息
-- 10.查询姓名为两个字的员工信息
-- 11.查询身份证号最后一位是X的员工信息

3.2代码

-- 条件查询
-- 1.查询年龄等于88的员工
select * from emp where age=88;
-- 2.查询年龄小于20的员工信息
select  *from emp where age <20;
-- 3.查询年龄小于等于20的员工信息
select * from emp where age <=20;
-- 4.查询没有身份证号的员工信息
select * from emp where idcard  is null;
-- 5.查询有身份证号的员工信息
select * from emp where  idcard is not null;
-- 6.查询年龄不等于88的员工信息
select * from emp where age !=88;
select * from emp where age <> 88;
-- 7.查询年龄在15岁(包含)到20岁(包含)之间的员工信息
select * from emp where age between 15 and 20;
select * from emp where age >=15 && age <=20;
select * from emp where age >=15 and  age <=20;
-- 8.查询性别为女且年龄小于25岁的员工信息
select * from emp where gender ='女' and age <25;
-- 9.查询年龄等于18或20或40的员工信息
select *from emp where age in (18,20,40);
select * from emp where age =18 or age = 28 or age = 40;
-- 10.查询姓名为两个字的员工信息
select * from emp where name like '__';
-- 11.查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';

 3.3结果:

结果1:

结果2:

结果3:

mysql知识点总结3—DQL(期末可用)_第6张图片

结果4:

结果5:

mysql知识点总结3—DQL(期末可用)_第7张图片

结果6:

mysql知识点总结3—DQL(期末可用)_第8张图片

结果7:

mysql知识点总结3—DQL(期末可用)_第9张图片

结果8:

结果9:

结果10:

mysql知识点总结3—DQL(期末可用)_第10张图片

结果11:

三、聚合函数

1.介绍

将一列数据作为一个整体,进行纵向计算。

2.常见聚合函数

mysql知识点总结3—DQL(期末可用)_第11张图片

3.语法

SELECT   聚合函数(字段列表)   FROM  表名;

注意:

①聚合函数和字段列表外面这个括号之间没有空格奥,他俩是挨着的,要不就报错

报错详情参考我这篇文章

解决!mysql报错 FUNCTION test.sum does not exist. Check the ‘Function Name Parsing and Resolutio-CSDN博客

②null值不参与所有聚合函数运算。

4.例子

4.1要求:
①.统计该企业员工数量
②.统计该企业员工的平均年龄
③.统计该企业员工的最大年龄
④.统计该企业员工的最小年龄
⑤.统计西安地区员工的年龄之和

4.2代码:

# 聚合函数
# 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.3结果图:

结果1:

结果2:

结果3:

结果4:

结果5:

 四、 分组查询

1,语法

SELECT   字段列表   FROM  表名  [WHERE条件 ]  GROUP BY   分组字段名   [HAVING分组后过滤条件];

2.where与having区别

①执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
②判断条件不同: where不能对聚合函数进行判断,而having可以。

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

4.1要求:

①根据性别分组,统计男性员工和女性员工的数量
②根据性别分组,统计男性员工和女性员工的平均年龄
③查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

4.2 代码:

#分组查询
# 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;

4.3结果:

结果一:

结果二:

结果三:

五、排序查询

1.语法

SELECT  字段列表  FROM   表名   ORDER BY   字段1   排序方式1,字段2排序方式2;

2.排序方式

ASC:升序(默认值)DESC:降序,ASC因为是默认的,也可以省略不写,升序就是从小到大,降序是从大到小。

3.注意

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

4.例子

4.1要求:

①根据年龄对公司的员工进行升序排序
②根据入职时间,对员工进行降序排序
③根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序

4.2代码:

# 排序查询
# 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;

4.3结果:

结果一:

mysql知识点总结3—DQL(期末可用)_第12张图片

结果二:

mysql知识点总结3—DQL(期末可用)_第13张图片

结果三: 

mysql知识点总结3—DQL(期末可用)_第14张图片

六、分页查询

1.语法

SELECT    字段列表  FROM  表名   LIMIT  起始索引,查询记录数;

2.技巧
  • 起始索引从o开始,起始索引=(查询页码-1)*每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 5。
3.分页查询的使用场景

4.例子

4.1要求:

①查询第1页员工数据,每页展示5条记录
②查询第2页员工数据,每页展示3条记录

4.2代码:

# 1.查询第1页员工数据,每页展示5条记录
select * from emp limit 0,5;
# 2.查询第2页员工数据,每页展示3条记录
select * from emp limit 3,3;

4.3结果:

结果一:

mysql知识点总结3—DQL(期末可用)_第15张图片

结果二:

七、总案例练习

1.DQL语法总结:

mysql知识点总结3—DQL(期末可用)_第16张图片

2.执行顺序

mysql知识点总结3—DQL(期末可用)_第17张图片

3.案例

3.1要求:

①.查询年龄为20,21,22,23岁的女性员工信息。
②.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工。
③.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数。
④.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
⑤.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。

 3.2代码:

-- DQL 语句练习-------------
# 1.查询年龄为20,21,22,23岁的女性员工信息。
select * from emp where age in(20,21,22) and gender ='女';
# 2.查询性别为男,并且年龄在20-40岁(含)以内的姓名为三个字的员工。
select * from emp where (age between 20 and 40) and (name like '___') and gender ='男' ;
# 3.统计员工表中,年龄小于60岁的,男性员工和女性员工的人数。
select gender ,count(*) from emp where age <60 group by gender;
# 4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
select name,age from emp where age <=35 order by age asc ,entrydate desc;
# 5.查询性别为男,且年龄在20-40岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select * from emp where  gender='男' and (age between 20 and 40 ) order by  age asc ,entrydate asc limit 0,5 ;

3.3结果图:

结果一:

结果二:

结果三:

结果四:

mysql知识点总结3—DQL(期末可用)_第18张图片

结果五: 


结束啦~觉得有用的友友点赞或评论支持一下我呀~

你可能感兴趣的:(mysql数据库,mysql,sql,数据库)