先 两张表 建表语句如下:
create table A (
id number primary key,
name varchar2(20),
class varchar2(40),
homeAddress varchar2(200)
);
create table B (
classid number primary key,
student varchar2(90)
);
insert into a values(12,'苹果笔记本','电脑','加州');
insert into a values (2,'联想笔记本','电脑','北京');
insert into a values (3,'华为笔记本','电脑','深圳');
insert into a values (4,'荣耀手机','手机','深圳');
insert into a values (5,'华为手机','手机','深圳');
insert into a values (6,'恒大俱乐部','足球俱乐部','广州');
insert into a values (7,'鲁能足球俱乐部','足球俱乐部','青岛');
insert into a values (8,'青岛啤酒','饮料','青岛');
insert into a values (9,'河南烩面','主食','河南');
insert into a values (10,'少林寺','寺庙','郑州');
insert into a values (11,'龙门石窟','景区','洛阳');*/
insert into b values (1,'少林寺');
insert into b values (2,'泰山');
insert into b values (3,'龙门石窟');
insert into b values (4,'华山');
insert into b values (5,'衡山');
insert into b values (6,'恒山');
insert into b values (7,'九华山');
insert into b values (8,'黄山');
insert into b values (9,'恒大足球俱乐部');
-- 全连接 一共出线了108 条数据 a 表数据数目 * b表数据数目即出现了笛卡尔积
select * from a,b;
-- 左连接 即以左表为准,并把b表符合 条件的进行显示,不符合的以null 代替
select * from a left join b on a.name=b.student order by a.id;
--右连接 即以右表为准,并把a表符合 条件的进行显示,不符合的以null 代替
select * from a right join b on a.name=b.student order by b.classid;
-- 内链接 仅仅显示符合条件的记录a、b表中信息均显示
select * from a inner join b on a.name=b.student order by a.id desc ;
-- 显示所有记录,符合条件不符合条件的均显示,并且没有笛卡尔积
select * from a full join b on a.name=b.student order by a.id desc;