内连接(inner)
来源:互联网 发布:淘宝最恶心sb的男模特 编辑:程序博客网 时间:2024/06/14 04:49
wiki百科:https://zh.wikipedia.org/wiki/连接_(SQL)#.E5.86.85.E8.BF.9E.E6.8E.A5
示例用表
下文中解释"连接"都将用到这里的两张表. 表中的记录(行)用于演示不同类型的"连接"和"连接谓词"的作用.在下面两张表中, Department.DepartmentID
Employee.DepartmentID
SQL定义了两种不同语法方式去表示"连接"。首先是"显式连接符号",它显式地使用关键字 JOIN
,其次是"隐式连接符号",它使用所谓的"隐式连接符号"。隐式连接符号把需要连接的表放到 SELECT
FROM
WHERE
内连接"可以进一步被分为: 相等连接,自然连接,和交叉连接(见下).
程序要应该特别注意连接依据的列可能包含NULL 值,NULL 值不与任何值匹配(甚至和它本身) --除非连接条件中显式地使用 ISNULL
ISNOT NULL
例如,下面的查询通过 Employee 表和 Department 表共有的属性 DepartmentID 连接两表。在两表DepartmentID匹配之处(如连接谓词被满足),查询将组合两表的
显式的内连接实例:
SELECT *FROM employee INNER JOIN department ON employee.DepartmentID = department.DepartmentID
等价于:
SELECT * FROM employee,department WHERE employee.DepartmentID = department.DepartmentID
显式的内连接的输出结果:
注
相等链接
相等连接(equi-join,或 <</code>)的不是相等连接
。前面的查询已经展示了一个相等连接的实例:
SELECT *FROM employee INNER JOIN department ON employee.DepartmentID = department.DepartmentID
等价于 隐式的:
SELECT * FROM employee,department WHERE employee.DepartmentID = department.DepartmentID
SELECT *FROM employee INNER JOIN department USING (DepartmentID)
自然连接
自然连接比相等连接的进一步特例化。两表做自然连接时,两表中的所有名称相同的列都将被比较,这是隐式的。自然连接得到的结果表中,两表中名称相同的列只出现一次.
SELECT *FROM employee NATURAL JOIN department
用了 USING
交叉连接
交叉连接(crossjoin),又称笛卡尔连接(cartesianjoin)或叉乘(Product),它是所有类型的内连接的基础。把表视为行记录的集合,交叉连接即返回这两个集合的笛卡尔积。这其实等价于内连接的链接条件为"永真",或连接条件不存在.
SELECT *FROM employee CROSS JOIN department
隐式的交叉连接实例:
SELECT *FROM employee ,department;
交叉连接不会应用任何谓词去过滤结果表中的记录。程序员可以用 WHERE
- 内连接(inner)
- 内连接(INNER JOIN)
- 内连接(inner join)
- oracle 内连接(inner join)、外连接(outer join)、全连接(full join)
- oracle 内连接(inner join)、外连接(outer join)、全连接(full join)
- oracle 内连接(inner join)、外连接(outer join)、全连接(full join)
- 两个 DataTable 合并 inner join 内连接
- MySQL COUNT(*) INNER JOIN 内连接查询
- 内连接(INNER JOIN) 外连接(OUTER JOIN)补习
- 内连接(inner join)与外连接(outer join)小结
- 内部类(Inner Class)
- 内部类(inner class)
- [置顶] oracle 内连接(inner join)、外连接(outer join)、全连接(full join)
- 左连接(left jion)、右连接(right jion)、内连接(inner join)性能比较
- 内连接、外连接(左连接、右连接、全外连接)inner join on, left join on, right join on
- Java内部类(Inner Class)详解
- Java内部类(Inner Class)
- Java内部类(Inner Class)
- GitHub 使用教程图文详解
- android学习的几本书:深入理解Android内核设计思想
- 【经验】让参考文献按照自己希望的…
- zookeeper原理
- word修订功能的使用方法:修改论文…
- 内连接(inner)
- 指令系统(一)数据传送指令
- 外连接(outer join)
- 自连接
- 力导向算法简单实现
- Javascript中定义类
- Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件
- java & javascript 生成随机数
- AFNetWorking源码学习摘要