SQL SERVER 系列(6)子查询、多表操作、联合
当我们对数据库进行操作的时候经常会遇到对多个表操作的情况,这时我们必须要用到一些特殊的操作,下面来看一看具体的内容。
 
子查询:
首先来看一下子查询,所谓的子查询就是一个查询语句在嵌套一个查询语句。
关于子查询这里需要注意两点:
1:内层查询必须使用()括起来。
2:在执行的时候,先执行内层查询,得到结果后将此结果返回给外层查询,最后再执行外层查询。
下面来看两个实例以便我们更好的理解。
实例1:显示a表和b表中都有的员工信息
select * from a where 姓名 in (select 姓名 from b)
实例2:显示a表中有b表中没有的员工信息
select * from a where 姓名 not in (select * from b)
 
多表操作:
 
来说一下多表连接的方法。有两种方法笛卡尔乘积和join on连接。下面详细的介绍这两种连接方法。
1:笛卡尔乘积(交叉连接)
语法:
Select 字段名列表 from 表名1,表名2 …… [where条件]
(默认产生的记录总数=两个数记录乘积)
实例:显示员工表和公司表中员工的正确信息
select 员工表.姓名,性别,年龄,公司名称,地址 from 员工表,公司表 where 员工表.姓名=公司表.姓名
2join in连接
Join on连接可以分为一下几种连接:
内连接:inner join 必须是满足条件的记录
左外连接:left join 显示左表所有的记录,如果右表没有与之相对应记录则相应字段为空
右外连接:right join显示右表所有的记录,如果左表没有与之相对应记录则相应字段为空
全外连接:显示所有记录,如果另一个表中没有与之相应得记录,则相应字段为空
 
内连接语法:
Select 字段名列表 from 表名1 inner join 表名2 on 条件
实例:以内连接显示员工表和公司表的正确信息
select 员工表.姓名,性别,年龄,公司名称,地址 from 员工表 inner join 公司表 on 员工表.姓名=公司表.姓名
 
左外连接语法:
Select 字段名列表 from 表名1 left join 公司表 on 条件
实例:用左外连接显示员工表和公司表的信息
右外连接和左外连接用法本质是一样的在这就不多介绍,按着葫芦画瓢就OK了。
 
全外连接:
现在看全外连接我们通过个实例来了解它。
实例:用全外连接显示三个表的数据
select 员工表.姓名,性别,年龄,公司名称,地址,网址 from 员工表 full join 公司表 on 员工表.姓名=公司表.姓名 full join 网址表 on 公司表.公司名称=网址表.公司名  
 
好了多表操作就说这些了。
 
联合:
联合的作用是显示几个表的内容在一个表上。
注意:
1:每个select语句字段必须要一致
2:如果字段名不同,则以第一个select语句为准
3要合并的数据类型必须兼容,即类型可以不同,但必须可以转换
实例:显示软件班和网络班的信息在一个表上
select * from 软件班 union select * from 网络班
·重复的记录只显示一条,如果显示所有要用:all,例如上面的实例要显示全部则改为:
select * from 软件班 union all select * from 网络班
 
 
本篇文章又要到了画句号的时候,本片文章讲的都是对多个表进行操作的的内容,灵活运用对多表的操作将大大提高工作效率。