美文网首页MySQL数据库
MYSQL——DQL查询语言

MYSQL——DQL查询语言

作者: So_ProbuING | 来源:发表于2019-06-24 10:14 被阅读0次

    DQL查询语句

    语法

    SELECT 要查询的字段列表 from 表名的列表 Where 条件列表 group by 分组字段 having 分组之后的条件限定 order排序 limit 分页限定
    

    基础查询

    • 查询单个字段
    SELECT address from student;
    
    • 查询多个字段
    SELECT name,age from student;
    

    去掉重复

    SELECT DISTINCT address from student;
    

    注意
    去除重复的需要结果集完全相同才能进行去除重复。源数据不同也可以,但要确定查到的结果集相同才可。

    计算列

    -- 计算列的值
    SELECT name,math+english FROM student;
    

    如果有Null参与的运算结果都为Null

    SELECT name,math,english,math+IFNULL(english,0) FROM student;
    

    别名操作

    as 关键字 将要查询的字段起别名

    -- 起别名
    SELECT name,math,english,math+IFNULL(english,0) 总分 FROM student;
    

    条件查询

    • where子句后跟条件

    运算符

    • 、 <、 <=、 >=、 =、 <>

    • BETWEEN...AND 在一个范围之内

    • IN(集合) 集合表示多个值,使用逗号分隔

    • LIKE '张%' 模糊查询

      • 占位符
        • _:单个占位符
        • %:多个任意字符
    • IS NULL 查询某一列为Null的值,不能写=null

    • and 或 &&

    • or 或者 ||

    • not 或 !

    SELECT  * FROM student where age >= 20;
    

    排序查询

    语法

    • order by 子句
      • order by 排序字段1 排序方式1,排序字段2 排序方式2
    • 排序方式
      • asc 升序 默认的排序方式
      • desc 降序 降序排序
    # 升序排序 asc
    SELECT * FROM extb1 ORDER BY money ASC;
    # 降序排序 desc
    SELECT * FROM extb1 ORDER BY money DESC;
    
    • 多个排序
      如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件
    # 多个排序
    
    SELECT * FROM extb1 ORDER BY age ASC , money DESC;
    

    聚合函数

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

    Mysql中的聚合函数

    1. count 计算个数
    SELECT COUNT(NAME) FROM extb1;
    
    1. max 计算最大值
    # MAX
    SELECT MAX(money) from extb1;
    
    1. min 计算最小值
    # MIN
    SELECT MIN(age) from extb1;
    
    1. sum 计算和
    # SUN
    SELECT SUM(age) FROM extb1;
    
    1. avg 计算平均值
    # AVG
    SELECT AVG(money) FROM extb1;
    

    注意
    聚合函数的计算排除null值,null值不会参与聚合函数的计算
    解决方案:
    1.在计算的时候选择不包含非空的列进行计算

    1. 主键
    2. COUNT(*)
      2.使用IFNULL函数
    SELECT COUNT(IFNULL(name,0))FROM extb1;
    

    分组查询

    分组一般用来进行统计具有相同特征的一类数据

    语法

    1. group by 分组字段
    # 分组查询
    SELECT sex,AVG(age) FROM extb1 GROUP BY extb1.sex;
    # 分组查询 聚合函数组合使用
    SELECT sex,AVG(age),COUNT(*) FROM extb1 GROUP BY extb1.sex;
    
    SELECT sex,AVG(age),COUNT(*) FROM extb1 WHERE age >18 GROUP BY extb1.sex HAVING COUNT(*)>3;
    # 使用别名
    
    

    注意:

    1. 分组之后查询的字段有:1.分组字段 2 聚合函数,因为分组是统计的同一类的数据,所以在这个条件下查询的是一组数据
    2. 在where和having的区别
      都是在分组中进行条件判断
    3. where在分组之前进行限定,如果不满足条件,则不参与分组 having在分组之后进行限定,如果不满足结果,则不会被查询
    4. where 后不可以跟聚合函数,having可以进行聚合函数的判断

    分页查询

    语法

    LIMIT 开始的索引,要查询的数量

    一般公式

    开始的索引 = (当前的页面-1) * 每页显示的条数

    注意

    分页LIMIT是一个MYSQL"方言"

    相关文章

      网友评论

        本文标题:MYSQL——DQL查询语言

        本文链接:https://www.haomeiwen.com/subject/owolqctx.html