使用联结能够实现用一条SELECT语句检索出存储在多个表中的数据。联结是一种机制,用来在一条SELECT语句中关联表,不是物理实体,其在实际的数据库表中并不存在,DBMS会根据需要建立联结,且会在查询期间一直存在。

联结的本质是第一个表中符合条件的每一行与第二个表中符合条件的每一行进行配对,假如没有WHERE字句或联结条件,则第一个表中的每一行将与第二个表中的每一行进行配对,总共会返回的行数是 主表的行数*附表的行数(即两个表的笛卡尔积)。如果第一个表和第二个表中包含的行数非常多,那么就有必要在WHERE子句中假如筛选条件,这样会大大减少不必要的配对。

演示用的两个表product vendor

   

自然联结 NATURAL JOIN

自然联结其实和内部联结一样,只是不会出现相同的重复列。在以前的版本中,有NATURAL JOIN来实现自然联结,也就是去除重复行,在最新的版本的MySQL中,不支持NATURAL JOIN,把这项工作交给了用户。

自连接 就是自己联结自己的操作

自连接和子查询可互相取代

内部联结(等值联结)INNER JOIN 基于两个表之间的相等测试

内部部联结又称等值联结,将两个表中存在联结关系的字段和符合联结关系的记录形成记录集的联结。用INNER JOIN指定表之间的内部连接关系,用ON子句指定联结条件。

INNER JOIN可以检索出符合条件(ON子句和WHERE子句)的两个表的交集

外联结之左外联结 LEFT JOIN

左外联结会检索出左表中的所有记录,并且如果右表中的记录符合条件会附加到左表的记录中。

外联结之右外联结 RIGHT JOIN

右外联结会检索出右表中的所有记录,并且如果左表中的记录符合条件会附加到右表的记录中。

交叉联结 CROSS JOIN

与内部联结效果相同

交叉联结返回左表中符合条件的每一行和右表中符合条件的每一行的配对。

如果没有WHERE子句,返回两个表的笛卡尔积

 注意:MySQL中没有全联结(FULL JOIN)

MySQL中的联结表的更多相关文章

  1. mysql中把一个表的数据批量导入另一个表中

    mysql中把一个表的数据批量导入另一个表中   不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...

  2. mysql中的回表查询与索引覆盖

    了解一下MySQL中的回表查询与索引覆盖. 回表查询 要说回表查询,先要从InnoDB的索引实现说起.InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Sec ...

  3. mysql中如何删除表上的索引?删除索引?

    需求描述: 今天在做SQL的优化的时候,想要把mysql中某个表上的索引删除掉,突然忘记语法了,找到帮助,在此记录下 操作过程: 1.查看表上的索引 show index from ti_o_sms; ...

  4. 用命令从mysql中导出/导入表结构及数据

    在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看:mysqldump最常用的:mysqldump -uroot -pmysql databasefoo t ...

  5. mysql中delete的表别名使用方法

    在 mapper.xml 中的 dynamicWhere 动态查询中使用了表别名,Delete 语句引用了动态查询,如下: <delete id="delete" param ...

  6. 你了解MySQL中的多表联合查询吗?

    前言: 多表联合查询,其实就是我们MySQL中的join语句,经常会看到有人说join非常影响性能,不建议使用,你知道这是为什么呢?我们究竟可不可以用呢? 测试数据: CREATE TABLE `t2 ...

  7. MySQL中的联表查询与子查询

    0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...

  8. 数据库MySQL中关于“多表关联更新”的那些事

    在常见的sql中,我们经常在查询中进行多表关联查询,用的比较熟练.今天在开发中遇到一个实际业务场景是多表关联更新,一时不知所措.本着多学习的态度,没有直接写java代码去实现,终于把多表关联更新的sq ...

  9. 用命令查看Mysql中数据库、表的空间大小

    要想知道每个数据库的大小的话,步骤如下:1.进入information_schema 数据库(存放了其他的数据库的信息)use information_schema;2.查询所有数据的大小:selec ...

随机推荐

  1. 关于WPS查看PDF文件操作问题

    自己一直使用WPS打开PDF类的文档,但是使用过程中,存在下面的几个问题: pdf 如何查看当前页码pdf 如何根据目录跳转到指定页WPS 查看pdf 如何跳转到指定页 后来百度后,可以考虑将PDF转 ...

  2. SO\PR\MO\排产回写的数据如下

    QTYOPEN(WMENG).EDATU(promised_mat_availdate).... insert into OUT_ORDER_RES ' ; --PR 净需求 ' ; ---加上PR回 ...

  3. smtp扫描

    nc扫描 nc -nv ip号 25 nmap扫描

  4. tomcat 启动报错org.hibernate.cfg.annotations.SimpleValueBinder.setType

    url: https://blog.csdn.net/zhx_0323/article/details/78844323 # A fatal error has been detected by th ...

  5. Tcp/Ip 三次握手与四次挥手

    1. TCP/IP模型 我们一般知道OSI的网络参考模型是分为7层:“应表会传网数物”——应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.而实际的Linux网络层协议是参照了OSI标准,但 ...

  6. js 字符与ascii码转换

    参考 http://www.jb51.net/article/43534.htm ' '.charCodeAt();  //字符转ascii String.fromCharCode(10);  //a ...

  7. 【python】安装pymongo时出错

    在python2.7的环境下,使用pip install pymongo安装模块报以下错误: Could not install packages due to an EnvironmentError ...

  8. linux防火墙使用以及配置

    Centos 7 firewall : 1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态 ...

  9. HTTP协议原理(长连接,短连接/ get,post区别等等)

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  10. 33. Search in Rotated Sorted Array (Array;Divide-and-Conquer)

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...