SQL动词与对应的SQL功能:
数据定义 CREATE,DROP,ALTER
数据查询 SELECT
数据操纵 INSERT,UPDATE,DELETE
数据控制 GRANT,REVOKE
(1)定义模式
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;
(2)删除模式
DROP SCHEMA <模式名> <CASCADE|RESTRICT>;
(1)定义基本表
CREATE TABLE <表名>
(<列名> <数据类型> [列级完整性约束]
[,<列名> <数据类型> [列级完整性约束]]
[表级完整性约束]
......
);
(2)修改基本表
ALTER TABLE <表名>
[ADD [COLUMN] <新列名><数据类型>[完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束名称>[CASCADE|RESTRICT]]
[ALTER COLUMN <列名><数据类型>];
(3)删除基本表
DROP TABLE <表名>[CASCADE|RESTRICT];
(1)定义索引
CREATE [UNIQUE][CLUSTER] INDEX<索引名>
ON <表名>(<列名> [<次序>][,列名 [<次序>]]...)
(2)修改索引
ALTER INDEX<旧索引名>RENAME TO<新索引名>;
(3)删除索引
DROP INDEX <索引名>;
(1)定义视图
CREATE VIEW <视图名>[(<列名>[,<列名>]...)]
AS<子查询>
[WITH CHECK OPTION];
注意:视图列名要么全部定义,要么全部省略。
(2)删除视图
DROP VIEW <视图名>[CASCADE];
SELECT [DISTINCT|ALL] <目标列表达式>[,<目标列表达式>]...
FROM <表名或视图名> [AS] [<别名>][,<表名或视图名>
[AS] [<别名>]...]
[WHERE [条件表达式]]
[GROUP BY <列名>[HAVING<条件表达式>]]
[ORDER BY<列名>[ASC|DESC]];
/*基于派生表的查询*/
SELECT [DISTINCT|ALL] <目标列表达式>[,<目标列表达式>]...
FROM <表名或视图名>, (<SELECT语句>)[AS]<表别名>
[WHERE [条件表达式]]
[GROUP BY <列名>[HAVING<条件表达式>]]
[ORDER BY<列名>[ASC|DESC]];
注意:
1、基于派生表的查询,AS可以省略,但是必须为表指别名;
2、对于派生表的属性列根据SELECT中有无聚集函数的使用情况决定,当SELECT语句中无聚集函数的使用时可以无需指明属性列名,反之,必须指定属性列名。
(1)插入元组
INSERT
INTO <表名>[(<属性列名1>[,<属性列名2>]...)]
VALUES(<常量1>[<,常量2>]...)
(2)插入子查询结果
INSERT
INTO<表名>[(<属性列名1>[,<属性列名2>]...)]
子查询;
DELETE
FROM <表名>
[WHERE<条件>];
UPDATE <表名或视图名>
SET<列名>=<表达式>[,<列名>=<表达式>]...
[WHERE <条件>];
注意:并不是所有视图都是可更新的,行列子集视图一般是可更新的。除行列子集视图外,有些视图理论上也是可更新的。
GRANT <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
TO <用户>[,<用户>]...
[WITH GRANT OPTION];
REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户>]...[CASCADE|RESTRICT];
注意:以上SQL基础语句中:
< >——里面的为必填项;
[ ]——里面的为选填项。