一.数据定义更删改
1.模式的定义与删除
- 定义子模式
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句>
|<视图定义子句>
|<授权定义子句>]
- 删除子模式
DROP SCHEMA <模式名><CASCADE|RESTRICT>
2.基本表的定义更删改
- 定义基本表
CREATE TABLE <TABLE_NAME> (列名 数据类型 [列级约束条件]),
(列名 数据类型 [列级约束条件])
.........
[表级完整性约束条件]
常见约束:PRIMARY KEY, UNIQUE, NOT NULL, FOREIGN KEY REFERENCES 等
- 修改基本表
ALTER TABLE <TABLE_NAME>
[ADD <COLUMN> <NEW_COL_NAME> <DATA_TYPE> <CONSTRAINT>]---新建属性|列
[ADD <TABLE_CONSTRAINT>]----新增表级完整性约束
[DROP <COLUMN> <COL_NAME> [CASCADE|RESTRICT]----删除列|属性
[DROP CONSTRAINT <CONT_NAME> [CASCADE|RESTRICT]----删除完整性约束
[DROP COLUMN <COL_NAME> <DATA_TYPE>]-----修改数据类型
- 删除基本表
DROP TABLE <TABLE_NAME> [RESTRICT|CASCADE]
3.索引的建立更删改
- 建立索引
CREATE [UNIQUE|CLUSTER] INDEX <INDEX_NAME>
ON <TABLE_NAME> <COLNAME ASC|DESC>
<COLNAME ASC|DESC>
<COLNAME ASC|DESC>
...
- 修改索引
ALTER INDEX <OLDINDEX_NAME> RENAME TO <NEWINDEX_NAME>
- 删除索引
DROP INDEX <INDEX_NAME>
二.数据查询
SELECT [ALL|DISTINCT] <COL_NAME>,<COL_NAME>,...
FROM <TABLE_NAME | VIEW_NAME>,<TABLE_NAME | VIEW_NAME>,...
[WHERE <CONDITION>]
[GROUP BY <COL_NAME>] [HAVING <CONDITION>]
[ORDER BY <COL_NAME> <DESC | ASC>]
数据更新
插入数据
INSERT
INTO <TABLE_NAME> <COL_NAME>,<COL_NAME>,...
VALUES (V1, V2, V3, ...)
INSERT
INTO <TABLE_NAME> <COL_NAME>,<COL_NAME>,...
子查询
修改数据
UPDATE <TABLE_NAME>
SET <COL_NAME1>=<表达式>,<COL_NAME2>=<表达式>,...
[WHERE <CONDITION>]
删除数据
DELETE
FROM <TABLE_NAME>
[WHERE <CONSITION>]
删除符合条件的元组
视图
建立视图
CREATE VIEW <VIEW_NAME> <COL_NAME>,<COL_NAME>,...
AS
<子查询>
[WITH CHECK OPTION]
删除视图
DROP VIEW <VIEW_NAME> [CASCADE]
查询视图=查询基本表
授权:授予与收回
1.GRANT
GRANT <权限>,<权限>,...
ON [<TYPE><NAME>],[<TYPE><NAME>],...
TO USER1,USER2,...
[WITH GRAND OPTION]
2.REVOKE
REVOKE <权限>,<权限>,...
ON [<TYPE><NAME>],[<TYPE><NAME>],...
FROM USER1,USER2,.... [CASCADE | RESTRICT]
3.创建数据库模式权限
CREATE USER <USERNAME> [WITH DBA|RESOURCE|CONNECT]
数据库角色
创建角色
CREATE ROLE <ROLE_NAME>
授权
GRANT <权限1>,<权限2>,...
ON [<TYPE><NAME>]
TO <ROLE1>,<ROLE2>,...
角色授权其他用户
GRANT <ROLE1>,<ROLE2>...
TO <ROLE1>,<ROLE2>,...
[WITH ADMIN OPTION]
权限的回收
REVOKE <权限1>,<权限2>,...
ON [<TYPE><NAME>]
FROM <ROLE1>,<ROLE2>,...
#### 触发器
```sql
CREATE TRIGGER <TRIGGER_NAME>
{BEFORE | AFTER} <触发事件> ON <TABLE_NAME>
REFERENCING NEW|OLD ROW AS <变量>
FOR EACH {ROW | STATEMENT}
WHEN(触发条件)
{动作体}