SQL(Structured Query Language),结构化查询语言,是现行关系数据库的标准语言,SQL不单支持数据查询(Data Query)功能,还支持数据定义(Data Definition)、数据操纵(Data Manipulation)和数据控制(Data Control)功能。
0 关键词
1 SQL基本动词
功能 | 动词 |
---|---|
数据定义 | CREATE, DROP, ALTER |
数据查询 | SELECT |
数据操纵 | INSERT, UPDATE, DELETE |
数据控制 | GRANT, REVOKE |
2 数据定义
创建 | 删除 | 修改 | |
---|---|---|---|
模式 | CREATE SCHEMA | DROP SCHEMA | - |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | - |
索引 | CREATE INDEX | DROP INDEX | - |
2.1 模式
2.1.1 定义模式
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
注意:模式的定义需要DBA权限或者DBA授予的CREATE SCHEMA权限。
2.1.2 删除模式
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
- CASCADE:级联。在删除模式时,将会将该模式下的所有数据库对象全部删除,比如定义在该模式下的基本表、视图等。
- RESTRICT:限制。若要删除的模式下已经定义了数据库对象,则对该模式的删除操作会被系统拒绝。
2.2 基本表
2.2.1 定义基本表
CREATE TABLE <表名> ( <类名> <数据类型> [列级完整性约束条件], …)
2.2.2 修改基本表
ALETER TABLE <表名>
[ ADD <新的列名> <数据类型> [完整性约束条件]]
[ DROP <完整性约束条件名> ]
[ ALTER COLUMN <列名> <数据类型> ]
2.2.3 删除基本表
DROP TABLE <表名> [ CASCADE | RESTRICT ]
- CASCADE:级联。级联删除将删除该基本表和依赖于该基本表的所有对象,例如视图等。
- RESTRICT:限制。当该基本表存在被其他表的约束所引用、存在依赖于该基本表的视图、存在触发器、储过程或函数等情况下,该基本表将不能被删除。
2.3 索引
2.3.1 建立索引
CREATE [ UNIQUE ] [ CLUSTER ] INDEX <索引名> ON <表名> ( <列名> [<次序>] [,<列名>[<次序>] ]… )
- 表名:要建立索引的基本表的名字。
- 次序:ASC(升序)或者DESC(降序)默认值为ASC。
- UNIQUE:索引值只对应唯一的一条数据记录。
- CLUSTER:聚簇索引。聚簇索引的索引项的顺序与表中记录的物理顺序一致。
注意:在经常查询的列上建立聚簇索引虽然可以提高查询效率,但如果该索引列上的数据经常更新(增、删、改)则会导致整个物理顺序的改变,系统开销较大。因此聚簇索引并不适合建立在经常更新(增、删、改)的列上。
2.3.2 删除索引
DROP INDEX <索引名>
3 数据查询
SELECT [ALL | DISTINCT] <目标列表达式> [别名] [, <目标列表达式>][别名]…
FROM <表名> [别名] [,<表名> [别名]]…
[WHERE <条件表达式>]
[GROUP BY <列名A> [HAVING <条件表达式>]]
[ORDER BY <列名B> [ASC | DESC]]
ALL:查询所有行,不指定默认为ALL。
DISTINCT:去除查询列中取值重复的行,只保留一行。
FROM:FROM后加表名,用于指定所要查询的表。
WHERE:WHERE后加条件表达式,用于指定查询条件。
GROUP BY:有GROUP BY子句的话,将按列名A的列值进行分组。
HAVING:有 HAVING子句的话,将按HAVING后的条件表达式对查询结果进行过滤。
ORDER BY:有ORDER BY子句的话,将对查询结果按列名B得值进行升序(ASC)或者降序(DESC)排列。
-
目标列表达式常见格式:
*
<表名>. *
COUNT( [DISTINCT | ALL] * )
[ <表名>. ] <属性列名表达式> [, [ <表名>. ] <属性列名表达式> ]…
聚集函数常见格式:
< COUNT | SUM | AVG | MAX | MIN > [DISTINCT | ALL <列名> ]
-
WHERE子句条件表达式常见格式: