左连接和有链接
通俗的讲:
A left join B 的连接的记录数与A表的记录数同
A right join B 的连接的记录数与B表的记录数同
A left join B 等价B right join A
a b
id name id stock
1 a 1 15
2 b 2 50
3 c
select * from a inner join b on a.id=b.id
这个语法是连接查询中的内连接,它产生的结果是
两个表相匹配的记录出现在结果列表中。
根据上面的表,出现的结果是这样的
a.id name b.id stock
1 a 1 15
2 b 2 50
----------------------------
select * from a,b where a.id=b.id
这个语法是内连接的另外一种写法,其执行结果与inner join 一样
--------------------------------
select * from a left/right join b on a.id=b.id
这个是外连接语法中的左外连接或右外连接
如果是左外连接的话,它将显示a表的所有记录,
select a.*,b.* from a left join b on a.id=b.id
查询的结果是这样的:
a.id name b.id stock
1 a 1 15
2 b 2 50
3 c null null
--------------------------------------------
如果是右外连接的话,它将显示b表的所有记录,
select a.*,b.* from a right join b on a.id=b.id
查询的结果是这样的:
a.id name b.id stock
1 a 1 15
2 b 2 50
****************************************************************************************8
union使用方法:
union 对两个结果集进行并集操作,重复数据只显示一次
Union All,对两个结果集进行并集操作,重复数据全部显示
example:
create table student
(
id int primary key,
name varchar(20),
age number(20)
);
insert into student
(id ,name,age)
values
('1','student1','1'),
('2','student2','2'),
('3','student3','3'),
('4','student4','4'),
('5','student5','5'),
('6','student6','6'),
('7','student7','7');
select * from student where id<5
union
select * from student where id>3 and id<8;
显示:
id name age
1 student1 1
2 student2 2
3 student3 3
4 student4 4
select * from student where id<5
union all
select * from student where id>3 and id<8;
显示:
id name age
1 student1 1
2 student2 2
3 student3 3
4 student4 4
4 student4 4
5 student5 5
6 student6 6
7 student7 7
注意:
数据
4 student4 4
插入了两遍
通俗的讲:
A left join B 的连接的记录数与A表的记录数同
A right join B 的连接的记录数与B表的记录数同
A left join B 等价B right join A
举个例子:
假设a表和b表的数据是这样的。a b
id name id stock
1 a 1 15
2 b 2 50
3 c
select * from a inner join b on a.id=b.id
这个语法是连接查询中的内连接,它产生的结果是
两个表相匹配的记录出现在结果列表中。
根据上面的表,出现的结果是这样的
a.id name b.id stock
1 a 1 15
2 b 2 50
----------------------------
select * from a,b where a.id=b.id
这个语法是内连接的另外一种写法,其执行结果与inner join 一样
--------------------------------
select * from a left/right join b on a.id=b.id
这个是外连接语法中的左外连接或右外连接
如果是左外连接的话,它将显示a表的所有记录,
select a.*,b.* from a left join b on a.id=b.id
查询的结果是这样的:
a.id name b.id stock
1 a 1 15
2 b 2 50
3 c null null
--------------------------------------------
如果是右外连接的话,它将显示b表的所有记录,
select a.*,b.* from a right join b on a.id=b.id
查询的结果是这样的:
a.id name b.id stock
1 a 1 15
2 b 2 50
****************************************************************************************8
union使用方法:
union 对两个结果集进行并集操作,重复数据只显示一次
Union All,对两个结果集进行并集操作,重复数据全部显示
example:
create table student
(
id int primary key,
name varchar(20),
age number(20)
);
insert into student
(id ,name,age)
values
('1','student1','1'),
('2','student2','2'),
('3','student3','3'),
('4','student4','4'),
('5','student5','5'),
('6','student6','6'),
('7','student7','7');
select * from student where id<5
union
select * from student where id>3 and id<8;
显示:
id name age
1 student1 1
2 student2 2
3 student3 3
4 student4 4
select * from student where id<5
union all
select * from student where id>3 and id<8;
显示:
id name age
1 student1 1
2 student2 2
3 student3 3
4 student4 4
4 student4 4
5 student5 5
6 student6 6
7 student7 7
注意:
数据
4 student4 4
插入了两遍