Oracle 数据库表连接
程序员文章站
2022-05-07 09:05:58
...
准备工作:
创建表table_1并插入数据
CREATE TABLE table_1
(
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
classid INT
)
GO
INSERT INTO table_1(name,classid) SELECT'苹果',1
UNION ALL SELECT'香蕉',1
UNION ALL SELECT'草莓',1
UNION ALL SELECT'西瓜',1
UNION ALL SELECT'樱桃',1
UNION ALL SELECT'荔枝',1
UNION ALL SELECT'芒果',1
UNION ALL SELECT'木瓜',1 ----table_2没有此项
UNION ALL SELECT'香梨',1 ----table_2没有此项
GO
创建表table_2并插入数据
CREATE TABLE table_2
(
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
classid INT
)
GO
INSERT INTO table_2(name,classid) SELECT'苹果',2
UNION ALL SELECT'香蕉',2
UNION ALL SELECT'草莓',2
UNION ALL SELECT'西瓜',2
UNION ALL SELECT'樱桃',2
UNION ALL SELECT'荔枝',2
UNION ALL SELECT'芒果',2
UNION ALL SELECT'龙眼',2 --table_1没有此项
UNION ALL SELECT'芭乐',2 --table_1没有此项
UNION ALL SELECT'榴莲',2 --table_1没有此项
GO
表之间的连接关系也就是集合之间的关系,如图:
内连接
其实就是两表之间的公共部分。
SELECT a.*,b.*FROM table_1 a JOIN table_2 b ON a.[name]=b.[name]
结果:
1 苹果 1 1 苹果 2
2 香蕉 1 2 香蕉 2
3 草莓 1 3 草莓 2
4 西瓜 1 4 西瓜 2
5 樱桃 1 5 樱桃 2
6 荔枝 1 6 荔枝 2
7 芒果 1 7 芒果 2
左连接
其实就是A表记录集A1和A、B表的公共部分C.
SELECT a.*,b.*FROM table_1 a left JOIN table_2 b ON a.[name]=b.[name]
结果:
1 苹果 1 1 苹果 2
2 香蕉 1 2 香蕉 2
3 草莓 1 3 草莓 2
4 西瓜 1 4 西瓜 2
5 樱桃 1 5 樱桃 2
6 荔枝 1 6 荔枝 2
7 芒果 1 7 芒果 2
8 木瓜 1 NULL NULL NULL
9 香梨 1 NULL NULL NULL
右连接
其实就是B表的记录集B1和A、B表公共部分C
SELECT a.*,b.*FROM table_1 a right JOIN table_2 b ON a.[name]=b.[name]
结果:
1 苹果 1 1 苹果 2
2 香蕉 1 2 香蕉 2
3 草莓 1 3 草莓 2
4 西瓜 1 4 西瓜 2
5 樱桃 1 5 樱桃 2
6 荔枝 1 6 荔枝 2
7 芒果 1 7 芒果 2
NULL NULL NULL 8 龙眼 2
NULL NULL NULL 9 芭乐 2
NULL NULL NULL 10 榴莲 2
全连接
其实就是A1+C+B1全部
SELECT a.*,b.*FROM table_1 a full JOIN table_2 b ON a.[name]=b.[name]
结果:
1 苹果 1 1 苹果 2
2 香蕉 1 2 香蕉 2
3 草莓 1 3 草莓 2
4 西瓜 1 4 西瓜 2
5 樱桃 1 5 樱桃 2
6 荔枝 1 6 荔枝 2
7 芒果 1 7 芒果 2
8 木瓜 1 NULL NULL NULL
9 香梨 1 NULL NULL NULL
NULL NULL NULL 8 龙眼 2
NULL NULL NULL 9 芭乐 2
NULL NULL NULL 10 榴莲 2
交叉连接
其实就是两张表的卡迪尔积。
SELECT a.*,b.*FROM table_1 a CROSS JOIN table_2 b
结果:
1 苹果 1 1 苹果 2
1 苹果 1 2 香蕉 2
1 苹果 1 3 草莓 2
1 苹果 1 4 西瓜 2
1 苹果 1 5 樱桃 2
1 苹果 1 6 荔枝 2
1 苹果 1 7 芒果 2
1 苹果 1 8 龙眼 2
1 苹果 1 9 芭乐 2
1 苹果 1 10 榴莲 2
2 香蕉 1 1 苹果 2
2 香蕉 1 2 香蕉 2
2 香蕉 1 3 草莓 2
2 香蕉 1 4 西瓜 2
2 香蕉 1 5 樱桃 2
2 香蕉 1 6 荔枝 2
2 香蕉 1 7 芒果 2
2 香蕉 1 8 龙眼 2
2 香蕉 1 9 芭乐 2
2 香蕉 1 10 榴莲 2
3 草莓 1 1 苹果 2
3 草莓 1 2 香蕉 2
3 草莓 1 3 草莓 2
3 草莓 1 4 西瓜 2
3 草莓 1 5 樱桃 2
3 草莓 1 6 荔枝 2
3 草莓 1 7 芒果 2
3 草莓 1 8 龙眼 2
3 草莓 1 9 芭乐 2
3 草莓 1 10 榴莲 2
4 西瓜 1 1 苹果 2
4 西瓜 1 2 香蕉 2
4 西瓜 1 3 草莓 2
4 西瓜 1 4 西瓜 2
4 西瓜 1 5 樱桃 2
4 西瓜 1 6 荔枝 2
4 西瓜 1 7 芒果 2
4 西瓜 1 8 龙眼 2
4 西瓜 1 9 芭乐 2
4 西瓜 1 10 榴莲 2
5 樱桃 1 1 苹果 2
5 樱桃 1 2 香蕉 2
5 樱桃 1 3 草莓 2
5 樱桃 1 4 西瓜 2
5 樱桃 1 5 樱桃 2
5 樱桃 1 6 荔枝 2
5 樱桃 1 7 芒果 2
5 樱桃 1 8 龙眼 2
5 樱桃 1 9 芭乐 2
5 樱桃 1 10 榴莲 2
6 荔枝 1 1 苹果 2
6 荔枝 1 2 香蕉 2
6 荔枝 1 3 草莓 2
6 荔枝 1 4 西瓜 2
6 荔枝 1 5 樱桃 2
6 荔枝 1 6 荔枝 2
6 荔枝 1 7 芒果 2
6 荔枝 1 8 龙眼 2
6 荔枝 1 9 芭乐 2
6 荔枝 1 10 榴莲 2
7 芒果 1 1 苹果 2
7 芒果 1 2 香蕉 2
7 芒果 1 3 草莓 2
7 芒果 1 4 西瓜 2
7 芒果 1 5 樱桃 2
7 芒果 1 6 荔枝 2
7 芒果 1 7 芒果 2
7 芒果 1 8 龙眼 2
7 芒果 1 9 芭乐 2
7 芒果 1 10 榴莲 2
8 木瓜 1 1 苹果 2
8 木瓜 1 2 香蕉 2
8 木瓜 1 3 草莓 2
8 木瓜 1 4 西瓜 2
8 木瓜 1 5 樱桃 2
8 木瓜 1 6 荔枝 2
8 木瓜 1 7 芒果 2
8 木瓜 1 8 龙眼 2
8 木瓜 1 9 芭乐 2
8 木瓜 1 10 榴莲 2
9 香梨 1 1 苹果 2
9 香梨 1 2 香蕉 2
9 香梨 1 3 草莓 2
9 香梨 1 4 西瓜 2
9 香梨 1 5 樱桃 2
9 香梨 1 6 荔枝 2
9 香梨 1 7 芒果 2
9 香梨 1 8 龙眼 2
9 香梨 1 9 芭乐 2
9 香梨 1 10 榴莲 2