数据定义
SQL的数据定义功能:定义各种数据库的“对象”
- 模式定义
- 表定义
- 视图定义
- 索引定义
现代关系数据库管理系统提供了一个层次化的数据库对象命名机制
- 一个数据库中可以建立多个模式
- 一个模式下通常包括多个表、视图和索引等数据库对象
- 数据库->模式->表
数据字典
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有对象的定义信息以及一些统计信息:
- 关系模式、表、视图、索引的定义
- 完整性约束的定义
- 各类用户对数据库的操作权限统计信息等
关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。
模式定义
创建模式
首先对某一个用户创建一个模式
CREATE SCHEMA TEST;
定义模式实际上定义了一个命名空间(或者说目录)。在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
CREATE SCHEMA<模式名>AUTHORIZ,ATION<用户名>[表定义子句>水<视图定义子句><授权定义子句>]
删除模式
DROP SCHEMA<模式名 <CASCADE|RESTRICT>
CASCADE(级联)
- 删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制)
- 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
- 仅当该模式中没有任何下属的对象时才能执行。
DROP SCHEMA TEST RESTRICT;
DROP SCHEMA TEST CASCADE;
表定义
创建基本表
定义基本表
CREATE TABLE<表名> /基本表的名称*/
- (<列名><数据类型>[<列级完整性约束条件>】组成该表的列l
- [,<列名><数据类型>[<列级完整性约束条件>]]
- [,<表级完整性约束条件>]);
- <列级完整性约束条件>:涉及相应属性列的完整性约束条件
- <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
- 如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上。
CREATE TABLE student (
m_name VARCHAR(8) PRIMARY KEY,
m_age INT,
m_sex INT
);
修改基本表
<表名>是要修改的基本表
- ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
- DROP COLUMN子句用于删除表中的列
- 如果指定了CASCADE短语,则自动删除引用了该列的其他对象
- 如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
- DROP CONSTRAINT子句用于删除指定的完整性约束条件
- ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类刑
ALTER TABLE student2 ADD time VARCHAR(6);
删除基本表
DROP TABLE<表名>[RESTRICTCASCADE];
RESTRICT:删除表是有限制的。
- 欲删除的基本表不能被其他表的约束所引用如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。 - 在删除基本表的同时,相关的依赖对象一起删除
DROP TABLE student2 CASCADE;
索引定义
创建索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>ON <表名>(<列名>[<次序>][,<列名>[<次序]].);
- <表名>:要建索引的基本表的名字
- 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔
- <次序>:指定索引值的排列次序,升序: ASC,降序: DESC。缺省,值: ASC
- UNIQUE:此索引的每一个索引值只对应唯一的数据记录的
- CLUSTER:表示要建立的索引是聚簇索引
看题:
修改索引
ALTER INDEX <旧索引名> RENAME TO <新索引名>
删除索引
DROP INDEX <索引名>;
# 删除索引时,系统会从数据字典中删去有关该索引的描述。