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”