前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql基础学习之DQL语句学习(三)

mysql基础学习之DQL语句学习(三)

原创
作者头像
心安事随
发布2024-08-17 22:33:46
820
发布2024-08-17 22:33:46
举报
文章被收录于专栏:mysql

DQL

DQL- 编写顺序

代码语言:javascript
复制
 SELECT 字段列表 select
 ​
 FROM 表名列表  from
 ​
 WHERE 条件列表  where
 ​
 GROUP BY 分组字段列表 group by
 ​
 HAVING 分组后条件列表 having
 ​
 ORDER BY 排序字段列表 order by
 ​
 LIMIT 分页参数 limit

DQL- 基础查询

SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数

  1. 查询指定多个字段
代码语言:javascript
复制
 select 字段1,字段2,字段3,.... from 表名
  1. 查询返回所有字段
代码语言:javascript
复制
 select * from 表名设置别名
  1. 设置别名
代码语言:javascript
复制
 select 字段1 [ as 别名1],字段2[as 别名2]... from 表名

as可以省略不写

  1. 去除重复数据
代码语言:javascript
复制
 select distinct 字段列表 from 表名

DQL- 条件查询

代码语言:javascript
复制
 -- 查询 年龄 age > 18 的员工有哪些
 select * from employee where age >18;
 -- 查询 年龄 age < 18 的员工有哪些
 select * from employee where age < 18;
 -- 查询 年龄 age = 18 的员工有哪些
 select * from employee where age = 18;
 ​
 -- 查询 年龄 age >= 18 的员工有哪些
 select * from employee where age >= 18;
 ​
 -- 查询 年龄 age 不为null 的员工有哪些
 select * from employee where age is not null;
 ​
  -- 查询年龄 age 不等于 30 的员工有哪些
 select * from employee where age != 30;
 select * from employee where age <> 30;
 ​
 -- 查询 年龄在 20 - 25 之间的 员工有哪些
 select * from employee where age >= 20 && age <= 25;
 select * from employee where age >= 20 and age <= 25;
 select * from employee where age between 20 and 25; -- 包头包尾
 ​
 -- 查询年龄 = 18 并且 性别为 男 的 员工 有哪个
 select * from employee where age = 18 and gender = '男';
 ​
 -- 查询年龄 = 25 或者 28 或者 32 并且性别为 男 的员工有哪些;
 -- 因为该语句中使用了 OR 运算符来组合多个条件时,可能存在优先级问题,需要用括号明确指定条件的优先级。
 select * from employee where gender = '男' and (age = 25 or age = 28 or age = 32)  ;
 select * from employee where gender = '男' and (age in (25,28,32))  ;
 ​
 -- 查询姓名 为3个汉字(3个字符)的员工有哪些;
 select * from employee where name like '___'; -- ___ 代表三个字符
 ​
 -- 查询身份证 最后一位是0 的员工有哪些; %0 : 表示前面有多是字符我不管,我只需要知道最后一个字符是0
 select * from employee where idcard like '%0';
 ​
 update employee set age = 18 where name = '张三';

DQL- 聚合函数

1.介绍:

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

2.常见聚合函数 (不计算 字段值为null 的数据 )

函数

功能

count

统计数量

max

最大值

min

最小值

avg

平均值

sum

求和总数

3. 语法

代码语言:javascript
复制
 select 聚合函数 (字段列表) from 表名;

4. 练习题

DQL- 分组查询

1. 语法

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

2. where与having区别 执行时机不同:

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

3. 注意事项:

  • 分组之后,查询的字段一般聚合函数分组字段,查询其他字段无任何意义。
  • 执行顺序: where > 聚合函数 > having 。
  • 支持多字段分组, 具体语法为 : group by columnA,columnB

4. 练习题

DQL- 排序查询

1. 语法😍

代码语言:javascript
复制
 select 字段名 from 表名 order by 字段 排序方式(asc,desc);

2. 排序方式😉

  • asc: 正序 || 升序;
  • desc: 倒序 || 降序;

3. 注意事项:😦

  • 如果是升序, 可以不指定排序方式ASC ;
  • 如果是多字段排序,当第一个字段值相同时,根据第二个字段进行排序 ;

4. 练习题😎

DQL- 分页查询

1. 语法😍

代码语言:javascript
复制
 SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;

2. 注意事项:😦

  • 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
  • 如果查询的是第一页数据起始索引可以省略,直接简写为limit 10

3. 练习题😎

DQL 语句 练习

习题练习

查询年龄为20,21,22,23岁的员工信息

代码语言:javascript
复制
 select * from employee where age in (20,21,23);

查询性别为 男 ,并且年龄在 20-40 岁(含)以内的 姓名为三个字 的员工。

代码语言:javascript
复制
 select * from employee where gender = "男" and (age between 20 and 40) and name like '___';

统计员工表中, 年龄小于60岁的 , 男性员工和女性员工的人数。

代码语言:javascript
复制
 select gender,count(*) from employee where age < 60 group by gender;

查询所有 年龄小于等于35岁员工 的 姓名 和 年龄 ,并对查询结果按 年龄升序 排序,如果 年龄相同按 入职时间 降序排序。

代码语言:javascript
复制
 select name,age,enterdate from employee where  age <=  35 order by age asc,enterdate desc;

查询 性别为 男,且 年龄在20-40 岁(含)以内 的 前5个员工信息 ,对 查询的结果 按 年龄升序排序 ,年龄相同 按入职时间升序排序 。

代码语言:javascript
复制
 select * from employee where gender = "男" && age >= 20 && age <= 40 order by age asc,enterdate asc limit 0,5

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DQL
    • DQL- 编写顺序
      • DQL- 基础查询
        • DQL- 条件查询
          • DQL- 聚合函数
            • DQL- 分组查询
              • DQL- 排序查询
                • DQL- 分页查询
                  • DQL 语句 练习
                    • 习题练习
                相关产品与服务
                云数据库 MySQL
                腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档