sql一些总结

1. 连接查询:执行过程:采用表扫描的方法,在表1中找到第一个元组,然后从头开始扫描表2,查找到满足条件的元组即进行串接并存入结果表中;再继续扫描表2,依次类推,直到表2末尾。再从表1中取第二个元组,重复上述的操作,直到表1中的元组全部处理完毕

  在子查询中不允许使用order by子句

  嵌套查询的实现一般是从里到外,即先进行子查询,再把其结果用于父查询作为条件

2.having 与 where的区别

where 决定哪些元组被选择参加运算,作用于关系中的元组

having 决定哪些分组符合要求,作用于分组

3.带有exists的相关子查询 

  exists表示存在量词,带有exists的子查询不返回任何记录的数据,只返回逻辑值“True” 或“False”

  相关子查询执行过程:先在外层查询中取student表的第一个元组(记录),用该记录的相关的属性值(在内层where子句中给定的)处理内层查询,若外层的where子句返回‘TRUE’值,则此元组送入结果的表中。然后再取下一个元组;重复上述过程直到外层表的记录全部遍历一次为止。

  exists + 子查询用来判断该子查询是否返回元组

  当子查询的结果集非空时,exists 为“True”;当子查询的结果集为空时,exists为“False”。

  not exists :若子查询结果为空,返回“TRUE”值,否则返回“FALSE”

 

posted @ 2017-03-29 08:53  methink静静  阅读(97)  评论(0编辑  收藏  举报