等价的转换关系
| 谓词 |
语义 |
等价转换关系 |
| >ANY |
大于子查询结果中的某个值 |
>MIN |
| >ALL |
大于子查询结果中的所有值 |
>MAX |
| 小于子查询结果中的某个值 |
| |
| 小于子查询结果中的所有值 |
| |
| >=ANY |
大于等于子查询结果中的某个值 |
>=MIN |
| >=ALL |
大于等于子查询结果中的所有值 |
>=MAX |
| <=ANY |
小于等于子查询结果中的某个值 |
<=MAX |
| <=ALL |
小于等于子查询结果中的所有值 |
<=MIN |
| <>ANY |
不等于子查询结果中的某个值 |
- |
| <>ALL |
不等于子查询结果中的任何一个值 |
NOT IN |
| =ANY |
等于子查询结果中的某个值 |
IN |
| =ALL |
等于子查询结果中的所有值 |
- |
?
6.分组查询
?
1)GROUP BY 子句
?
在 WHERE 子句后面加上 GROUP BY 子句可以对元组进行分组,保留字 GROUP BY 后面跟着一个分组属性的列表。最简单的情况是,FROM 子句后面只有一个关系,根据分组属性对它的元组进行分组。SELECT 子句中使用的聚集操作符仅用在每个分组上。
?
2)HAVING 子句
?
假如元组在分组前按照某种方式加上限制,使得不需要的分组为空,可以在GROUP BY子句后面跟一个HAVING 子句即可。
?
注意,当元组含有空值时,需要注意:
?
第一,空值在任何聚集操作中被忽视。它对求和、求平均值和计数都没有影响。它也不能是某列的最大值或最小值。
?
第二,NULL值又可以在分组属性中看做是一个一般的值。
?
7.更名运算
?
SQL 提供可为关系和属性重新命名的机制,这是通过使用具有如下形式的 AS 子句来实现的
Old-name AS new-name
?
AS 子句即可出现在SELECT 子句,也可出现在 FROM 子句中。
?
8.字符串操作
?
对于字符串进行的最通常的操作是使用操作符 LIKE 的模式匹配。使用两个特殊的字符来描述模式:“%”匹配任意字符串;“_”匹配任意一个字符。模式是大小写敏感的。
?
“__”匹配只含两个字符的字符串;“_%”匹配至少包含两个字符的字符串。
?
为了使模式中包含特殊模式字符(即%和_),在SQL中允许使用 ESCAPE 关键词来定义转义符。转义字符紧靠着特殊字符,并放在它的前面,表示该特殊字符被当成普通字符。例如使用反斜杠“\”作为转义符。
?
LIKE 'ab\%cd%' ESCAPE '\'//匹配所有以ab%cd开头的字符串
LIKE 'ab\\cd%' ESCAPE '\'//匹配所有以ab\cd开头的字符串
?
9.视图的查询
?
系统执行视图查询语句时,通常先将其转换成等价的对基本表的查询,然后执行查询语句。即当查询视图时,系统先从数据字典中取出该视图的定义,然后将定义中的查询语句和对该视图的查询语句结合起来,形成一个修正的查询语句。
?
SQL数据更新
?
1.插入语句
?
要在关系 数据库中插入数据,可以指定被插入的元组,或者用查询语句选出一批待插入的元组。语句格式:
?
INSERT INTO <基本表名> [(字段名[,字段名]...)]
? ?VALUES (常量[,常量]...);
?
INSERT INTO <基本表名> (字段名[,字段名]...)
? ?SELECT 查询语句;
?
2.删除语句
?
语句格式:
?
DELETE FROM <基本表名>
[WHERE 条件表达式];
?
3.修改语句
?
语句格式:
?
UPDATE <基本表名>
SET <列名>=<值表达式>[,<列名>=<值表达式>...]
[WHERE <条件表达式>];
?
SQL的访问控制
?
访问控制是指对数据访问数据的控制,有授权语句和收回权限语句。
?
1.授权的语句格式
?
GRANT <权限> [,<权限>]...
[ON <对象类型><对象名>]
TO <用户> [,<用户>]...
[WITH GRANT OPTION];
?
注意:不同类型的操作对象有不同的操作权限,常见的操作权限见表4。
表4 常见的操作权限
| 对象 |
对象类型 |
操作权限 |
| 属性列 |
TABLE |
SELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGES(四种权限的总和) |
| 视图 |
TABLE |
SELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGES(四种权限的总和) |
| 基本表 |
TABLE |
SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX, ALL PRIVILEGES(六种权限的总和) |
| 数据库 |
DATABASE |
CREATEAB 建立表的权限,可由 DBA 授予普通用户 |
?
说明:
?
接受权限的用户可以是单个或者多个具体的用户,也可以是 PUBLIC, 即全体用户。
?
若指定了 WITH GRANT OPTION 子句,则获得了某种权限的用户还可以将此权限赋给其他用户。
?
2.收回权限语句格式
?
REVOKE <权限> [,<权限>]...
[ON <对象类型> <对象名>]
FROM <用户> [,<用户>]...;
|