多表查询

我们在查询表格的过程中,往往要将多个表组合查询使用,并且要实现多个表之间查询数据,例如,查询成绩,再将成绩和学生表连接起来

这个时候就要用到我们的多表查询了

交叉连接

不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积,有where子句,往往会先生成两个表行数乘积的数据表,然后才根据where条件从中选择

交叉连接的语法格式

select ...,

...,

from ,

where ;

这里有涉及到一个笛卡尔积的概念,也就是多个表中所有数据都相互匹配一次

两个集合X和Y,又称直积,即将所有可以匹配的行数据都匹配上了一次

内连接

交叉连接产生的笛卡尔积的产生的额外的判断和消耗,如果要查询比较大的数据的话查,询的效率相当低下,所以需求一个更高效的一个查询范式,内连接比交叉连接更省空间,并且效率更高

使用比较运算符,根据表中匹配的属性,列出与连接条件相匹配的数据,

内连接关键字: inner join on

select [表名1.属性名1,...][表名n.属性名n,...]

from [数据库名1.表名1]

inner join [数据库名2.表名2]

on 条件表达式;

外连接

外连接就是把内连接再进行筛选再添加进来,会保留一部分的数据又分为左外连接、右外连接和全外连接

1.左外连接(左连接)

是以左表为基准,显示左表查询字段所有记录,右表只显示和左表匹配的记录,没有匹配的用NULL代替。

关键字: left join

select [表名1.属性名1,...,表名n.属性名n.]

from

left join

on 条件表达式;

2.右外连接(右连接)

是以右表为基准,显示右表查询字段所有记录,左表只显示和右表匹配的记录,没有匹配的用NULL代替。

关键字: right join

select

from

right join

on 条件表达式; 等于

select 表名1.属性名1,……, 表名n.属性名n

from 表名2

left join 表名1

on 条件表达式;

3.全外连接(全连接)

全连接的左右表不做限制,显示全部数据,没有匹配的数据用NULL代替。

关键字: full join

注意: mysql 不支持全连接

使用左连接和右连接加上 union 合并实现全连接

取别名

在查询时可以给属性取别名,使得读取出的数据更直观。

语句:as

select as from as ;

其中语句as可以省略

合并的使用

1.合并: union

MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT语句会删除重复的数据。

select

from

union select

from ;

2.合并查询结果

关键字

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)

ALL: 可选,包含重复数据。

使用形式如下:

select

FROM

union (all) select

from

用于合并多个select语句的结果,要求第一个sql语句返回的列与第二个sql语句返回的列相同

3.通过查询的结果集向表中插入数据

insert into select union all

利用左连接和右链接实现全连接

select 表1.属性1,表2.属性2,..., 表n.属性n

from 表1 right join 表2

union

select 表1.属性1,表2.属性2... 表n.属性n

from left join 表2

这里有用到union连接两个查询语句来实现全连接。

多表联查

可以连接查询多个表中的数据(一般最好不要超过4个表)

一般格式:

select

from

inner join on

inner join on

left join on

right join ......

多表联查的两种格式的区别及表取别名的使用:

##将员工和部门已经薪资都查询出来

select e.e_name as 姓名,enter_date as 入职日期,d_name as 部门,

s_number as 薪资,m_name as 职位

from employee_tb as e

inner join department_tb as d on e.department_id=d.d_id

inner join salary_tb as s on s.employee_id=e.e_id

left join management_tb as m on m.employee_id=e.e_id;

总结

交叉连接

交叉连接连接的效率过低,不推荐使用(会产生n1*n2)

内连接

找到两张表相符合条件的数据,进行筛选连接

外连接

外连接会保留一张表的数据,将另外一张表的数据进行条件筛选连接,没有符合连接条件将另外一张表用null填充

多表连接

连续使用多个 inner join 进行连接

java mysql 多表查询_MySQL必备知识多表查询相关推荐

  1. mysql 左关联查询_MySQL 左关联右表条件查询

    MySQL的新知识: 之前数据库没学好,不知道LEFT JOIN ON后边可以加条件 首先业务是有个A表,然后会依据A表信息来在B表生成一条对应数据, 操作时候展示A表数据,如果B表已经有对应数据,显 ...

  2. mysql 回表查询优化_MySQL中的回表查询与索引覆盖:一次百万级别分页查询使用Limit 从90秒到0.6毫秒的优化...

    这里写目录标题 事故现场 解决方案 提到的"回表查询" InnoDB的索引 什么是回表查询 怎么优化回表查询 事故现场 数据库使用的MySQL,有一个日志表,需要进行分页查询,于是 ...

  3. mysql同张表关联多次查询_MySQL多次单表查询和多表联合查询

    Tip:不建议执行三张表以上的多表联合查询 对数据量不大的应用来说,多表联合查询开发高效,但是多表联合查询在表数据量大,并且没有索引的时候,如果进行笛卡儿积,那数据量会非常大,sql执行效率会非常低 ...

  4. mysql 多个select查询_MySQL的select多表查询

    select 语句: select 语句一般用法为: select 字段名 from tb_name where 条件 ; select 查询语句类型一般分为三种: 单表查询,多表查询,子查询 最简单 ...

  5. mysql 分表索引_mysql中,分表查询和索引查询哪个更快?

    谢谢邀请! 查询快慢主决的因素有很多,存储碎片.数据量大属于I/O类问题:表结构设计.查询语句属于技术是否熟练(经验)问题.对于你的分表快还是索引快的这个问题本身就是有问题的: 在建立数据表的时候,索 ...

  6. mysql罏在十三_MySQL高级知识(十三)——表锁

    前言:锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算机资源(如CPU.RAM.I/O等)的争用外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是 ...

  7. mysql数据库中插入表信息_mysql数据库中插入表

    通过binlog恢复mysql数据库 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志 ...

  8. mysql的相关技术_mysql相关知识

    索引相关 关于MySQL的索引,曾经进行过一次总结,文章链接在这里 Mysql索引原理及其优化. 1. 什么是索引? 索引是一种数据结构,可以帮助我们快速的进行数据的查找. 2. 索引是个什么样的数据 ...

  9. mysql 慢查询_mysql如何捕捉慢日志查询

    慢日志查询日志 查询超过变量 long_query_time指定时间值的为慢查询,但是查询获取锁(包括锁等待)的时间不计入查询时间内,mysql 记录慢查询日志是在查询执行完毕且已经完全释放锁之后才记 ...

  10. mysql分区和分表比较_MySQL分区和分表的区别与联系

    一.分区和分表简介 分表 就是将一张大表分成N个小表. 分区 将一张大表的数据分成N个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上. 二.分区和分表的区别 1. 实现方式 1.1 分表 My ...

最新文章

  1. asp.net 发布程序到iis后无法连接到oralce数据库问题
  2. 安装Windows Storage Server 2008 R2
  3. mybatis中LIKE模糊查询的几种写法以及注意点(亲测第三种CONCAT()函数的)
  4. 微信小程序开发工具中快捷键
  5. [html] DOM节点的根节点是不是body?
  6. Ubuntu查看磁盘空间命令(转载)
  7. iPhone X 刘海打理指北
  8. 今天的但我发现了幸福的超级玛丽,白萝卜的种子
  9. WebLogic Clustering Overview Slides
  10. Java求1到任意一个数的阶乘和
  11. 坚持写博客,果然有人找吾进行技术合作
  12. 2021华为杯数学建模B题完整思路+部分代码
  13. 干货合辑!Ms08067安全实验室2020年度盘点
  14. 【矩阵论】线性空间与线性变换(3)(4)
  15. 英伟达Flex-unity插件
  16. 仿高德地图首页效果,简单代码实现
  17. 原创力文档怎么免费下载_哪里可以下载免费的PDF文档转换器?
  18. 教程:如何在OCaml中跟踪功能
  19. Linux 文件系统结构
  20. 一周信创舆情观察(10.11~10.17)

热门文章

  1. Atitit 信息化数据采集与分析解析 技术 处理技术 爬虫与http rest json xml h5解析 db数据库 mail协议与处理 数据压缩与解压 数据处理 文本处理
  2. Atitit spring5 集成 mybatis 注解班
  3. Atitit. camel分词器 分词引擎 camel拆分 的实现设计
  4. paip.myeclipse7 java webservice 最佳实践o228
  5. 5款手机通讯录同步工具
  6. 不一样的摊余成本法债基—终篇
  7. 精细运营,这只“蚂蚁”开辟了一条全新的财富之路
  8. (转)“在证券行业,技术不重要,不要过分强调!”
  9. Julia:V0.3.0 正式发布,好消息!
  10. mysql二进制文件下载教程_MySQL二进制版本快速部署