SQL的各种连接--自联结,内连接,外连接,交叉连接
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的各种连接--自联结,内连接,外连接,交叉连接的更多相关文章
- Oracle内链接+外连接详解
inner join(内连接) 内连接也称为等同连接,返回的结果集是两个表中所有相匹配的数据,而舍弃不匹配的数据.也就是说,在这种查询中,DBMS只返回来自源表中的相关的行,即查询的结果表包含的两源表 ...
- 【cl】多表查询(内、外连接)
交叉连接(cross join):该连接产生的结果集笛卡尔积 a有7行,b有8行 a的第一行与b的每一行进行连接,就有8条a得第一行 7*8=56条 select a.real_name,s.u ...
- 【SQL】多表查询中的 外连接 ,on,where
先简单粗暴给个结论,多表连结查询中,on比where更早起作用,系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行匹配过滤,where后语句为真,则能查询出来,而通过外连接 ...
- 关于数据库的左,右,内,外连接,Union和Union all---------笔记
1.左连接 select a.filed1,a.filed2,b.filed1 from a (左表) left join b(右表) on a.commonfiled = b.commonfiled ...
- Orcle数据库 表的 内置函数 内链接 外连接 相关练习题
- SQL中的内连接与外连接
关于关系代数连接运算的介绍请查看下面链接 http://www.cnblogs.com/xidongyu/articles/5980407.html 连接运算格式 链接运算由两部分构成:连接类型和连接 ...
- 转:SQL的内连接与外连接
参考:http://www.cuiyongjian.com/post-130.html 在oracle的SQL语句常用的连接有内连接(inner join),外连接(outer join)等,内连接又 ...
- SQL 左外连接,右外连接,全连接,内连接
原文地址 连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行. 连接可 ...
- SQL内连接-外连接join,left join,right join,full join
1.创建测试表test1及test2 SQL)); 表已创建. SQL)); 表已创建. ,'name1'); ,'name2'); ,'name3'); ,'name4'); ,'name5'); ...
- SQL连接方式(内连接,外连接,交叉连接)
1.内连接.左连接.右连接.全连接介绍 內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来.内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来. 左连 ...
随机推荐
- 【Nacos】Nacos安装
1.Nacos简介 Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计.它可以帮助您轻松构建云本机应用程序和微服务平台. Nacos基本上支持现在所有类型的服务, ...
- <i>和<em>、<b>和<strong>标签的区别
在HTML4.01中:< b > < i > 是视觉要素(presentationl elements),分别表示无意义的加粗,无意义的斜体,仅仅表示样式上是粗体或斜体,而没有 ...
- Oracle中start with...connect by/start with…connect by prior子句的用法
connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3;例:select * ...
- 心形陀螺案例css3
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="UTF-8&qu ...
- 126B Password[扩展kmp学习]
题目大意 给你一个字符串,求它的一个子串使得这个子串即使前缀又是后缀又出现在不是前缀且不是后缀的地方 分析 扩展kmp就是定义z[i]表示i~n的子串与整个串的最长公共前缀的长度是z[i] 所以这个题 ...
- 穿戴-智能穿戴-ProjectGlass:谷歌眼镜(Google Project Glass)
ylbtech-穿戴-智能穿戴-ProjectGlass:谷歌眼镜(Google Project Glass) 谷歌眼镜(Google Project Glass)是由谷歌公司于2012年4月发布的一 ...
- ArrayList 源码解读
ArrayList 源码解读 基于JDk 1.7.0_80 public class ArrayList<E> extends AbstractList<E> impl ...
- vue搭建项目之设置代理
前面将项目页面.axios.组件等都准备好了,现在就差设置代理了: 首先在config下新建两个文件,分别叫做dev.uri.js和prod.uri.js,代码为: module.exports = ...
- vue.jsc初体验
Vue 1.安装脚手架 (1)npm install -g vue-cli (2)Vue -v //查看是否安装成功 (3)Vue init webpack name(名称) (4)Npm insta ...
- Go-Mutex互斥量
先来看一段go1.12.5中Mutex的源码: // Copyright 2009 The Go Authors. All rights reserved. // Use of this source ...