Mysql中Left Join 与Right Join 与 Inner Join 与 Full Join的区别

看看Left Join 与Right Join 与 Inner Join 与 Full Join对表进行操作后得到的结果。

  • 在数据库中新建两张表,并插入要测试的数据。

新建表:

[sql] view plain copy

  1. USE [Test]
  2. GO
  3. /****** 对象:  Table [dbo].[EMP]    脚本日期: 06/22/2012 15:37:28 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE TABLE [dbo].[EMP](
  9. [ENAME] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
  10. [CITY] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
  11. ) ON [PRIMARY]

[sql] view plain copy

  1. USE [Test]
  2. GO
  3. /****** 对象:  Table [dbo].[SAL]    脚本日期: 06/22/2012 15:38:04 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. CREATE TABLE [dbo].[SAL](
  9. [ENAME] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
  10. [SALARY] [money] NULL
  11. ) ON [PRIMARY]

插入数据得到的表:

EMP表:

SAL表:

    • 左连接

      [sql] view plain copy

      1. select  * from EMP Left join SAL on EMP.ENAME = SAL.ENAME;

      左连接,表EMP是主表,因此查询结果是显示EMP(主表)的全部信息和SAL(附表)与EMP相关的信息。

    • 右连接

      [sql] view plain copy

      1. Select * from EMP Right join SAL on EMP.ENAME = SAL.ENAME;

      右连接,表SAL是主表,因此查询结果显示SALT(主表)的全部信息和EMP(附表)与SAL想关的信息。

    • 内连接

      [sql] view plain copy

      1. SELECT * FROM EMP inner join SAL on EMP.ENAME = SAL.ENAME;

      内连接,显示的是连个表相关的信息。

    • 全连接

      [sql] view plain copy

      1. SELECT * FROM EMP full join SAL on EMP.ENAME = SAL.ENAME;

      全连接,显示两个表所有的信息。

时间: 2024-11-14 12:20:12

Mysql中Left Join 与Right Join 与 Inner Join 与 Full Join的区别的相关文章

面试|简单描述MySQL中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面)

索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针. 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速度. 普通索引允许被索引的数据列包含重复的值.如果能确定某个数据列将只包含彼 此各不相同的值,在为这个数据列创建索引的时候就应该用关键字 UNIQUE 把它 定义为一个唯一索引. 也就是说,唯一索引可以保证数据记录的唯一性. 主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于

SQL Server 与MySQL中排序规则与字符集相关知识的一点总结

原文:SQL Server 与MySQL中排序规则与字符集相关知识的一点总结 字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码排序规则则是在特定字符集的基础上特定的字符排序方式,排序规则是基于字符集的,是对字符集在排序方式维度上的一个划分.排序规则是依赖于字符集的,一种字符集可以有多种排序规则,但是一种排序规则只能基于某一种字符集的比如中文字符集,也即汉字,可以按照“拼音排序”.“

MySQL中使用INNER JOIN来实现Intersect并集操作

MySQL中使用INNER JOIN来实现Intersect并集操作 一.业务背景 我们有张表设计如下: CREATE TABLE `user_defined_value` ( `RESOURCE_ID` varchar(20) DEFAULT NULL, `COLUMN_NAME` varchar(20) DEFAULT NULL, `VALUE` varchar(255) DEFAULT NULL, KEY `ID_IDX` (`RESOURCE_ID`) ) ENGINE=MyISAM D

MySql 中Join操作的用法

SQL标准中的Join的类型: 首先,设置表employees和department的数据为: 1.inner join - on操作类型 内连接inner join是基于连接谓词将两张表(如A和B)的列组合在一起的,产生新的结果表. 例子: SELECT * FROM employees a inner join department b ON a.department_id = b.department_id 查询结果为: 注意:inner join 可以简写为join,该查询得出的结果为两

MySql中join基础

在MySQL中,使用的最多就是join.理解他之后能对我们的业务代码有更深的概念.当然这里只是一个简单的入门,也只是个人理解,如有不正确的地方,也请见谅. 了解顺序 各种join的概念 对应关系 (Hive中)join的原理 一.各种join的概念 join的基本概念 join实际上就是数学中的求交集.当我们说集合A={1,2,3,4,5},集合B={2,3},两个集合的交集时,实际上是在求两个集合的共同元素,也就是集合A的元素=集合B的 元素的个数. 放到现实世界中,集合A和集合B就不再是一维

MYSQL中JOIN的用法

近期用phpcms v9做项目,初期没有问题,后期随着数据量的增大,phpcms v9后台出现的栏目更新不动的情况,初期我以为是程序的问题,进行了程序排查,没有发现任何问题,登录上centos服务器后free命令发现内存也没有满.瞬间感觉很蛋疼,不知如何处理,后来登录阿里云账号,发现更新栏目时,cpu使用率直接到达100%,xhell远程登录进入服务器后用top检测cpu使用率的情况,发现MySQL占用的cpu使用率的100%,直接登录进入MySQL数据库,输入show full process

mysql中left join中的on条件 和 where条件区别

需要知道sql中关键字的执行顺序. FROM-> ON->JOIN-> WHERE->GROUP BY-> HAVING->SELECT-> DISTINCT->ORDER BY->LIMIT on在join前边.join在where前边.知道这两点,那就好说了. 注意join中的on是对关联表起作用,不是对主表. 如果想过滤主表中的数据,要用where. 具体案例可以参照:http://xianglp.iteye.com/blog/868957

MySQL中left join on后面的条件和where后面的条件的区别

做项目的时候,遇到的大坑!所以在此记录一下. 大概的sql如下: select * from `goods` g LEFT JOIN `goods_rel` grl on g.id = grl.case_id LEFT JOIN `user` ur on grl.user_id = ur.id where g.id = 100 and ur.status=0; 这一段sql的意思大概就是:三张表关联,然后同时user表的status=0,这张表搜出来后,数据显示为空,需要注意g.id=100的这

SQL优化 查询语句中,用 inner join 作为过滤条件和用where作为过滤条件的区别

前段时间遇到一个存储过程,参数之一是一个字符串,实际作用是在存超过中是作为一个查询条件处理的 在存储过程中,把字符串拆分成一个临时表之后作key值,作为一个查询条件,逻辑实现上有两种处理方式 insert into #t select key from split_function('传递进来的字符串',',') 第一种是与物理表做inner join,类似如下 select * from tableA a inner join tableB b on a.id=b.id inner join

MySQL中如何查看“慢查询”,如何分析执行SQL的效率?

一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句. 2,long_query_time当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短. 3,slow_query_log_file记录日志的文件名. 4,log_queries_not_using_indexes这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快. 二