SQL表连接图解

可以通过图看下

多表查询分为 内、外连接

外连接分为左连接(left join 或left outer join)、右连接(right join 或者 right outer join)、和完整外部连接 (full join 或者 full outer join)

左连接(left join 或 left outer join)的结果就是left join子句中的左表的所有行,而不仅仅是链接列所匹配的行,如果左表中的某行在右表中没有匹配,则在相关联的结果行中右表的所有选择列均为空值(NULL)

SQL语法 select * from table1 left join table2 on table1.条件列名 = table2.条件列名;

注释: 显示的就是table1中的所有列和能匹配的列

右连接(right join 或 right outer join )在这里不做多说这左连接很象但是是相反的,只说一下语法

select *from table1 right join table2 on table1. 条件列= table2.条件列

完全外部连接(full join 或 full outer join)

显示左右表中的所有行,当某一个表中没有匹配的行时,则另一个表的选择列表列包含空值(NULL)如果有则显示全部数据

SQL语法:

select *from table1 full join table2 on table1.条件列名= table2.条件列名

内连接:
概念:内连接就是用比较运算符比较要用连接列的值的连接

内连接(join 或者inner join )

SQL语法:

select *fron table1 join table2 on table1.条件列名 = table2.条件列名

返回符合匹配条件的两表列

等价于:

select A* ,B* from table1 A ,table2 B where A.条件列名 =B.条件列名
select *form table1 cross join table2 where table1.条件列名 = table2.条件列名(注: Cross join 后面不能跟on 只能用where)

交叉连接(完全)

概念:没有用where子句的交叉连接将产生连接所涉及的笛卡尔积第一个表的行数乘以第二个表的行数等于笛卡尔积和结果集的大小

交叉连接: Cross join(不带条件where,如果带返回或显示的是匹配的行数)

SQL语法:

select *from table1 cross join table2

如果有条件(where)

select * from table1 cross join table2 where table1. 条件列名= table2.条件列名

等价于

select *from table1,table2 (不带where)

(0)

相关推荐

  • SQL学习笔记八 索引,表连接,子查询,ROW_NUMBER

    索引 经常要查询的语句,则给它建一个索引 表连接 select T_Oders as o join T_Customers as C on o.CustomerId = c.Id 子查询 单值子查询 单列多值子查询 ROW_NUMBER()函数 ROW_NUMBER() OVER(ORDER BY Fsalary DESC)

  • 从两种SQL表连接写法来了解过去

    例如:一个二表连接的SQL,有两种写法: (1)select A.c1,A.c2,B.c1,B.c2 from table1 A,table2 B where A.id=B.id (2)select A.c1,A.c2,B.c1,B.c2 from table1 A join table2 B on A.id=B.id 哪种写法好呢?现在提倡用哪一种? 你喜欢用哪一种? 复制代码 代码如下: select * from a,b where a.id=b.id select * from a in

  • SQL SELECT 语句的表连接

    我来给大家介绍join(连接)的概念. 为此准备了两个试验用表: album(专辑表) 和 track(曲目表). 专辑表:包含200首来自Amazon的音乐CD的概要信息. album(asin, title, artist, price, release, label, rank) 曲目表:每张专辑中的曲目(因为是音乐CD,所以也可叫歌曲)的详细信息. track(album, dsk, posn, song) SQL短语 FROM album JOIN track ON album.asi

  • sql表连接查询使用方法(sql多表连接查询)

    实际的项目,存在多张表的关联关系.不可能在一张表里面就能检索出所有数据.如果没有表连接的话,那么我们就需要非常多的操作.比如需要从A表找出限制性的条件来从B表中检索数据.不但需要分多表来操作,而且效率也不高.比如书中的例子: 复制代码 代码如下: SELECT FIdFROM T_CustomerWHERE FName='MIKE' 这个SQL语句返回2,也就是姓名为MIKE 的客户的FId值为2,这样就可以到T_Order中检索FCustomerId等于2 的记录: 复制代码 代码如下: SE

  • sql 多表连接查询

    新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.ID=course.ID执行结果: 左外连接包含left joi

  • SQL多表连接查询实例分析(详细图文)

    新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.ID=course.ID执行结果: 左外连接包含left joi

  • SQL 多表连接查询实现语句

    1.理论 只要两个表的公共字段有匹配值,就将这两个表中的记录组合起来. 个人理解:以一个共同的字段求两个表中符合要求的交集,并将每个表符合要求的记录以共同的字段为牵引合并起来. 语法 select * FROM table1 INNER JOIN table2 ON table1 . field1 compopr table2 . field2 INNER JOIN 操作包含以下部分: 部分 说明 table1, table2 要组合其中的记录的表的名称. field1,field2 要联接的字

  • SQL表连接图解

    可以通过图看下 多表查询分为 内.外连接 外连接分为左连接(left join 或left outer join).右连接(right join 或者 right outer join).和完整外部连接 (full join 或者 full outer join) 左连接(left join 或 left outer join)的结果就是left join子句中的左表的所有行,而不仅仅是链接列所匹配的行,如果左表中的某行在右表中没有匹配,则在相关联的结果行中右表的所有选择列均为空值(NULL)

  • 使用PL/SQL Developer连接Oracle数据库的方法图解

    之前因为项目的原因需要使用Oracle数据库,由于时间有限没办法从基础开始学习,而且oracle操作的命令界面又太不友好,于是就找到了PL/SQL Developer这个很好用的软件来间接使用数据库. 下面简单介绍一下如何用这个软件连接Oracle数据库. 第一步 安装Oracle Database和PL/SQL Developer 这一步网上有很多的教程就不详细介绍.Oracle可以直接到官网去下载,在安装中注意几个问题就行: 1.一定要记住自己全局数据库名字和口令,这个在后面连接的时候很重要

  • SQL Server 2012 多表连接查询功能实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: -- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ClassInfo -- 内连接 (Inner 可以省略) SELECT * FROM Student JOIN dbo.ClassInfo ON dbo.Student.Class = dbo.ClassInfo.ID; -- Inner Jo

  • MySQL中基本的多表连接查询教程

    一.多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢.一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN 2.   内连接INNER JOIN 在MySQL中把I SELECT * FROM table1 CROSS JOIN tabl

  • SQL Server连接中三个常见的错误分析

    SQL Server连接中三个常见的错误分析 一."SQL Server 不存在或访问被拒绝"  这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1.SQL Server名称或IP地址拼写有误 2.服务器端网络配置有误 3.客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. 首先,检查网络物理连接  ping <服务器IP地址/服务器名称> 如果 ping <服务器IP地址> 不

  • SQL JOIN 连接详细介绍及简单使用实例

    SQL JOIN 连接 SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN). SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行. 让我们看看选自 "Orders" 表的数据: OrderID CustomerID OrderDate 10308 2 1996-09-18 10309 37 1996-09-19 10310 77 1996-09-20 然后

  • SqlServer 表连接教程(问题解析)

    1.2 本篇文章内容概要 1.3 本篇文章内容概括 在SQL语句中,关于表连接,若按照表的数量来划分,可以划分为单表连接.两表连接和两表以上连接,在本篇文章中,主要讲解两表连接,其他多表连接原理一样. 关于表连接有很多种类,本文主要讲解交叉连接,内连接,外连接(左外部连接,右外部连接,全连接),自连接. 1.4 本章测试样表和Sql 业务场景:有两张表,分为为顾客表Customers和顾客订单表Orders,SQL语句分别如下: 创建Customes并初始化 --CREATE TABLE Cus

随机推荐