子查询、联合查询和连接查询

迈不过友情╰ 2024-02-18 19:27 165阅读 0赞

1.子查询

 查询中嵌套查询。

如  select * from (

   select CName,CId from TblClass
    union
   select DName,DId from Department
   ) as t1

   order by cname

2.联合查询

将多个结果集合并成一个结果集,前提是列数相同,并且相应的列的类型相同。判断标准以第一个表的结果集为准。

执行结果集的特点:结果集的列名以第一个为准;

 如上面的语句的结果集为在第一个表的基础上,插入第二个表的数据。列数和原来一致,只增加行数。

使用union关键字

  自动排序、消除重复项

使用union all关键字

   不自动排序,也不消除重复项 

3.连接查询

做多个表的数据查询。有时,结果集中的数据被包含在多个表中,则需要使用连接查询。

第一种:内连接 inner join….on或join….on

匹配两张表中都有的数据

select tClassName,tSName

from TblClass

inner join TblStudent on TblClass.tClassId = TblStudent.tSClassId

select tClassName,tSName

from TblClass ,TblStudent

where TblClass.tClassId = TblStudent.tSClassId

只有两张表中的数据符合on条件,才会显示结果中。

第二种:外链接 left(outer) join..on , right(outer) join..on和full join.on

(1)left join ….on :左表中的信息全部出现,右表中的信息必须能够匹配的才出现
  未匹配的项使用null填充

假设有A,B两张表

select * from A left (outer) join B on A.id = B.id;

select * from A ,B where A.id = B.id(+)

(2)right join …on:右表中的信息全部出现,左表中的信息必须能够匹配的才出现

  未匹配的项使用null填充

select * from A right (outer) join B on A.id = B.id;

select * from A,B where A.id(+) = B.id;

(3)full join…on:所有数据都会出现,不匹配的项使用null填充
  只要想做连接查询,必须分析出两个表间的关系

select * from A full join B on A.id = B.id;

发表评论

表情:
评论列表 (有 0 条评论,165人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql 连接查询查询

    连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等。通过连接运算符可以实现多个表查询。在关系数据库管理系统中,表建立时各数据之间...

    相关 连接查询查询

    定义   区别 子查询会多次遍历所有的数据(视你的子查询的层次而定),而连接查询只会遍历一次。     效率比较 在网上查了下资料,并自己对比了一下,发现在数据量比