关键字:SCHEMA,TABLE,ADD,ALTER,DROP,INDEX
- 模式的定义与删除
- 模式定义语句:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
- CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [可选:<表,视图,授权定义子句>]
- 创建之前,必须拥有DBA权限或者有授予的CREATE SCHEMA权限
- 如果没有指定<模式名>,<模式名>隐含为<用户名>
- 定义模式实际是定义一个命名空间,然后进一步定义该模式包括的数据库对象,基本表,视图,索引等。
- 模式删除语句:DROP SCHEMA <模式名> <CASCADE | RESTRICT>
- CASCADE(级联,删除模式中所有对象)与RESTRICT(限制,只有该模式中没有任何下属对象才执行删除)二选一。
- 表的基本定义,删除与修改
- 定义基本表
- CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件(这是可选项)],...);
- 例如:CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, ... FOREIGN KEY Cpno REFERENCES Course(Cno));
- Sno是主码,字符长度为9;
- Sname取唯一的值。
- Cpno是外码,被参照表是Course,被参照列是Cno。
- 数据类型
- CHAR(n) 长度为n的定长字符串
- VARCHAR(n) 最大长度为n的边长字符串
- INT / INTEGER 长整数
- SMALLINT 短整数
- NUMERIC(p, d) 定点数,由p位数字组成,小数后面有d位数字
- REAL取决于机器精度的浮点数
- Double Precision取决于机器精度的双精度浮点数
- FLOAT(n)浮点数,精度至少为n为数字
- DATE日期,包含年月日,格式为YYYY-MM-DD
- TIME时间,包含时分秒,格式为HH:MM:SS
- 模式与表
- 每个基本表属于某个模式,一个模式包含多个基本表。
- 在定义基本表时定义所属模式的三种方式:
- (1) 在表明中明显地给出模式名
- 例如:CREATE TABLE "S-T".Student(...); # Student所属的模式是S-T
- (2) 在创建模式语句中同时创建表
- CREATE SCHEMA ...... CREATE TABLE Student();
- CREATE SCHEMA ...... CREATE TABLE Student();
- (3) 设置所属的模式,这样在创建表时不必给出模式名
- (1) 在表明中明显地给出模式名
- 修改表
- 一般格式
- ALTERTABLE <表名> # 表名是需要修改的基本表
- [ ADD <新列名> <数据类型> [完整性约束] ] # ADD用于增加新列和新的完整性约束条件
- [ DROP <完整性约束名>] # DROP用于删除指定的完整性约束条件
- [ MODIFY COLUMN <列名> <数据类型>]; # ALTER COLUMN 用于修改原有的列定义,包括列名和数据类型
- 例如:
- ALTER TABLE Student ADD S_entence DATE; # 向表Student中添加入学日期列S_entence,类型为日期型,值为空
- ALTER TABLE Student ADD UNIQUE(Cname); # 增加Cname名词唯一值的约束条件
- ALTER TABLE Student MODIFY COLUMN Sage INT; # 修改Sage的职位类型为整型
- 一般格式
- 删除表
- 基本格式
- DROPTABLE <表名> [RESTRICT | CASCADE]; # 缺省为RESTRICT
- RESTRICT:如果该表不被其他表约束引用,无视图,无触发器,无存储过程或函数,才能删除。
- CASCASDE:该表删除无条件限制,删除时同事相关依赖对象也被删除。
- DROPTABLE <表名> [RESTRICT | CASCADE]; # 缺省为RESTRICT
- 基本格式
- 定义基本表
- 索引的建立与删除
- 建立索引(方便查询)
- 索引一经建立,,就由系统使用和维护它,不需要用户干预。
- 一般格式
- CREATE [UNIQUE] [CLUSTER]INDEX <索引名> ON <表名> (<列名> [<次序>] [, <列名> [<次序>]]...);
- 索引可以建立在表的一列或者多列上,<次序>可选ASC(升序,默认)或者DESC(降序).
- UNIQUE:表示此索引的每一个索引值只对应唯一的数据记录
- CLUSTER:表示要简历的索引是聚簇索引,索引项的顺序与表中记录的物理顺序一致的索引组织。
- 例如:CREATE UNIQUE INDEX SCno ON SC(Sno ASC, Cno DESC); # 按照学号升序和课程号升序建立唯一索引。
- 删除索引
- DROP INDEX <索引名>;
- 查看索引
- SHOW INDEX FROM TABLE;
- 建立索引(方便查询)