SQL SERVER 系列(6)子查询、多表操作、联合

时间:2022-06-01 18:26:45
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 网络班

 

 

本篇文章又要到了画句号的时候,本片文章讲的都是对多个表进行操作的的内容,灵活运用对多表的操作将大大提高工作效率。