关系数据库系统支持三级模式结构,其模式,外模式和内模式中的基本对象有模式,表,视图和索引等。因此SQL的数据定义功能包括模式定义,表定义,视图和索引的定义,如下表所示:
1. 模式的定义与删除
(1) 定义模式
在SQL中,模式定义语句如下:
CREATE SCHEMA<模式名>AUTHORIZATION<用户名>;
如果没有指定<模式名>,那么<模式名>隐含为<用户名>。
要创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA的权限。
(2) 删除模式
在SQL中,删除模式语句如下:
DROP SCHEMA <模式名><CASCADE|RESTRICT>
其中,CASCADE和RESTRICT两者必选其一。选择CASCADE(级联),表示在删除模式的同时把该模式中的所有的数据库对象全部删除;选择RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象(如表,视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句。
2.基本表的定义,删除与修改
(1) 定义基本表
创建了一个模式就建立了一个数据库的命名空间,一个框架。在这个空间中首先要定义的是该模式包含的数据库基本表。
SQL语言使用CREATE TABLE语句定义基本表,其基本格式如下:
CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
...
[,<表级完整性约束条件>]);
建表的同时通过还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由关系数据库管理系统自动检查该操作是否违背这些完整性约束条件。
(2) 数据类型
SQL标准支持多种数据类型,常用数据类型如下表所示。
(3) 模式与表
每一个基本表都属于某一个模式,一个模式包含多个基本表。定义基本表所属模式的三种方法如下所示:
a . 在表名中明显地给出模式名
b . 创建模式语句中同时创建表
c . 设置所属的模式,这样在创建表时表名不必给出模式名
(4) 修改基本表
随着应用环境和应用需求的变化,有时需要修改已建立好的基本表。SQL语言用ALTER TABLE语句修改基本表,其一般格式为:
ALTER TABLE<表名>
[ADD[COLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP[COLUMN]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE]]
[ALTER COLUMN<列名><数据类型>];
其中<表名>是要修改的基本表,ADD子句用于增加新列,新的列级完整性约束条件和新的表级完整性约束条件。DROP COLUMN子句用于删除表中的列,DROP CONSTRAINT子句删除指定的完整性约束条件,ALTER COLUMN子句用于删除原有的列的定义,包括修改列名和数据类型。
(5) 删除基本表
当某个基本表不再需要时,可以使用DROP TABLE语句删除它。其一般格式为:
DROP TABLE<表名>ERESTRICE|CASCADE;
若选择RESTRICT,则该表的删除是有限制条件的;若选择CASCADE,则该表的删除没有限制条件。默认情况是RESTRICT。基本表定义一旦被删除,不仅表中的数据和此表的定义被删除,而且此表上建立的索引,触发器等对象一般也都将被删除。
3. 索引的建立与删除
建立索引是加快查询速度的有效手段。数据库索引有多种类型,常见的索引包括顺序文件上的索引,B+树索引,散列索引,位图索引等。索引虽然能够加快数据库查询,但需要占用一定的存储空间,当基本表更像时,索引要进行相应的维护,这些都会增加数据库的负担,因此要根据实际应用的需要有选择地创建索引。
(1) 建立索引
在SQL语言中,建立索引使用CREATE INDEX语句,其一般 格式为:
CREATE [UNIQUE] [ECLUSTER] INDEX<索引名>
ON<表名>(<列名>[<次序>][,<列名>][<次序>]...);
其中,<表名>是要建立索引的基本表的名字。索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可以用<次序>指定索引值得排列顺序,可选ASC(升序)或DESC(降序),默认值为ASC。
UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。
CLUSTER表示要建立的索引是聚簇索引。
(2) 修改索引
对于已经建立的索引,如果需要对其重新命名,可以使用ALTER INDEX语句。其一般格式为:
ALTER INDEX<旧索引名>RENAME TO<新索引名>;
(3) 删除索引
索引一经建立,就由系统使用和维护它,不需要用户干预。建立索引是为了减少查询操作的时间,但如果数据增,删,改频繁,系统会花费许多时间来维护索引,从而降低了查询效率,这时可以删除一些不必要的索引。
在SQL中,删除索引使用DROP INDEX语句,其一般格式为:
DROP INDEX<索引名>;
4.数据字典
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的定义信息,包括关系模式定义,视图定义,索引定义,完整性约束定义,各类用户对数据库的操作权限,统计信息等。