MySQL基本SQL语句3(DQL)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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
        目录
        相关文章
        |
        17天前
        |
        SQL NoSQL 关系型数据库
        2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
        MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
        |
        29天前
        |
        SQL 运维 关系型数据库
        MySQL 运维 SQL 备忘
        MySQL 运维 SQL 备忘录
        45 1
        |
        18天前
        |
        SQL 关系型数据库 MySQL
        MySql5.6版本开启慢SQL功能-本次采用永久生效方式
        MySql5.6版本开启慢SQL功能-本次采用永久生效方式
        32 0
        |
        18天前
        |
        SQL 关系型数据库 MySQL
        mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
        mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
        30 0
        |
        1月前
        |
        SQL 存储 关系型数据库
        mysql 数据库空间统计sql
        mysql 数据库空间统计sql
        45 0
        |
        11月前
        |
        SQL 存储 关系型数据库
        MySQL下使用SQL命令进行表结构与数据复制实践
        MySQL下使用SQL命令进行表结构与数据复制实践
        152 0
        |
        SQL 关系型数据库 MySQL
        MySQl数据库第八课-------SQL命令查询-------主要命脉2
        MySQl数据库第八课-------SQL命令查询-------主要命脉
        |
        SQL 关系型数据库 MySQL
        MySQl数据库第八课-------SQL命令查询-------主要命脉 1
        MySQl数据库第八课-------SQL命令查询-------主要命脉
        115 0
        |
        SQL 存储 开发框架
        MySQl数据库第六课-------SQl命令的延续------快来看看
        MySQl数据库第六课-------SQl命令的延续------快来看看
        |
        SQL 存储 NoSQL
        MySQl数据库第五课 --------在SQl的简单命令--------学习学习
        MySQl数据库第五课 --------在SQl的简单命令--------学习学习