目录

1、等值查询

2、内连接

3、外连接

3.1、左外连接

3.2、右外连接

3.3、完全外连接

4、交叉连接

5、自连接

6、联合查询


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

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

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


1、等值查询

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

#注意:

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

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

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

create table 教师表
(编号 int auto_increment primary key not null ,姓名 char(30) ,性别 char(2) check(性别='男' or 性别='女') default '男',专业 char(30)
)create table 学生表
(学号 int auto_increment primary key not null ,姓名 char(30) ,性别 char(2) check(性别='男' or 性别='女') default '男',身高 float ,学分 float ,教师编号 int foreign key references 教师表(编号)
)insert into 教师表 values ('张三','男','计算机')
insert into 教师表 values ('李四','男','日语')
insert into 教师表 values ('王五','女','英语')insert into 学生表 values ('学生一','男',1.5,50,1)
insert into 学生表 values ('学生二','女',2.5,60,1)
insert into 学生表 values ('学生三','男',3.5,70,2)
insert into 学生表 values ('学生四','女',4.5,80,2)select * from 教师表
select * from 学生表

2、内连接

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

3、外连接

3.1、左外连接

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

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

3.2、右外连接

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

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

3.3、完全外连接

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

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

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

4、交叉连接

-- 语法一
select 字段集合 from 表1 [inner] join 表2 #sql server 使用关键字 cross-- 语法二
select 字段集合 from 表1,表2

5、自连接

-- 语法一
select * from 表1 as 别名 join 表1 as 别名 on 条件-- 语法二
select * from 表1 as 别名, 表1 as 别名 where 条件

6、联合查询

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

SELECT f1,f2 FROM T_1
UNION [ALL]
SELECT f1,f2 FROM T_2

MySQL多表查询大全(超精确)相关推荐

  1. java mysql 多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  2. mysql多表查询详解_MySQL多表查询详解上

    时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...

  3. mysql教程多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  4. 零基础带你学习MySQL—多表查询笛卡尔集(二十)

    零基础带你学习MySQL-多表查询笛卡尔集(二十) 一.多表查询 多表查询:就是指基于两个和两个以上的表的查询,在实际应用中,单个表并不能满足你的需求,我们经常需要在很多个表之间查询数据 二.笛卡尔集 ...

  5. mysql 大表查询慢_mysql大表查询慢怎么优化?

    mysql大表查询慢的优化方法:1.合理建立索引,通常查询利用到索引比不用索引更快:2.对关键字段建立水平分区,比如时间字段,若查询条件往往通过时间范围来进行查询,能提升不少性能:3.建立粗粒度数据表 ...

  6. mysql锁表查询和解锁操作

    mysql锁表查询和解锁操作 1.在做数据库操作时,有时会因为自己的粗心或者程序设计上的缺陷导致锁表,在mysql中查看锁表和解锁的步骤如下: //1.查看当前数据库锁表的情况SELECT * FRO ...

  7. Mysql 多表查询详解

    Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

  8. Mysql多表查询效率的研究(一)

    Mysql多表查询效率的研究(一) 本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表.内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响. 第一部分简略地概括了 ...

  9. cmd操作MySQL 多表查询(日记 day 4)

    cmd操作MySQL 多表查询 今天记录一下学习多表查询的一些操作,也算是练习记录了. 通过练习排错,来避免知识的盲区和解决心中的一些疑惑 其中的数据.题目是参照b站大刘老师的,我觉得讲的很精炼 有兴 ...

最新文章

  1. openssl生成证书linux,linux中openssl生成证书和自签证书linux操作系统 -电脑资料
  2. JSTracker:前端异常数据采集
  3. Git 常用命令整理(持续更新)
  4. 【BZOJ2120】数颜色,带修莫队
  5. 【英语学习】【English L06】U06 Banking L5 I'd like to change Chinese *yuan* into pounds
  6. 如何安装TrueNAS
  7. 数据结构之c++感悟
  8. ASP.NET MVC Model绑定(五)
  9. 虚拟环境安装python3
  10. L1-080 乘法口诀数列 (20 分)-PAT 团体程序设计天梯赛 GPLT
  11. 深入浅出设计模式(C#/Java版)
  12. 基于Matlab矩形孔径的菲涅耳衍射
  13. 前端开发过程中经常遇到的问题以及对应解决方法 (持续更新)
  14. 百度,阿里,搜狐公司社招面试题及总结
  15. hdu4489-The-King-s-Ups-and-Downs
  16. 基于Uniapp实现的在线投票App问卷调查
  17. matlab潮汐观测数据,潮汐观测方法有哪些?
  18. Excel中的$是什么意思
  19. 电子商务计算机考研学校排名,电子商务考研院校排名
  20. java swing+mysql简单零件销售管理系统、订货决策系统

热门文章

  1. STL--String类的常用功能复写
  2. 聚观早报 | 茅台市值超过腾讯位列第一;三星正研发智能戒指
  3. 基于51单片机的废气检测I2Cproteus仿真
  4. 链接被微信拦截(被封锁、被屏蔽、被和谐)最新方法
  5. 读书笔记: C# 7.0 in a nutshell (第 三 章 Creating Types in C#)
  6. C语言 —— 嵌套语句的使用
  7. 【论文阅读】Multi-Modal Sarcasm Detection 图文反讽识别
  8. 忍者必须死3突然服务器维修,忍者必须死3开服补偿内容介绍
  9. JCL,JES运作流程
  10. 由置灰引出的css滤镜filter是什么东西?