SQL语法基础总结

SQL语法基础

SQL动词与对应的SQL功能:
数据定义 CREATE,DROP,ALTER
数据查询 SELECT
数据操纵 INSERT,UPDATE,DELETE
数据控制 GRANT,REVOKE

一、数据定义

1、模式定义;

(1)定义模式

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>

(2)删除模式

DROP SCHEMA <模式名> <CASCADE|RESTRICT>;

2、表定义;

(1)定义基本表

CREATE TABLE <表名><列名> <数据类型> [列级完整性约束]
[,<列名> <数据类型> [列级完整性约束]]
[表级完整性约束]
......;

(2)修改基本表

ALTER TABLE <表名>
[ADD [COLUMN] <新列名><数据类型>[完整性约束]]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束名称>[CASCADE|RESTRICT]]
[ALTER COLUMN <列名><数据类型>]

(3)删除基本表

DROP TABLE <表名>[CASCADE|RESTRICT];

3、索引定义;

(1)定义索引

CREATE [UNIQUE][CLUSTER] INDEX<索引名>
ON <表名><列名> [<次序>][,列名 [<次序>]]...

(2)修改索引

ALTER INDEX<旧索引名>RENAME TO<新索引名>

(3)删除索引

DROP INDEX <索引名>

4、视图定义。

(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、插入数据

(1)插入元组

INSERT
INTO <表名>[<属性列名1>[,<属性列名2>]...]
VALUES(<常量1>[<,常量2>]...)

(2)插入子查询结果

INSERT
INTO<表名>[<属性列名1>[,<属性列名2>]...]
子查询;

2、删除数据

DELETE
FROM <表名>
[WHERE<条件>]

3、更新数据

UPDATE <表名或视图名>
SET<列名>=<表达式>[,<列名>=<表达式>]...
[WHERE <条件>]

注意:并不是所有视图都是可更新的,行列子集视图一般是可更新的。除行列子集视图外,有些视图理论上也是可更新的。

四、数据控制

1、授权

GRANT <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
TO <用户>[,<用户>]...
[WITH GRANT OPTION];

2、权限收回

REVOKE <权限>[,<权限>]...
ON <对象类型><对象名>[,<对象类型><对象名>]...
FROM <用户>[,<用户>]...[CASCADE|RESTRICT];

注意:以上SQL基础语句中:
< >——里面的为必填项;
[ ]——里面的为选填项。

你可能感兴趣的:(SQL,sql)