SQL系统教程一(表之间的连接关系)
表与表的连接总体分为三类:
内连接:inner join
外连接:left join 、right join、full join、
交叉连接:cross join
下面将一一介绍
先建表a 和b
create table a (col int,coll int)
insert into a values(1,10)
insert into a values(2,20)
insert into a values(3,30)
insert into a values(4,40)
insert into a values(5,50)
go
create table b (col int,coll int)
insert into b values(1,10)
insert into b values(6,20)
insert into b values(7,30)
insert into b values(8,40)
insert into b values(2,50)
首先介绍内连接 inner join
select * from a inner join b on a.col=b.col
他返回了两个表中符合关联条件的结果
接下来是外连接 left outer join / right outer join / full outer join
在实际应用中可以直接写left join 可以省掉outer。
select * from a left outer join b on a.col=b.col
他返回了左边的所有行,如果右边有匹配的值就显示,没有匹配的值就以null值返回
select * from a right outer join b on a.col=b.col
和左连接相返,以右表为主,返回右表的所有行,如果左表有匹配值就返回,没有匹配值以null值返回
select * from a full outer join b on a.col=b.col
返回两个表的所有结果,没匹配的以null返回,相当于left join的结果加上right join的结果
--exec sp_dbcmptlevel dbname,80 设置数据库的兼容级别
select * from a,b where a.col*=b.col
这是左连接的简化写法。
select * from a,b where a.col=*b.col
右连接的简化写化。
在sql2000中支持,要在2005 或2008中使用请先设置数据库的兼容级别
接下来是交叉连接 cross join
select * from a cross join b
在不加where条件的情况下,返回两表的笛卡尔乘积a表5行,b表5行,返回25行
where a.col=b.col
加了where 条件后,和inner join的结果一样,满足条件的才会返回。和inner join的区别是,内连接必须有关联条件,而交叉连接可以不要条件。
select * from a,b where a.col=b.col
这是cross join的简化写法。
另外,表和本身也可以连接使用,叫做自连接。
select * from a where coll=coll
返回coll值一样的结果,如果coll某行的值在整个表中只有一条记录,则不返回。
转载于:https://www.cnblogs.com/bingyuw/archive/2008/11/20/1337349.html
SQL系统教程一(表之间的连接关系)相关推荐
- [SQL基础教程] 1-5 表的删除和更新
[SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ...
- 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解
主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...
- SAP库存表之间的逻辑关系
SAP库存表之间的逻辑关系 转载于SAP学习门户网,原文链接: http://www.sap6.com/learn/mm/073504302015/3370.html 当前库存: 一般保存在 MARD ...
- 关系型数据库表之间的联系[关系]详解
关系型数据库表之间的联系[关系]详解 在表中,行和列的逻辑顺序无关紧要.每个表至少包含一列,该列被称为主键,它唯一地标识了表中的每一行. 键是表中扮演特殊角色的列,有两种键:主键.外键. 主键(Pri ...
- 微服务下数据表之间的耦合关系
微服务下数据表之间的耦合关系 1.问题产生 今天同事给我发了一个链接,问我这种做可视化建表的过程觉得怎么样?(如下图) 同事的意思主要是,在微服务架构下,新建单一数据表,然后表内数据需要引用其他数据表 ...
- 一起学Hadoop——实现两张表之间的连接操作
---恢复内容开始--- 之前我们都是学习使用MapReduce处理一张表的数据(一个文件可视为一张表,hive和关系型数据库Mysql.Oracle等都是将数据存储在文件中).但是我们经常会遇到处理 ...
- sql server 中用sql实现两个表之间的inert/delete/update
sql 中涉及到两个表CurrentData.dbo.EVUniverse and CurrentData.dbo.Staging_EVUniverse, 从前表到后表操作 ;--INSERT NEW ...
- 根据用户查进程_【磨叽教程】Android进阶教程之在Android系统下各进程之间的优先级关系...
导读:本文大约2000字,预计阅读时间3分钟.本文纯属技术文,无推广. 正文 首先应用进程的生命周期并不由应用本身直接控制,而是由系统综合多种因素来确定的.Android系统有自己的一套标准, ...
- sql 系统函数取表基本信息
SELECT 表名=case when a.colorder=1 then d.name else '' end, 序号=a.colorder, 列名=a.name, 数据类型=b.name, 长度= ...
最新文章
- 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则
- css标签显示特性(块级元素、行内元素、行内块元素、标签显示模式转换display、简单文字居中、简单导航栏案例)
- MySQL优化篇:锁机制
- 政府安全资讯精选 2017年第六期 车联网和移动安全可能成为未来监管重点
- 2020-03-21
- SP22343 NORMA2 - Norma(分治优化复杂度)
- 将Host Cobol批次和Monolith Webapps移动到云和微服务
- 【计算机网络复习 数据链路层】3.3.1 差错控制(检错编码)
- 创建表空间时ora-01119和ora-27040的处理
- java cl 規格_Java JavaCL類代碼示例
- html5+css3第一次作业_老娘我,饿死也不要陪孩子做手工作业,高考陪考真香!...
- HTML5该怎么学?HTML5入门知识汇总
- vue项目打包之后首页白屏的问题
- hdu 4991 Ordered Subsequence
- python切割图片文字_Python+opencv 实现图片文字的分割的方法示例
- 嘻哈 软件技术知识与项目管理知识
- Android TableLayout 表格布局详解
- 最大团(最大完全子图)
- 程序员的这些前五大无奈,你占了多少?
- unity种四种光源
热门文章
- jquery双击修改_jQuery双击
- 百家与g对比oogle_如何在Java Web应用程序中集成G​​oogle reCAPTCHA
- 学习Web前端,前景无限光明?
- 人工智能重点领域有哪些呢?
- C++进阶教程之信号处理
- 新书推荐:可爱的Python
- [Python学习笔记][第八章Python异常处理结构与程序调试]
- 分析优秀的.NET 文档设计工具Vsdocman 7.1 软件保护技术
- Hadoop JobTracker和NameNode运行时参数查看
- Android导出jar包后的资源使用问题