Oracle连接查询

左外连接

左外连接:左表不加限制,保留左表的数据,匹配右表,右表没有匹配到的行中的列显示为null

STUDENT

SELECT *
FROM  STUDENT s

在这里插入图片描述

COURSE

SELECT *
FROM COURSE c

在这里插入图片描述

STUDENT s LEFT JOIN COURSE c

SELECT * FROM STUDENT s LEFT JOIN COURSE c ON s.S_ID=c.COURSE_STUDENT_FK
ORDER BY s.S_ID

在这里插入图片描述

STUDENT s LEFT JOIN COURSE c ON s.S_ID=c.COURSE_STUDENT_FK AND c.c_name=‘课程四’

SELECT * FROM STUDENT s LEFT JOIN COURSE c ON s.S_ID=c.COURSE_STUDENT_FK AND c.c_name='课程四'
ORDER BY s.S_ID

在这里插入图片描述

WHERE 1=1 AND c.c_name=‘课程四’

SELECT * FROM STUDENT s LEFT JOIN COURSE c ON s.S_ID=c.COURSE_STUDENT_FK
WHERE 1=1 AND c.c_name='课程四'
ORDER BY s.S_ID

在这里插入图片描述

右外连接

右外连接:右表不加限制,保留右表的数据。匹配左表,左表没有匹配到的行中列显示为null

STUDENT s RIGHT JOIN COURSE c

SELECT * FROM STUDENT s RIGHT JOIN COURSE c ON s.S_ID=c.COURSE_STUDENT_FK
ORDER BY c.C_ID

在这里插入图片描述

内连接

取左表与右表的交集(左右表完全匹配)

STUDENT s INNER JOIN COURSE c

SELECT * FROM STUDENT s INNER JOIN COURSE c ON s.S_ID=c.COURSE_STUDENT_FK
ORDER BY s.S_ID

在这里插入图片描述

全连接

取左表与右表的并集(左表不加限制,保留左表的数据,并且,右表不加限制,保留右表的数据)

STUDENT s FULL JOIN COURSE c

SELECT * FROM STUDENT s FULL JOIN COURSE c ON s.S_ID=c.COURSE_STUDENT_FK
ORDER BY s.S_ID

在这里插入图片描述

SQL脚本

-- STUDENT表
create table STUDENT
(
  S_ID   INTEGER not null,
  S_NAME VARCHAR2(20)
)

alter table STUDENT
  add primary key (S_ID);
  
insert into STUDENT (S_ID, S_NAME)
values (1, '天明');
insert into STUDENT (S_ID, S_NAME)
values (2, '少羽');
insert into STUDENT (S_ID, S_NAME)
values (3, '高月');
insert into STUDENT (S_ID, S_NAME)
values (4, '雪女');

-- COURSE表
create table COURSE
(
  C_ID              INTEGER not null,
  C_NAME            VARCHAR2(20),
  COURSE_STUDENT_FK INTEGER
)

alter table COURSE
  add primary key (C_ID);
  
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (1, '课程一', 1);
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (2, '课程一', 2);
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (3, '课程一', 3);
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (4, '课程二', 1);
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (5, '课程二', 3);
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (6, '课程三', 1);
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (7, '课程四', 2);
insert into COURSE (C_ID, C_NAME, COURSE_STUDENT_FK)
values (8, '课程十', 10);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值