Sql内连接、左连接和右连接语句实例
为了减少冗余,不同方面的数据往往存储在不同的表里,为了取得两个或两个以上表格的数据,就必须把相关的表格连接起来,完成此任务就要使用连接查询。常用的连接查询通常有内连接、左连接和右连接。
比如有两个表格,分别是员工表(Employee)和产品表(Product)。
员工表(Employee)为:
id Name Sex Department
1 李青云 男 生产部
2 王婉媗 女 生产部
3 秦月海 男 生产部
4 黄玉岚 女 生产部
产品表(Product)为:
id Name ProductDate Employee_Id
1 ct电容 2011-10-15 2
2 dp电容 2011-10-16 1
3 sc电容 2011-10-17 3
4 si电容 2011-10-16 0
5 pi电容 2011-10-18 0
1、内连接
内连接是要选出两个表中具有交集的所有记录。比如,列出员工及其所生产的产品的详细信息:
Select e.*,p.* From Employee As e Inner Join Product As p On e.id = p.Employee_Id
查询结果:
id Name Sex Department id Name ProductDate Employee_Id
1 李青云 男 生产部 2 dp电容 2011-10-16 1
2 王婉媗 女 生产部 1 ct电容 2011-10-15 2
3 秦月海 男 生产部 3 sc电容 2011-10-17 3
从查询结果可能看出,员工表的第4条记录和产品表中的第4、5条记录由于没交集,所以没有被列出。
2、左连接
左连接是选出所有左表中有的记录,不管右表有没有。比如,列出所有员工详细信息,及其所生产的产品:
Select e.*,p.* From Employee As e Left Join Product As p On e.id = p.Employee_Id
查询结果:
id Name Sex Department id Name ProductDate Employee_Id
1 李青云 男 生产部 2 dp电容 2011-10-16 1
2 王婉媗 女 生产部 1 ct电容 2011-10-15 2
3 秦月海 男 生产部 3 sc电容 2011-10-17 3
4 黄玉岚 女 生产部 Null Null Null Null
查询结果显示,员工表中所有记录都列出了,第4条记录在产品表中没有对应的记录,所有值用 Null 代替。
3、右连接
右连接与左连接相反,是选出所有右表中有的记录,不管左表有没有。比如,列出所有产品详细信息,及其生产员工:
Select e.*,p.* From Employee As e Right Join Product As p On e.id = p.Employee_Id
查询结果:
id Name Sex Department id Name ProductDate Employee_Id
1 李青云 男 生产部 2 dp电容 2011-10-16 1
2 王婉媗 女 生产部 1 ct电容 2011-10-15 2
3 秦月海 男 生产部 3 sc电容 2011-10-17 3
Null Null Null Null 4 si电容 2011-10-16 0
Null Null Null Null 5 pi电容 2011-10-18 0
从查询结果可以得知,产品表中所有记录都列出了,第4、5条记录在员工表中没有对应的记录,所有值用 Null 代替。