SQL

来源:互联网 发布:新浪页游助手mac版 编辑:程序博客网 时间:2024/05/17 22:51
传统的集合运算
  1. 并(Union)
  2. 笛卡尔积

专门的关系运算
  1. 选择
  2. 投影
  3. 连接
  4. 除运算
连接:等值连接、自然连接、外连接
外连接
    左外连接(LEFT OUTER JOIN 或 LEFT JOIN)
            保留左边的NULL,舍弃右边NULL
    右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN)
            保留右边的NULL,舍弃左边NULL



DISTINCT
两个本来并不完全相同的元组,投影到指定的某些列上后,可能就变成相同的行了,可以用DISTINCT来取消重复的行。


ORDER BY子句
1.对于空值NULL,若按升序排序,含空值的元组将最后显示。若按降序排,则最先显示。
2.子查询的SELECT语句中不能使用ORDER BY子句,只能对最终查询结构排序。


GROUP BY子句
GROUP BY子句将查询结果按某一列或多列分组,值相等的为一组。
对查询结构分组的目的:是为了细化聚集函数的作用对象。如果未对聚集函数分组,聚集函数将作用于整个查询结果。分组后的聚集函数将作用于每一个组,即每一个组都有一个函数值。

where子句与Having的区别在于作用的对象不同。where作用于表或视图,从中选择满足条件的元组。HAVING作用于组,从中选择满足条件的组
连接查询
一、等值与非等值连接查询

二、自身连接

三、外连接

四、复合条件查询


嵌套查询

不相关子查询:子查询的查询条件不依赖于父查询
相关子查询:    子查询的查询条件依赖于父查询

一、带有IN的子查询


二、带有比较运算符的子查询


三、带有ANY(SOME)或ALL的子查询
事实上,用聚集函数实现子查询通常比直接使用ANY或ALL查询效率要高。

四、带有EXISTS的子查询
1.带有EXSITS谓词的子查询不返回任何数据,只产生逻辑真true或逻辑假false。
2.一些带有EXSISTS或NOT EXSISTS谓词的子查询不能被其它形式的子查询替换,但带有IN、比较运算符、ANY和ALL谓词的子查询都能用带EXSISTS谓词的子查询替换。


在实际应用中,应该尽量不要使用嵌套子查询技术,因为嵌套的层次越多,其查询性能越低。推荐使用表连接的方式


0 0
原创粉丝点击