MySQL中的联结表
使用联结能够实现用一条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中的联结表的更多相关文章
- mysql中把一个表的数据批量导入另一个表中
mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...
- mysql中的回表查询与索引覆盖
了解一下MySQL中的回表查询与索引覆盖. 回表查询 要说回表查询,先要从InnoDB的索引实现说起.InnoDB有两大类索引,一类是聚集索引(Clustered Index),一类是普通索引(Sec ...
- mysql中如何删除表上的索引?删除索引?
需求描述: 今天在做SQL的优化的时候,想要把mysql中某个表上的索引删除掉,突然忘记语法了,找到帮助,在此记录下 操作过程: 1.查看表上的索引 show index from ti_o_sms; ...
- 用命令从mysql中导出/导入表结构及数据
在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看:mysqldump最常用的:mysqldump -uroot -pmysql databasefoo t ...
- mysql中delete的表别名使用方法
在 mapper.xml 中的 dynamicWhere 动态查询中使用了表别名,Delete 语句引用了动态查询,如下: <delete id="delete" param ...
- 你了解MySQL中的多表联合查询吗?
前言: 多表联合查询,其实就是我们MySQL中的join语句,经常会看到有人说join非常影响性能,不建议使用,你知道这是为什么呢?我们究竟可不可以用呢? 测试数据: CREATE TABLE `t2 ...
- MySQL中的联表查询与子查询
0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...
- 数据库MySQL中关于“多表关联更新”的那些事
在常见的sql中,我们经常在查询中进行多表关联查询,用的比较熟练.今天在开发中遇到一个实际业务场景是多表关联更新,一时不知所措.本着多学习的态度,没有直接写java代码去实现,终于把多表关联更新的sq ...
- 用命令查看Mysql中数据库、表的空间大小
要想知道每个数据库的大小的话,步骤如下:1.进入information_schema 数据库(存放了其他的数据库的信息)use information_schema;2.查询所有数据的大小:selec ...
随机推荐
- 在Laravel外独立使用laravel-mongodb
laravel框架外部使用laravel-mongodb 插件 下载安装方式主要根据github上的参考: https://github.com/jenssegers/laravel-mongodb# ...
- Java:类加载机制及反射
一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允 ...
- 七 shelve模块
shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型 import shelve f=shelve.o ...
- 全国高校绿色计算大赛 预赛第一阶段(C++)第1关:将字符串反转
挑战任务 将输入的字符串str进行反转. 编程要求 补全右侧vector<char> inversion(string str)函数实现字符串的反转并返回反转之后的字符串,其中函数参数st ...
- vm 克隆一台新机器启动网卡报错:device eth0 does not seem to be present, delaying initialization
解决方案: 1. vi /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth0的配置文件里保存了以前的MAC地址,就把这一行删除掉在重启网卡 2. ...
- python爬虫相关基础概念
什么是爬虫 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 哪些语言可以实现爬虫 1.php:可以实现爬虫.但是php在实现爬虫中支持多线程和多进程方面做得不好. 2.java ...
- 【模型】Toon Dragon
下载地址:点击下载
- 100-days: Three
Title: Singapore(新加坡) set to raise retirement ages as seniors stay healthier be set to do sth. 准备做某 ...
- 如何禁止chrome自动跳转https
请在chrome的地址栏输入: chrome://net-internals/#hsts 在打开的页面中, Delete domain 栏的输入框中输入:xx.xx.com(注意这里是二级域名),然后 ...
- Delphi异步编程:匿名线程与匿名方法
异步编程,是项目中非常有用的而且常用的一种方法,大多以线程实现. 而Delphi传统方法使用线程略为烦琐,好在其后续版本中,提供一些方法,简化一些操作. 几个概念: 匿名线程:TAnonymousTh ...