oracle 中的(+) 是什么意思?

 我来答
海豹天秤
推荐于2019-08-05 · TA获得超过9127个赞
知道小有建树答主
回答量:23
采纳率:0%
帮助的人:3510
展开全部

代表左外连接或右外连接。

具体内容如下:

  1. oracle中的(+)是一种特殊的用法,(+)表示外连接,并且总是放在非主表的一方。

  2. 例如左外连接:select A.a,B.a from A LEFT JOIN B ON A.b=B.b;等价于select A.a,B.a from A,B where A.b = B.b(+)。

  3. 再举个例子,这次是右外连接:select A.a,B.a from A RIGHT JOIN B ON A.b=B.b;等价于select A.a,B.a from A,B where A.b (+) = B.b。

网易云信
2023-12-06 广告
oracle英 ['ɒrəkl] ;美 [ˈɔrəkəl, ˈɑr-]n.神示所; 神谕; 圣贤; 哲人1. They consulted the oracle ... 点击进入详情页
本回答由网易云信提供
wangzhiqing999
2018-01-31 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3353万
展开全部
通用测试表

-- 学生表
CREATE TABLE student (
SNO INT,
SNAME VARCHAR(10),
ICNO INT
);

-- 食堂IC卡表
CREATE TABLE IC (
ICNO INT,
ICNAME VARCHAR(10),
ICMoney INT
);

INSERT INTO student VALUES(1, '张三', 1 );
INSERT INTO student VALUES(2, '李四', 2 );
INSERT INTO student VALUES(3, '王五', NULL);

INSERT INTO IC VALUES(1, '张三', 500 );
INSERT INTO IC VALUES(2, '李四', 250 );
INSERT INTO IC VALUES(3, '赵老师', 600);

LEFT OUTER JOIN

SELECT
student.SNO,
student.SNAME,
IC.ICNAME,
IC.ICMoney
FROM
student
LEFT JOIN IC
ON (student.ICNO = IC.ICNO);

+------+-------+--------+---------+
| SNO | SNAME | ICNAME | ICMoney |
+------+-------+--------+---------+
| 1 | 张三 | 张三 | 500 |
| 2 | 李四 | 李四 | 250 |
| 3 | 王五 | NULL | NULL |
+------+-------+--------+---------+
3 rows in set (0.00 sec)

Oracle 有种另外的写法.

SELECT
student.SNO,
student.SNAME,
IC.ICNAME,
IC.ICMoney
FROM
student, IC
WHERE
student.ICNO = IC.ICNO(+);

SNO SNAME ICNAME ICMONEY
--------- -------------------- -------------------- ----------
1 张三 张三 500
2 李四 李四 250
3 王五

可以理解为, 有 (+) 的, 就是 可选的 (也就是可以为 NULL 的)。

----------
RIGHT OUTER JOIN

SELECT
student.SNO,
student.SNAME,
IC.ICNAME,
IC.ICMoney
FROM
student
RIGHT JOIN IC
ON (student.ICNO = IC.ICNO);

+------+-------+--------+---------+
| SNO | SNAME | ICNAME | ICMoney |
+------+-------+--------+---------+
| 1 | 张三 | 张三 | 500 |
| 2 | 李四 | 李四 | 250 |
| NULL | NULL | 赵老师 | 600 |
+------+-------+--------+---------+
3 rows in set (0.00 sec)

Oracle 有种另外的写法.

SELECT
student.SNO,
student.SNAME,
IC.ICNAME,
IC.ICMoney
FROM
student, IC
WHERE
student.ICNO(+) = IC.ICNO;

SNO SNAME ICNAME ICMONEY
---------- -------------------- -------------------- ----------
1 张三 张三 500
2 李四 李四 250
赵老师 600

可以理解为, 有 (+) 的, 就是 可选的 (也就是可以为 NULL 的)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式