JOIN分为:内连接、相等连接、自然连接、交叉连接,如下:
a、显式的内连接与隐式连接(inner join == join )
显示连接:SELECT from employee join department on employeeDepartmentID = departmentDepartmentID
等价于:
隐式连接:SELECT from employee,department WHERE employeeDepartmentID = departmentDepartmentID
注:当DepartmentID不匹配,就不会往结果表中生成任何数据。
b、相等连接
提供了一种可选的简短符号去表达相等连接,它使用 USING 关键字。
SELECT from employee join department using (DepartmentID)
注:与显式连接不同在于:DepartmentID只显示一列
c、自然连接
比相等连接的进一步特例化。两表做自然连接时,两表中的所有名称相同的列都将被比较,这是隐式的。
自然连接得到的结果表中,两表中名称相同的列只出现一次
select from employee natural join department
注:在 Oracle 里用 JOIN USING 或 NATURAL JOIN 时,如果两表共有的列的名称前加上某表名作为前缀,
则会报编译错误: "ORA-25154: column part of USING clause cannot have qualifier"
或 "ORA-25155: column used in NATURAL join cannot have qualifier"
d、交叉连接(又称笛卡尔连接)
如果 A 和 B 是两个集合,它们的交叉连接就记为: A × B
显示连接:
select from employee cross join department
等价于
隐式连接:
select from employee,department
不使用join *** 作,您可以使用UNION ALL或EXISTS来实现两表关联。UNION ALL可以将两个表的数据合并,而EXISTS可以从一个表中查询数据,并根据另一个表中的条件进行筛选。
当代码开发人员只写join的时候,SQL解析器自动将其默认为内关联,既不是左关联也不是右关联。
左关联必须用Left join,右关联必须用right join。
给表之间设置主外键, 你查询多表的时候, 还是要 JOIN 的啊。
表之间设置主外键,会自动创建一个索引。
所以,理论上来说,你表之间设置了主外键。
这2个表之间关联查询的时候,性能要比 没有主外键的性能要好。
以上就是关于数据库中JOIN怎么用全部的内容,包括:数据库中JOIN怎么用、两表关联不用join的写法是什么、oracle数据库sql语句里只有join是左连接还是右连接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)