SQL里各种联合查询总结
来源:互联网 发布:aq 网络中什么意思 编辑:程序博客网 时间:2024/06/10 07:19
create database mytest
go
use mytest
go
create table t_dept
(
d_id int primary key identity(1,1),
d_name varchar(20),
d_remark varchar(20)
)
go
create table t_emp
(
e_id int primary key identity(1,1),
d_id int references t_dept(d_id),
e_name varchar(20),
e_sex varchar(4)
)
go
insert into t_dept values('一部','1111');
insert into t_dept values('二部','2222');
insert into t_dept values('三部','3333');
insert into t_dept values('四部','4444');
go
insert into t_emp values(1,'一部A君','男');
insert into t_emp values(1,'一部B君','男');
insert into t_emp values(2,'二部C君','女');
insert into t_emp values(null,'三部D君','男');
go
select * from t_dept;
select * from t_emp;
go
--注:联接查询,哪个表在前,就以哪个表为主表
--内联接(两表标识号相同的所有行)
select * from t_dept a inner join t_emp b on a.d_id=b.d_id ;
1 一部 1111 1 1 一部A君 男
1 一部 1111 2 1 一部B君 男
2 二部 2222 3 2 二部C君 女
--外连接(外联接可以是左向外联接、右向外联接或完整外部联接)
--(1)
select * from t_dept a left outer join t_emp b on a.d_id=b.d_id ;--"左外连接 等同于 左连接"
select * from t_dept a left join t_emp b on a.d_id=b.d_id ;--左连接(所有的部门显示,员工表里部门id为null的显示不出来)
1 一部 1111 1 1 一部A君 男
1 一部 1111 2 1 一部B君 男
2 二部 2222 3 2 二部C君 女
3 三部 3333 NULL NULL NULL NULL
4 四部 4444 NULL NULL NULL NULL
--(2)
select * from t_dept a right outer join t_emp b on a.d_id=b.d_id ;--"右外连接 等同于 右连接"
select * from t_dept a right join t_emp b on a.d_id=b.d_id ;--右连接,员工表所有员工显示,"三部"和"四部"没有员工的部门则该部门不显示
1 一部 1111 1 1 一部A君 男
1 一部 1111 2 1 一部B君 男
2 二部 2222 3 2 二部C君 女
NULL NULL NULL 4 NULL 三部D君 男
--(3)
--完整外部联接,返回左表和右表中的所有行
--当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
select * from t_dept a full outer join t_emp b on a.d_id=b.d_id ;
select * from t_dept a full join t_emp b on a.d_id=b.d_id ;
1 一部 1111 1 1 一部A君 男
1 一部 1111 2 1 一部B君 男
2 二部 2222 3 2 二部C君 女
3 三部 3333 NULL NULL NULL NULL
4 四部 4444 NULL NULL NULL NULL
NULL NULL NULL 4 NULL 三部D君 男
--笛卡尔积
select * from t_emp,t_dept
select * from t_dept,t_emp
--返回16条数据,左表有4条,右表有4条,返回行数为4*4=16(条),产生笛卡尔积
1 一部 1111 1 1 一部A君 男
2 二部 2222 1 1 一部A君 男
3 三部 3333 1 1 一部A君 男
4 四部 4444 1 1 一部A君 男
1 一部 1111 2 1 一部B君 男
2 二部 2222 2 1 一部B君 男
3 三部 3333 2 1 一部B君 男
4 四部 4444 2 1 一部B君 男
1 一部 1111 3 2 二部C君 女
2 二部 2222 3 2 二部C君 女
3 三部 3333 3 2 二部C君 女
4 四部 4444 3 2 二部C君 女
1 一部 1111 4 NULL 三部D君 男
2 二部 2222 4 NULL 三部D君 男
3 三部 3333 4 NULL 三部D君 男
4 四部 4444 4 NULL 三部D君 男
最后,欢迎访问风格清新简洁的轻博客网站[指尖一刻]
- SQL里各种联合查询总结
- SQL里各种联合查询总结
- 关于sql联合查询
- Sql联合查询
- Sql联合查询
- Sql联合查询
- Sql联合查询
- sql 联合查询
- SQL联合查询
- sql联合查询
- sql联合查询详解
- SQL联合查询简介
- SQL 联合查询
- sql简单联合查询
- SQL中的联合查询
- sql联合查询
- SQL Server联合查询
- SQL Server联合查询
- 简单口令入侵
- 在OpenCL中实现浮点数的原子加法运算(atomic add for floating point in OpenCL)
- MyEclipse优化 --终极优化--
- 一些我所常用的shell命令用法
- 绿色版NotePad++添加右键关联
- SQL里各种联合查询总结
- 使用token拦截器组织重复提交的问题
- 在IBM-Unix和HP-Unix上启动和停止Oracle数据库
- 存贮byte[]
- java.net.SocketException: Too many open files
- 优化Dalvik虚拟机的堆内存分配
- 利用Android UncaughtExceptionHandler捕获崩溃异常
- 网页PNG透明支持
- MessageBox.Show()