MySQL基本SQL语句3(DQL)

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。 上面两句命令用法效果一致,AS可以省略不写。 三、聚合函数1.常用的聚合函数聚合函数对一组值执行计算并返回单一的值要注意的是:NULL值不参与所有的聚合函数运算,聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。四、分组查询1.使用分组查询的语法where与having区别注意事项:五、排序查询排序在日常开发中是非常常见的一个操作,

目录

前言

一、基础查询

1.查询多个字段

2.查询字段并给字段取别名

3.查询字段并去重

二、条件查询

1.命令语法

2.运算符(比较运算符&逻辑运算符)

3.举例

三、聚合函数

1.常用的聚合函数

2.使用聚合函数的语法

3.举例

四、分组查询

1.使用分组查询的语法

2.演示

五、排序查询

1.语法

2.演示

六、分页查询

1.语法

2.演示

总结


前言

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。


一、基础查询

1.查询多个字段

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;

image.gif

SELECT * FROM 表名 ;                 #      * 号代表查询所有字段

image.gif

2.查询字段并给字段取别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;

SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

上面两句命令用法效果一致,AS可以省略不写。

image.gif

3.查询字段并去重

SELECT DISTINCT 字段列表 FROM 表名;

image.gif

二、条件查询

1.命令语法

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

2.运算符(比较运算符&逻辑运算符)

image.gif

image.gif

3.举例

#查年龄等于19的人
SELECT * FROM tb_user WHERE age = 19;
#查询小于等于20岁的
SELECT * FROM tb_user WHERE age <=20;
#查询年龄不等于19岁
SELECT * FROM tb_user WHERE age !=19;
#查询年龄在19和21之间  下面两种命令效果一致
#注意使用BETWEEN小的写左边,大的写右边
SELECT * FROM tb_user WHERE age >= 19 AND age <= 20;
SELECT * FROM tb_user WHERE age BETWEEN 19 AND 20;
#查询年龄等于19或20的人
SELECT * FROM tb_user WHERE age = 19 OR age = 10;
SELECT * FROM tb_user WHERE age IN (19,20);
#查询名字为3个字的人
SELECT * FROM tb_user WHERE `name` LIKE '___';  #这里''中输入的是三个下划线

image.gif

三、聚合函数

1.常用的聚合函数

聚合函数对一组值执行计算并返回单一的值

image.gif

2.使用聚合函数的语法

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

要注意的是:NULL值不参与所有的聚合函数运算,聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。

3.举例

#统计表的用户数量
SELECT  COUNT(*) FROM tb_user;
#统计该表用户平均年龄
SELECT AVG(age) FROM tb_user;
#统计该表用户最大年龄
SELECT MAX(age) FROM tb_user;
#统计该表用户最小年龄
SELECT MIN(age) FROM tb_user;
#统计女员工年龄之和
SELECT SUM(age) FROM tb_user WHERE gender = '女';

image.gif

四、分组查询

1.使用分组查询的语法

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

where与having区别

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

    注意事项:

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

      2.演示

      #根据性别分组,统计男用户和女用户的总数
      SELECT gender, COUNT(*) FROM tb_user GROUP BY gender;
      #根据性别分组,统计男用户 和 女用户的平均年龄
      SELECT gender, AVG(age) FROM tb_user GROUP BY gender;
      #查询id值大于3,按年龄分组,获取用户数量大于等于3的年龄值
      SELECT age, COUNT(*) FROM tb_user WHERE id > 3 GROUP BY age HAVING count(*) >= 3;

      image.gif

      五、排序查询

      排序在日常开发中是非常常见的一个操作,有升序排序,也有降序排序。

      1.语法

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

        1. ASC : 升序(默认值)
        2. DESC: 降序

        2.演示

        #对表按照年龄进行升序排序
        SELECT * FROM tb_user ORDER BY age ASC;
        #对表按照年龄进行降序排序
        SELECT * FROM tb_user ORDER BY age DESC;
        #根据年龄对表进行升序排序,年龄相同者再根据id进行降序排序
        SELECT * FROM tb_user ORDER BY age asc , id desc;

        image.gif


        注意:

        如果是升序, 可以不指定排序方式ASC ;

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

        六、分页查询

        1.语法

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

        2.演示

        #查询第1页用户数据, 每页展示5条记录
        SELECT * FROM tb_user LIMIT 0 , 5;
        #查询第2页用户数据, 每页展示5条记录  & (页码-1)*页展示记录数
        SELECT * FROM tb_user LIMIT 5 ,5;

        image.gif


        总结

        DQL语句的执行顺序为: from ... where ... group by ... having ... select ... order by ... limit ...

        相关实践学习
        如何在云端创建MySQL数据库
        开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
        全面了解阿里云能为你做什么
        阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
        目录
        相关文章
        |
        4天前
        |
        SQL 关系型数据库 MySQL
        MySQL 保姆级教程(一):了解 SQL
        MySQL 保姆级教程(一):了解 SQL
        |
        7天前
        |
        SQL 安全 关系型数据库
        【SQL】已解决:MySQL 服务无法启动
        【SQL】已解决:MySQL 服务无法启动
        41 1
        |
        12天前
        |
        SQL 关系型数据库 MySQL
        【MySQL从入门到精通】常用SQL语句分享
        【MySQL从入门到精通】常用SQL语句分享
        24 2
        |
        11天前
        |
        SQL 关系型数据库 MySQL
        You have an error in your SQL syntax;check the manual that corresponds to you Mysql server version
        You have an error in your SQL syntax;check the manual that corresponds to you Mysql server version
        |
        9天前
        |
        存储 关系型数据库 MySQL
        探索MySQL:关系型数据库的基石
        MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
        |
        6天前
        |
        关系型数据库 MySQL 网络安全
        Mysql 数据库主从复制
        在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
        911 6
        Mysql 数据库主从复制
        |
        7天前
        |
        缓存 运维 关系型数据库
        数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
        经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
        |
        12天前
        |
        XML Java 关系型数据库
        Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
        Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
        |
        12天前
        |
        关系型数据库 MySQL 数据库
        关系型数据库mysql数据增量恢复
        【7月更文挑战第3天】
        126 2
        |
        12天前
        |
        关系型数据库 MySQL Shell
        关系型数据库mysql数据完全恢复
        【7月更文挑战第3天】
        83 2