当前位置:   article > 正文

MySQL多表查询大全(超精确)

mysql多表查询

目录

1、等值查询

2、内连接

3、外连接

3.1、左外连接

 3.2、右外连接

 3.3、完全外连接

4、交叉连接

5、自连接

6、联合查询


如果我们要查询的数据分布在不同的表时,那么需要连接多张表进行多表查询。

--而这些表当中,必须存在主外键关系(直接关联)

--如果不存在直接关系,则必定存在间接关系,否则业务上是没有意义的


1、等值查询

  1. select 字段集合 from1,表2,...,表n
  2. where 条件 (连接条件,一般使用主外键)

#注意:

条件一般是主键和外键的关联(可能包含筛选数据的条件);

一般给个表取别名,提高阅读性、性能以及解决字段冲突

(多次忘记):多(3个或以上)表关联查询时,关联条件用AND连接

  1. create table 教师表
  2. (
  3. 编号 int auto_increment primary key not null ,
  4. 姓名 char(30) ,
  5. 性别 char(2) check(性别='男' or 性别='女') default '男',
  6. 专业 char(30)
  7. )
  8. create table 学生表
  9. (
  10. 学号 int auto_increment primary key not null ,
  11. 姓名 char(30) ,
  12. 性别 char(2) check(性别='男' or 性别='女') default '男',
  13. 身高 float ,
  14. 学分 float ,
  15. 教师编号 int foreign key references 教师表(编号)
  16. )
  17. insert into 教师表 values ('张三','男','计算机')
  18. insert into 教师表 values ('李四','男','日语')
  19. insert into 教师表 values ('王五','女','英语')
  20. insert into 学生表 values ('学生一','男',1.5,50,1)
  21. insert into 学生表 values ('学生二','女',2.5,60,1)
  22. insert into 学生表 values ('学生三','男',3.5,70,2)
  23. insert into 学生表 values ('学生四','女',4.5,80,2)
  24. select * from 教师表
  25. select * from 学生表

2、内连接

  1. -- 功能同等值连接
  2. -- 好处:连接条件与筛选条件分离,简洁明了
  3. select 字段集合 from1 [inner] join2 [inner join3]
  4. on 条件(主外键|相同数据类型)
  5. where 条件

3、外连接

3.1、左外连接

以第一张表为基础向第二张表匹配,匹配成功则正常显示,匹配不成功,则第二张表以NULL值显示

select 字段集合 from1 left [outer] join 表2 on 条件

 3.2、右外连接

以第二张表为基础向第一张表匹配,匹配成功则正常显示,匹配不成功,则第一张表以NULL值显示

select 字段集合 from1 right [outer] join 表2 on 条件

 3.3、完全外连接

左、右的数据都要显示,如果能连接,则正常显示;如果不能连接,则以null值显示

  1. # select 字段集合 from1 full [outer] join 表2 on 条件
  2. # MySQL不支持,可以使用UNION实现
  3. 联合查询:实现完全外连接
  4. SELECT * from1 LEFT JOIN 表2 on 条件
  5. UNION
  6. SELECT * from1 RIGHT JOIN 表2 on 条件;

#注意:一般表与表之间使用主外键关联数据表,确保数据的一致性

4、交叉连接

  1. -- 语法一
  2. select 字段集合 from1 [inner] join2 #sql server 使用关键字 cross
  3. -- 语法二
  4. select 字段集合 from1,表2

5、自连接

  1. -- 语法一
  2. select * from1 as 别名 join 表1 as 别名 on 条件
  3. -- 语法二
  4. select * from1 as 别名, 表1 as 别名 where 条件

6、联合查询

把多个查询的结果合并在一起

  1. SELECT f1,f2 FROM T_1
  2. UNION [ALL]
  3. SELECT f1,f2 FROM T_2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/557008
推荐阅读
相关标签
  

闽ICP备14008679号