收藏 ORACLE左右链接说明

学生表
学号 姓名
0001 小李
0002 小王
0003 小朱
0004 小黄
选课表
学号 课程
0001 高数
0002 线数
0004 英语
0005 电脑

--左(外)联接
SELECT 学生表.*, 选课表.课程
FROM 学生表, 选课表
WHERE 学生表.学号 = 选课表.学号(+)
查询的结果是:
学号 姓名 课程
0001 小李 高数
0002 小王 线数
0003 小朱
0004 小黄 电脑
学生表.学号 = 选课表.学号(+)表示
学生表(也就是左边的表)所有行都会被返回
即使选课表中没有相应的行与学生表中的行匹配

--右(外)联接
SELECT 学生表.*, 选课表.课程
FROM 学生表, 选课表
WHERE 学生表.学号(+) = 选课表.学号
查询的结果是:
学号 姓名 课程
0001 小李 高数
0002 小王 线数
0004 小黄 电脑
0005 电脑
学生表.学号(+) = 选课表.学号表示
选课表(也就是右边的表)所有行都会被返回
即使学生表中没有相应的行与选课表中的行匹配


不同的数据库系统对外联接有不同的表示
有此根本不兼容

如(还是以上例为基础)

MS SQL SERVER 外联接的SQL写法
--左(外)联接 - 第一种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表, 选课表
WHERE 学生表.学号 *= 选课表.学号
--左(外)联接 - 第二种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表 LEFT OUTER JOIN 选课表 ON 学生表.学号 = 选课表.学号
--右(外)联接 - 第一种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表, 选课表
WHERE 学生表.学号 =* 选课表.学号
--右(外)联接 - 第二种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表 RIGHT OUTER JOIN 选课表 ON 学生表.学号 = 选课表.学号
--注:在MS SQL SERVER中,OUTER关健字可以省略

ACCESS 外联接的SQL写法
--左(外)联接 - 第二种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表 LEFT OUTER JOIN 选课表 ON 学生表.学号 = 选课表.学号
--右(外)联接 - 第二种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表 RIGHT OUTER JOIN 选课表 ON 学生表.学号 = 选课表.学号
--注:在ACCESS中,关健字OUTER不可以省略

ORACLE 外联接的SQL写法
--左(外)联接 - 第一种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表, 选课表
WHERE 学生表.学号 = 选课表.学号(+)
--右(外)联接 - 第一种写法
SELECT 学生表.*, 选课表.课程
FROM 学生表, 选课表
WHERE 学生表.学号(+) = 选课表.学号

ORACLE直到9i才支持SQL-92外联接语法
LEFT (OUTER)JOIN和RIGHT (OUTER) JOIN
和MS SQL SERVER一样
关健字OUTER是可以省略的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值