你的位置:首页 > 数据库

[数据库]数据库复习⑥


数据库复习⑥

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语句进行排序选择。

举例说明:

 clip_image002

clip_image004

clip_image006

clip_image008

clip_image010

clip_image012

Range comparison:between

使用谓词: BETWEEN…AND…大于等于并且小于等于

NOT BETWEEN …AND…

Set operator: in

使用谓词 IN <值表>, NOT IN <值表>

clip_image014

Patterns 字符串匹配问题

使用关键字Like

% = “any string”; _ = “any character.”

clip_image016

4.三种逻辑值 TRUE = 1 , FALSE = 0 , UNKNOWN = 1/2

AND = MIN ; OR = MAX ; NOT(x) = 1-x

NULL 空值比较特殊,需要特别对待

clip_image018

clip_image020

5.Aggregation 集函数

SUM求和函数、AVG求平均值函数、COUNT计数函数、MIN最小值函数、MAX最大值函数、COUNT(*)元组个数

clip_image021

clip_image023

6.Grouping 分组

举例:

clip_image025

clip_image026

7.HAVING 字句

clip_image028

8.Multi-Relation Queries 多表查询

clip_image030

clip_image031

clip_image032

clip_image034

clip_image035

clip_image037

clip_image039

clip_image040

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谓词的子查询

clip_image042

clip_image044

举例:

clip_image048

clip_image050

10.ANY and ALL Operator

clip_image052

clip_image054

clip_image056