MySQL — 数据查询语言

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

语法:

select 查询列表(字段、常量、函数、表达式) from 表名;

字段别名:

select 字段1 as '字段1别名', 字段2 as '字段2别名', ... from 表名;

注意:别名可用单或双引号引起来,当别名是一个单词时可省略引号,当别名是多个单词组合且含空格或特殊符号时不能省略,as 可省略。

语法:

select 字段列表 from 表名 [where 条件列表];

条件分类:

语法:

select 字段列表 from 表名 [where 条件列表] group by 分组字段列表 [having 分组后条件列表];

where 与 having 区别:

注意:分组之后,查询的字段一般为聚合函数与分组字段。

语法:

select 字段列表 from 表名 [order by 字段名1 排序方式, 字段名2 排序方式, ...];

排序方式:升序:asc(默认值,可以不写)、降序:desc。

注意:如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段排序。

语法:

select 字段列表 from 表名 [limit 起始索引, 查询记录数];

注意:起始索引从0开始, 起始索引 = (查询页码 - 1) * 每页显示记录数,若查询第一页,起始索引可省略,简写为 limit 查询记录数

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多对一)、多对多、一对一

  • 一对多
    案例:部门与员工的关系。
    关系:一个部门对应多个员工,一个员工对应一个部门。
    实现:在多的一方建立外键,指向一的一方的主键。
  • 多对多
    案例:学生与课程的关系。
    关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择。
    实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键。
  • 一对一
    案例:用户与用户详情的关系。
    关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率。
    实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的。

多表查询时需要消除无效的笛卡尔积。笛卡尔积是指在数学中,两个集合:A集合与B集合的所有组合情况。

6.1、连接查询

查询两表交集部分的数据。

隐式内连接:

select 字段列表 from 表1, 表2 [where 条件列表...];

显示内连接:

select 字段列表 from 表1 [inner] join 表2 on 连接条件 ...;

左外连接:查询左表(表1)所有数据,以及两表交集部分的数据。

select 字段列表 from 表1 left [outer] join 表2 on 连接条件 ...;

右外连接:查询右表(表2)所有数据,以及两表交集部分的数据。

select 字段列表 from 表1 right [outer] join 表2 on 连接条件 ...;

当前表与自身的连接查询,自连接必须使用别名。自连接可以是内连接,也可以是外连接。

select 字段列表 from 表1 别名1 [inner|left|right] join 表1 别名2 on 连接条件 ...;

将多张表查询的结果合并成一个新的结果集,同时多张表的查询列数及数据类型需保持一致。
union all 直接将全部数据合并在一起,union 会对合并之后的数据去重。

select 字段列表 from 表1 ...

union [all]
select 字段列表 from 表2 ...;

6.2、子查询

SQL 语句中嵌套 select 语句,称为嵌套查询,又称子查询。子查询外部的语句可以是 insert / delete / update / select 的任意一个。

根据子查询结果分为:

根据子查询位置分为:select 之后、from 之后、where 之后。

select 之后:

select (select B.字段 from 表2 B where B.字段 = A.字段) from 表1 A ...;

from 之后:

select A.* from (select * from 表名 where 条件列表 ...) A;

where 之后:

select A.* from 表1 A where A.字段 in (select B.字段 from 表2 B);
5  select 字段列表
1    from 表名列表
2   where 条件列表
3   group by 分组字段列表
4  having 分组后条件列表
6   order by 排序字段列表
7   limit 分页参数

Original: https://www.cnblogs.com/bybeiya/p/16051450.html
Author: 北涯
Title: MySQL — 数据查询语言

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/684521/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球