1、准备两个表:Student,Course,其中student.C_S_Id=Course.C_Id(即Student 表中的 C_S_Id 字段为外键列,关联的是 Course 表的 C_Id 主键列)

2、内连接(table1 inner join table2 on 条件表达式):满足on条件表达式,内连接是取满足条件表达式的两个表的交集(其中inner可以省略);

  select * from Student s

  inner join Course c on s.C_S_Id=c.C_Id

 结果如下:

3、外连接(outer join)分为:左外连接(left outer join / left join),右外连接(right join / right outer join)和全外连接(full join / full outer join)

(1)左外连接(table1 left join table2 on 条件表达式):满足on条件表达式,左外连接是以左表为准,返回左表所有的数据,与右表匹配的则有值,

   没有匹配的则以空(null)代替。

  select * from Student s

  left join Course c on s.C_S_Id=c.C_Id

  结果如下:

(2)右外连接(table1 right join table2 on 条件表达式):满足on条件表达式,右外连接是以右表为准,返回右表所有的数据,与左表匹配的则有值,

   没有匹配的则以空(null)代替。

  select * from Student s

  right join Course c on s.C_S_Id=c.C_Id

  结果如下:

(3)全外连接(table1 full join table2 on 条件表达式):满足on条件表达式,返回两个表符合条件的所有行,a表没有匹配的则a表的列返回null,

      b表没有匹配的则b表的列返回null(即返回的是左外连接和右外连接的并集)。

  select * from Student s

  full join Course c on s.C_S_Id=c.C_Id

  结果如下:

4、交叉连接(table1 cross join table2):交叉连接将返回被连接的两个表的笛卡尔乘积,返回结果的行数等于两个表的行数的乘积。

 不加条件的交叉连接SQL语句:

  select * from Student s

  cross join Course c

 加上条件返回满足条件表达式的两个表的行(交叉连接加条件只能用where):

  select * from Student s

  cross join Course c

  where s.C_S_Id=c.C_Id;

 结果如下:

5、自连接:表与表自己连接此时需要给表取别名,而且后面加条件时也只能用where,这点同全外连接一样。

  select s1.S_Name,s2.S_age

  from Student s1,Student s2

  where s1.S_BirthDate=s2.S_BirthDate

SQL的各种连接--自联结,内连接,外连接,交叉连接的更多相关文章

  1. Oracle内链接+外连接详解

    inner join(内连接) 内连接也称为等同连接,返回的结果集是两个表中所有相匹配的数据,而舍弃不匹配的数据.也就是说,在这种查询中,DBMS只返回来自源表中的相关的行,即查询的结果表包含的两源表 ...

  2. 【cl】多表查询(内、外连接)

    交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行    a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.u ...

  3. 【SQL】多表查询中的 外连接 ,on,where

    先简单粗暴给个结论,多表连结查询中,on比where更早起作用,系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行匹配过滤,where后语句为真,则能查询出来,而通过外连接 ...

  4. 关于数据库的左,右,内,外连接,Union和Union all---------笔记

    1.左连接 select a.filed1,a.filed2,b.filed1 from a (左表) left join b(右表) on a.commonfiled = b.commonfiled ...

  5. Orcle数据库 表的 内置函数 内链接 外连接 相关练习题

  6. SQL中的内连接与外连接

    关于关系代数连接运算的介绍请查看下面链接 http://www.cnblogs.com/xidongyu/articles/5980407.html 连接运算格式 链接运算由两部分构成:连接类型和连接 ...

  7. 转:SQL的内连接与外连接

    参考:http://www.cuiyongjian.com/post-130.html 在oracle的SQL语句常用的连接有内连接(inner join),外连接(outer join)等,内连接又 ...

  8. SQL 左外连接,右外连接,全连接,内连接

    原文地址  连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行.             连接可 ...

  9. SQL内连接-外连接join,left join,right join,full join

    1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...

  10. SQL连接方式(内连接,外连接,交叉连接)

    1.内连接.左连接.右连接.全连接介绍 內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来.内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来.   左连 ...

随机推荐

  1. Ponds

    Ponds Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Sub ...

  2. 如何利用阿里视频云开源组件,快速自定义你的H5播放器?

    摘要: Aliplayer希望提供一种方便.简单.灵活的机制,让客户能够扩展播放器的功能,并且Aliplayer提供一些组件的基本实现,用户可以基于这些开源的组件实现个性化功能,比如自定义UI和自己A ...

  3. wangjunkai

    <!Doctype html><html lang="en"> <head> <meta http-equiv="Content ...

  4. R python在无图形用户界面时保存图片

    在用python的matplotlib,和R中自带的作图,如果想保存图片时,当你有图形用户界面时是没有问题的,但是当没有图形用户界面时,会报错: 在R中,解决办法: https://blog.csdn ...

  5. 初步学习JS中的闭包

    JS高级程序设计(3rd)中对闭包的定义就是一句话,首先闭包是一个函数,怎样的函数呢?有权访问另一个函数作用域中的变量 的函数.而创建闭包的常见方式就是在一个函数的内部创建另一个函数,就是嵌套函数. ...

  6. spring4.1.8扩展实战之六:注册bean到spring容器(BeanDefinitionRegistryPostProcessor接口)

    本章是<spring4.1.8扩展实战>系列的第六篇,目标是学习如何通过自己写代码的方式,向spring容器中注册bean: 原文地址:https://blog.csdn.net/boli ...

  7. EasyUI的datagrid有值但是显示不出来

    $("#goodsList").datagrid({  url: "../Ajax/GoodsAjax.ashx",  queryParams:  {  cmd ...

  8. CentOS7通过SpeedTest工具测速

    首先要安装SpeedTest工具,这里提供两种方法安装SpeedTest: 一.通过直接下载SpeedTest脚本,给权限运行脚本即可 [root@bogon ~]#wget -O speedtest ...

  9. TCL环境检查

    set w [open 1.txt w+] foreach a [info var] { if { [llength [array name $a]]==0 } { puts $w $a:[set $ ...

  10. Codeforces 1012B Chemical table (思维+二分图)

    <题目链接> 题目大意:给定一个n*m的矩阵网格,向其中加点,对于一个组成矩形的四个点中如果有三个点中有元素,那么第四个点中会自动产生新的元素.问你最少再加多少个点能够填满这个网格.解题分 ...