SQL Server内连接、左外连接、右外连接、完全连接、交叉lianjie

数据准备:

create table T1(
A varchar(10) not null,
B varchar(10) not null,
C tinyint not null
);

create table T2(
B varchar(10) not null,
E tinyint not null
);

insert into T1
values
(‘a1‘, ‘b1‘, 5),
(‘a1‘, ‘b2‘, 6),
(‘a2‘, ‘b3‘, 8),
(‘a2‘, ‘b4‘, 12);

insert into T2
values
(‘b1‘, 3),
(‘b2‘, 7),
(‘b3‘, 10),
(‘b3‘, 2),
(‘b5‘, 2);

select * from T1;
select * from T2;

结果:

 1 A          B          C
 2 ---------- ---------- ----
 3 a1         b1         5
 4 a1         b2         6
 5 a2         b3         8
 6 a2         b4         12
 7
 8 (4 行受影响)
 9
10 B          E
11 ---------- ----
12 b1         3
13 b2         7
14 b3         10
15 b3         2
16 b5         2
17
18 (5 行受影响)

1、内连接

1 select * from T1 inner join T2 on T1.B = T2.B
2
3 A          B          C    B          E
4 ---------- ---------- ---- ---------- ----
5 a1         b1         5    b1         3
6 a1         b2         6    b2         7
7 a2         b3         8    b3         10
8 a2         b3         8    b3         2

2、左外连接

1 select * from T1 left outer join T2 on T1.B = T2.B
2
3 A          B          C    B          E
4 ---------- ---------- ---- ---------- ----
5 a1         b1         5    b1         3
6 a1         b2         6    b2         7
7 a2         b3         8    b3         10
8 a2         b3         8    b3         2
9 a2         b4         12   NULL       NULL

3、右外连接

1 select * from T1 right outer join T2 on T1.B = T2.B
2
3 A          B          C      B          E
4 ---------- ----------   ---- ---------- ----
5 a1         b1         5      b1         3
6 a1         b2         6      b2         7
7 a2         b3         8      b3         10
8 a2         b3         8      b3         2
9 NULL     NULL     NULL b5         2

4、完全连接

 1 select * from T1 full outer join T2 on T1.B = T2.B
 2
 3 A            B            C       B          E
 4 ---------- ---------- ---- ---------- ----
 5 a1           b1           5       b1         3
 6 a1           b2           6       b2         7
 7 a2           b3           8       b3         10
 8 a2           b3           8       b3         2
 9 a2           b4           12     NULL      NULL
10 NULL       NULL       NULL  b5         2

5、交叉连接(笛卡尔乘积)

 1 select * from T1 cross join T2
 2
 3 A          B          C    B          E
 4 ---------- ---------- ---- ---------- ----
 5 a1         b1         5    b1         3
 6 a1         b1         5    b2         7
 7 a1         b1         5    b3         10
 8 a1         b1         5    b3         2
 9 a1         b1         5    b5         2
10 a1         b2         6    b1         3
11 a1         b2         6    b2         7
12 a1         b2         6    b3         10
13 a1         b2         6    b3         2
14 a1         b2         6    b5         2
15 a2         b3         8    b1         3
16 a2         b3         8    b2         7
17 a2         b3         8    b3         10
18 a2         b3         8    b3         2
19 a2         b3         8    b5         2
20 a2         b4         12   b1         3
21 a2         b4         12   b2         7
22 a2         b4         12   b3         10
23 a2         b4         12   b3         2
24 a2         b4         12   b5         2

原文地址:https://www.cnblogs.com/xhcdream/p/8366385.html

时间: 2024-10-01 04:49:25

SQL Server内连接、左外连接、右外连接、完全连接、交叉lianjie的相关文章

深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(转载)

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.     2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEFT

【转】深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

[原文]:http://www.jb51.net/article/39432.htm 1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT

[转]深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

深入理解SQL的四种连接-左外连接.右外连接.内连接.全连接 1.内连接(典型的连接运算,使用像 =  或 <> 之类的比较运算符).包括相等连接和自然连接.     内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外连接.外连接可以是左向外连接.右向外连接或完整外部连接.     在 FROM子句中指定外连接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT

深入理解SQL的四种连接,左外连接,右外连接,内连接,全连接

1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

Sql Server 2005的1433端口打开和进行远程连接

参考地址:http://topic.csdn.net/u/20090828/16/e693935a-99b7-4090-a6bc-0123c91183eb.html 1.如何打开sql server 2005 的1433端口配置工具->Sql Server Configuration Manager->MSSQLSERVER的协议看看TCP/IP协议是否启动,如果启动,右键菜单点"属性" ,在分页菜单中选"IP地址",把"IP1"和&

SQL Server和MySQL主外键写法对比

SQL Server主键的写法: --列级 create table dept ( dept_no int primary key, dept_name nvarchar(20) not null ) --表级 create table dept ( dept_no int not null, dept_name nvarchar(20) not null, primary key (dept_no) ) --修改 create table dept ( dept_no int not null

oracle sql 内连接 左外连接 右外连接 全外连接

1.创建测试表并准备测试数据[email protected]> create table a (a number(1),b number(1),c number(1));[email protected]> create table b (a number(1),d number(1),e number(1));[email protected]> insert into a values(1,1,1);[email protected]> insert into a value

oracle 内连接 左外连接 右外连接的用法,(+)符号用法

1. 内连接很简单 select A.*, B.* from A,B where A.id = B.id select A.*, B.* from A inner join B on A.id = B.id 以上两句是完全等价的 2. 左外连接 select * from emp a left join dept d on a.deptno=d.deptno select * from emp a,dept d where a.deptno=d.deptno(+) 以上两句是完全等价的 3. 右

SQL Server内连接、外连接、交叉连接

前言 在数据库查询中,我们常常会用到的表连接查询,而我自己在工作中也是时常用这些表连接查询.而就在刚刚我却还没有搞清楚数据库表连接到底有哪几种, 这几种表连接查询方式又有什么区别,实属惭愧!借以此文以谨记. 连接方式 数据库表连接查询分三种:内连接.外连接.交叉连接 那下面我们就来分别说说这三种连接. 内连接(inner join) 内连接又分为:等值连接.不等连接.自然连接 1.等值连接 我们在连接多表查询时,连接条件中使用等号(=)运算符,其查询结果中列出被连接表中的所有列,包括其中的重复列