数据定义

本文主要讲述SQL数据定义语言。

数据定义

SQL数据定义语言(DDL)允许创建和删除模式、域、表、视图和索引等数据库对象。
SQL主要定义的数据定义语句为:

1
2
3
4
CREATE SCHEMA                           DROP SCHEMA
CREATE DOMAIN ALTER DOMAIN DROP DOMAIN
CREATE TABLE ALTER TABLE DROP TABLE
CREATE VIEW DROP VIEW

这些语句用于创建,更新和删除概念模式。许多DBMS提供下面两个语句,虽然SQL的标准并不支持:

1
CREATE INDEX                            DROP INDEX

创建数据库

根据ISO标准,关系和其他的数据库对象都存在于某个环境中。每个环境含一个或多个目录,每个目录中包括一组模式。模式是一组数据库对象的命名集合,该集合中的对象以某种方式相互关联。模式中的对象可以是表、视图、域、声明、序列、转变规则和字符集。模式中的所有对象有相同的所有者并且共享若干默认值。
模式定义语句有如下形式:

1
2
3
CREATE SCHEMA [Name | AUTHORIZATION CreatorIdentifier]
例子:
CREATE SCHEMA SqlTests AUTHORIZATION Smith;

可以使用DROP SCHEMA语句删除模式,形式如下:

1
DROP SCHEMA Name [RESTRICT | CASCADE]

如果指定了RESTRICT(它也是默认值),则模式必须为空,否则删除操作将失败。如果指定CASCADE,那么将按前面定义的顺序级联地删除与模式相关的所有对象。如果任一删除操作失败,则DROP SCHEMA操作失败。带有CASCADE限定符的DROP SCHEMA语句影响范围非常大,使用时一定要十分小心谨慎。值得注意的是,CREATE 和 DROP SCHEMA语句并未得到广泛的实现。

创建表

创建数据库结构后,就可以在数据库中为基本关系创建表结构。可以通过CREATE TABLE语句实现,该语句基本语法规则如下:

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE TableName
{(columnName dataType [NOT NULL] [UNIQUE]
[DEFAULT defaultOption][CHECK (searchCondition)][,...]}
[PRIMARY KEY (listOfColumns),]
{[UNIQUE (listOfColumns)][,...]}
{[FOREIGN KEY (listOfForeignKeyColumns)
REFERENCES ParentTableName [(listOfCandidateKeyColumns)]]
[MATCH {PARTIAL | FULL}
[ON UPDATE referentialAction]
[ON DELETE referentialAction]][,...]}
{[CHECK (searchCondition)],[,...]});