您的位置:首页 > 数据库 > Oracle

oracle的SQL语句中的(+)是干什么用的?

2016-04-01 09:07 369 查看
oracle特有的左外联书写方式,当然你也可以用传统的通用的左外联,比如给你举个例子

SELECT s.name AS 姓名,g.grade AS 分数,c.cid AS 课程名

FROM tbl_student s LEFT OUTER JOIN tbl_grade g ON s.StudentId=g.sid LEFT OUTER JOIN tbl_class c ON g.cid=c.ClassId

它跟下面等价

SELECT s.name AS 姓名,g.grade AS 分数,c.classname AS 课程名

FROM tbl_student s,tbl_grade g,tbl_class c

WHERE (s.StudentId=g.sid(+)) AND (g.cid=c.ClassId(+))

在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。 如果基表的数据在另一张表没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。

对于外连接, 也可以使用“(+) ”来表示。 关于使用(+)的一些注意事项:

1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。

2. 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符

3.(+)操作符只适用于列,而不能用在表达式上。

4.(+)操作符不能与or和in操作符一起使用。

5.(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: