2016年6月18日
18:16
Main SQL 增删改查
1.SQL 核心内容
DDL(Data Definition Language)数据定义语言
Query Language 数据查询语句
DML(Data Manipulation language)数据操纵语言
DCL(DataControl language)数据控制语言
2.Queries 查询
Single-relation queries 单表查询
Multi-relation queries 多表查询
Subqueries 子查询
Grouping and Aggregation 分组和聚集
3.Select-From-Where Statements
语句格式:
SELECT [ ALL | DISTINCT ] <目标列表达式> [ ,<目标列表达式> ]…
FROM <表名或视图名> [ ,<表名或视图名> ]…
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ASC|DESC]]
解释:(1)上面中括号中的内容为选择内容,可以有也可以没有,注意前面有一个逗号"," ;
(2)WHERE语句里面不能有集函数,同时WHERE语句可以省略;
(3)GROUP BY 语句用来进行分组,后面的HAVING 语句可以包括集函数,用来进行判断;
(4)ORDER BY语句用来进行排序,排序操作实际上是在查询结束之后进行的,默认为ASC 递增排序,也可以选择DESC为递减排序;
(5)SQL查询语句对字母大小写不敏感,因此Select 和SELECT均可以被识别,不过建议使用大写;
(6)GROUP BY语句应该在WHERE语句之后,其实GROUP BY语句应该在查询语句的最后面,由于ORDER BY语句不属于查询语句了,因此可以放在ORDER BY 之前;
(7)尽管SELECT语句放在查询语句的最前面但是其执行为最后的,也就是在GROUP BY语句之后,因此在GROUP BY语句内不能使用SELECT 语句里面的别名;
(8)SELECT 语句中的ALL 与DISTINCT对应的是:查询结果保留重复、查询结果不包括重复;
(9)SELECT 语句是用来选择属性列,不过可以使用* 操作符可以选择出表中的所有属性列。
3.Single-Relation Queries 单表查询
单表查询相对于多表查询属于最基本的查询操作。
可以在SELECT语句中选择结果表的属性列以及使用别名甚至使用集函数、由于表只有一个因此在FROM语句中只要写上表名即可、在WHERE语句中可以使用AND关键字来进行多项判断和筛选、在GROUP BY语句中可以选择某一个属性列进行分组、在ORDER BY语句进行排序选择。
举例说明:
Range comparison:between
使用谓词: BETWEEN…AND…大于等于并且小于等于
NOT BETWEEN …AND…
Set operator: in
使用谓词 IN <值表>, NOT IN <值表>
Patterns 字符串匹配问题
使用关键字Like
% = “any string”; _ = “any character.”
4.三种逻辑值 TRUE = 1 , FALSE = 0 , UNKNOWN = 1/2
AND = MIN ; OR = MAX ; NOT(x) = 1-x
NULL 空值比较特殊,需要特别对待
5.Aggregation 集函数
SUM求和函数、AVG求平均值函数、COUNT计数函数、MIN最小值函数、MAX最大值函数、COUNT(*)元组个数
6.Grouping 分组
举例:
7.HAVING 字句
8.Multi-Relation Queries 多表查询
9.Subqueries 子查询
子查询返回一个结果表Subqueries that return one Tuple
通常该返回表只有一个属性列Usually, the tuple has one component
如果不止一个属性列则会产生运行时错误A run-time error occurs if there is no tuple or more than one tuple
子查询中不可以使用ORDER BY
带有IN的子查询:循环元组,当该元组的值在返回表中时输出到结果表中
带有EXISTS谓词的子查询
举例:
10.ANY and ALL Operator