oracle数据库关联查询

数据库范式(3种)

 

关联查询:

1外链接

(1)左外链接

(2)右外连接

(3)全连接

 

2内连接:

create table T_class(

classid integer primary key,

className varchar2(255),

studentcount integer

)

 

insert INTO T_class

values

(5,'班级5',56)

 

CREATE table T_student(

stuid integer primary key,

stuName varchar2(255),

stuScore float,

classid integer

)

INSERT INTO t_student(stuid,stuName,stuScore)

values

(5,'小明',88)

--插入后,班级5没有人,小明没有班级:下面我们开始查询

--当我们在查询学生信息时,如果也想查询到他的所在班级信息,我们就需要将这两个表关联起来,就是我们的:关联查询

select * FROM T_class

select * FROM t_student

 

--外连接(左外连接,右外连接,全连接)

--左外连接:通过left 和join关键字,left表示关键字的左边是主表,右边是附表,无论两边的id是不是对应,

--主表信息都展示出来,附表只展示ID能对应起来的数据,其他不能对应起来的数据都展示为null

select * FROM t_student t1 LEFT JOIN t_class c1 on t1.classid=c1.classid

--左外连接另一种写法:

select * FROM t_student t1, t_class c1 WHERE t1.classid= c1.classid(+)

--右外连接:通过right 和join关键字,right表示关键字右边是主表,左边是附表,

select * FROM t_student t1 RIGHT join t_class c1 ON t1.classid=c1.classid

--右外连接另一种写法:

select * FROM t_student t1,t_class c1 where t1.classid(+)=c1.classid

--全连接:通过full和join关键字连接,相当于两个表都是主表,所有信息都展示,全连接没有简写方式

select * FROM t_student t1 full join t_class  c1 on t1.classid=c1.classid

--上面的方式classid都显示了两次,下面的方法可以自定义显示内容

select t1.*,c1.className,c1.studentcount FROM t_student t1 full join t_class c1 on t1.classid=c1.classid

--内连接:只查询两个表通过id能对应起来的数据(相当于两个都是附表)

select * FROM t_student t1 inner join t_class c1 on t1.classid=c1.classid

--内连接简写:

select * FROM t_student t1, t_class c1 WHERE t1.classid= c1.classid

posted @ 2019-06-17 15:50  txf-0324  阅读(1020)  评论(0编辑  收藏  举报