sql-DQL基础语句总结

一·基础查询

语法

SELECT * | {[DISTINCT] column | expression [alias],...}
FROM table;

select 查询列表 from 表名;

注意:

  1. SELECT:标识选择哪些列
  2. FROM:标识从哪个表中选择

特点

  • 查询列表可以是:表中的字段、常量值、表达式、函数。
  • 查询的结果是一个虚拟的表格。

二·条件查询

语法

SELECT * | {[DISTINCT] column | expression [alias],...}
FROM table
[WHERE condition(s)];

select
查询列表(3)
from
表名 (1)
where
筛选条件 (2);

注:此处的(1),(2),(3)为执行顺序

筛选条件分类:

  • 按条件表达式筛选
    • 简单条件运算符: ><=!= (<>)、>=<=
  • 按逻辑表达式筛选
    • 逻辑运算符: &&(and)、|| (or)、!(not)
      • &&(and):两个条件都为true,结果为true,反之为false
      • ||(or):只要有一个条件为true,结果为true,反之为false
      • !(not):如果连接的条件本身为false,结果为true,反之为false
  • 模糊查询
    • likebetween andinis null
      • like
        • 特点:一般和通配符搭配使用。
          • 通配符:
            • % 任意多个字符,包含0个字符
            • _ 任意单个字符
      • between and
        • 使用between and可以提高语句的简洁度
        • 包含临界值
        • 两个临界值不要调换顺序
      • in 判断某个字段的值是否属于in列表中的某一项
        • 使用in提高语句简洁度
        • in列表的值类型必须一致或兼容
      • is null
        • =或者<> 不能用于判断null值
        • is nullis not null 可以判断null值

三·排序查询

语法

select 查询列表 (3)
from  表名 (1)
[where 筛选条件] (2)
order by 排序列表 [asc | desc] (4)

特点:

  • asc代表的是升序,desc代表的是降序,如果不写,默认是升序。
  • order by 子句中可以支持单个字段、多个字段、表达式、函数、别名。
  • order by 子句一般是放在查询语句的最后面,limit子句除外。

四·常见函数

概念

  • 将一组逻辑语句封装在方法提中,对外暴露方法名。类似于python中的方法。
  • 好处:
    1. 隐藏了实现细节
    2. 提高代码的重用性
  • 调用:select 函数名(实参列表) [ from 表名];

特点:

  • 叫什么(函数名称)
  • 干什么(函数功能)

分类:

  • 单行函数
    • 如:concatifnulllength
    • 包含:字符函数、数学函数、日期函数、其他函数、流程控制函数-if函数、流程控制函数-case结构
  • 分组函数
    • 功能:做统计使用又称统计函数(聚合函数、组函数)。

五·分组函数

概念

  • 功能:用作统计使用,又称为聚合函数或统计函数或组函数。

分类:

  • sum 求和
  • avg 平均值
  • max 最大值
  • min 最小值
  • count 计算个数

特点:

  1. sumavg一般用于处理数值型,maxmincount可以处理任何类型
  2. 以上分组函数都忽略null值
  3. 可以和distinct搭配实现去重的运算
  4. 一般使用count(*)做统计函数
  5. 和分组函数一同查询的字段要求是group by后的字段

六·分组查询

概念

SELECT column, group_function(column)
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];

特点:

  • 分组查询中的筛选条件分为两类
    • 数据源:原始表
    • 位置:group by子句的前面
    • 关键字:where
  • 分组后筛选
    • 数据源:分组后的结果集
    • 位置:group by子句的后面
    • 关键字:having
  • 分组函数做条件肯定是放在having子句中
  • group by 子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开没有顺序要求),表达式或函数(用的较少)
  • 也可以添加排序(排序放在整个分组查询的最后)

七·链接查询

概念

  • 又称多表查询,当查询的字段来自多个表时,就会用到连接查询。

分类:

  • 按年代分类:
    • SQL92标准:仅仅支持内连接
    • SQL99标准(推荐):支持内连接+外连接(左外、右外)+交叉连接
  • 按功能分类:
    • 内连接:
      • 等值连接
      • 非等值连接
      • 自连接
    • 外连接:
      • 左外连接
      • 右外连接
      • 全外连接
    • 交叉连接

八·子查询

1、概念

  • 含义:出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询。

分类:

  • 按子查询出现的位置:

    • select后面
      • 仅仅支持标量子查询
    • wherehaving后面
      • 标量子查询 (单行)
      • 列子查询 (多行)
      • 行子查询
    • exists后面(相关子查询)
    • 表子查询
  • 按结果集的行列数不同:

    • 标量子查询(结果集只有一行一列)
    • 列子查询(结果集只有一列多行)
    • 行子查询(结果集有一行多列)
    • 表子查询(结果集一般为多行多列)

九·分页查询

概念

  • 应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求。

语法:

select 查询列表 (7)
from 表名 (1)
[
join type join 表2 (2)
on 连接条件。(3)
where 筛选条件 (4)
group by 分组字段 (5)
having 分组后的筛选 (6)
order by 排序的字段 (8)
]
limit [offset] ,size; (9)
  • 其中:
    • offset 要显示条目的起始索引(起始索引从0开始)
    • size 要显示的条目个数

十·union联合查询

概念

  • union联合(合并):将多条查询语句的结果合并成一个结果。

语法:

查询语句1
union
查询语句2
union
...

应用场景:

  • 要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时。

特点:

  1. 要求多条查询语句的查询列数是一致的。
  2. 要求多条查询语句的查询的每一列的类型和顺序最好一致。
  3. union关键字默认去重,如果使用union all可以包含重复项。

各位学完知识点后,可以去百度搜索力扣[https://leetcode.cn/search/?q=sql]进行MySQL的强化训练,也可以找私信森森要对应知识点的例题和练习,我会不定期的去更新相关知识点,觉得有用的给个关注叭

热门相关:重生嫡女谋天下   女王嫁到:老公,太凶了   我真不是学神   梁医生又在偷偷套路我   秦吏