SQL语言功能非常强大,但由于设计巧妙,语言十分简洁,完成核心功能只用了9个动词,分别是完成数据查询功能的
SELECT,完成数据定义功能的
CREATE、
DROP、和
ALTER,完成数据操作功能的
INSERT、
UPDATE和
DELETE以及完成数据控制功能的
GRANT和
REVOKE。
(1)基本表建立:
CREATE TABLE<表名>(<列名><数据类型>[完整性约束条件]
[,<列名><数据类型>[完整性约束条件] ]
...
[表级完整性约束条件])
(2)基本表的修改和删除。
在表中增加新的列:
ALTER TABLE <表名> ADD [COLUMN] <列名><数据类型>[完整性约束]
其中COLUMN是可选保留字,表示增加的是一个列。
删除表中已有的列:
ALTER TABLE <表名> DROP [COLUMN] <列名> [RESTRICT | CASCADE]
RESTRICT
表示如果存在应用该索引的视图、约束等对象,则禁止删除该列,CASCADE表示系统在删除列的同时会自动将视图、约束等一并删除。
删除已有列的定义:
ALTER TABLE <表名> MODIFY <列名><数据类型>
删除表中已有的完整性约束条件:
ALTER TABLE <表名> DROP CONSTRAING <> [RESTRICT | CASCADE]
(3)索引的建立和删除
索引功能类似于图书的目录,是一种可以有效提高数据访问速度的存储路径。基本表的所有者或数据库管理员(DBA)可以根据数据访问的需要在表上建立一个或多个索引,每一个索引有可以建立在一个或多个属性之上。
建立索引:
CREATE [COLUMN] [CLUSTER] INDEX <索引名> ON <表名>(<列名> [ASC | DESC] [,<列名> [ASC | DESC]])
删除索引:
DROP INDEX <索引名>
(4)模式的建立和删除
建立模式:
CREATE SCHEMA <模式名> AUTHORITATION <所有者 ID>
[创建基本表语句]
[创建视图语句]
[创建授权语句]...
删除模式:
DROP SCHEMA <模式名> [RESTRICT | CASCADE]
(5)查询
SELECT [ALL | DISTRINCT] <目标列表达式> [,<目标列表达式>] ...
FROM <表名或视图名> [,表名或视图名] ...
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING]<条件表达式>]
[ORDER BY <列名2> [ASC | DESC]]
整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中寻找满足条件的元组,再按SELECT目标列子句中的“目标列表达式”,选择出元组中的属性值形成结果表。如果有GROUP子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一组。如果GROUP子句带HAVING短语,则只有满足条件的组才输出。如果有ORDER子句,则结果表还要按<列名2>的值得升序或降序排序。SELECT语句即可完成简单的单表查询。
(6)数据更新。
插入数据:SQL的数据插入语句INSERT通常有两种形式。一种是插入一个元组,另一种是插入子查询结果。
插入单个单元:
INSERT INTO <表名> [(<属性列1> [,<属性列2>]...)]
VALUES(<常量1>[,<常量2>]...)
插入子查询结果:
INSERT INTO <表名> [(<属性列1> [,<属性列2>]...)]
子查询
修改数据:
UPDATE <表名> SET <列名> = <表达式>[,<列名>=<表达式>]...
[WHERE <条件>]
其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句给出的<表达式>的值用于取代相应的属性列值。
如果省略WHERE子句,则表示要修改表中的所有元组。
删除数据:
DELETE FROM <表名> [WHERE <条件>]
DELETE 语句的功能是从指定表中删除满足WHERE 子句条件的所有元组。如果省略WHERE子句,则表示要删除表中的全部元组,当表的定义仍在字典中。也就是说,DELETE语句删除的是表中的数据,而不关乎表的定义。