数据定义包括:模式定义 表定义 视图和索引定
层次化的数据库对象命名机制
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库
可以建立多个模式,一个模式可包括2多个表,视图和索引等数据库对象。
1. 模式的定义与删除
- 定义模式
create schema 模式名 authorization 用户名实际上定义了一个命名空间可以进一步定义该模式包含的数据库对象。
定义模式同时可以创建基本表,视图,定义授权。
create schema 模式名 authorization 用户名 [<表定义子句>|
<视图定义子句>|<授权定义子句>]
2 . 删除模式
drop schema 模式名 <cascade|restrict>
cascade 级联 删除模式同时删除模式中所有的数据库对象
restrict 限制
2 基本表的定义,删除与修改
1.定义基本表
创建模式,在定义该模式下的数据库基本表
create table 表名(<列名><数据类型>[约束条件],
<列名><数据类型>[约束条件],
……,
<表级约束条件>
);
完整性约束条件:列名 数据类型 primary key /主码/
列名 数据类型 not null /不为空/
foreign key (Cpno) references Coures(Cno)
/表级完整性约束条件,Cpno 是外码,被参照表是Course,
被参照的列是Cno/
2 . 数据类型
关系模型中域。 SQL中用数据类型来实现。
3.模式与表
定义表的模式三种方法:
1 . create table “模式名”.表名(……)
2.创建模式时创建表
3 . 不指定模式,系统搜索路径来确定该对象所属的模式。搜索路径包括一组模式列表,使用第一个存在的模式作为
模式名。
显示当前的搜索路径 show search_path
默认值$user ,public
设置搜索路径 set search _path to “模式名”,public
4 . 修改基本表
alter table <表名>
[add 【column】<新列名><数据类型>[完整性约束]]
[add <表级完整性约束>]
[drop [column] <列名>[cascade|restrict]]
[drop constraint <完整性约束名>[restrict|cascade]]
[alter column<列名><数据类型>]
5 . 删除基本表
drop table <表名> [restrict|cascade];
restrict(默认值) 删除有限制条件:不能被其他表的约束引用,不能
有视图,不能有触发器,不能有存储过程或函数。
3 索引的建立与删除
- 建立索引
create [unique] [cluster] index <索引名>
on <表名>(<列名>[次序])次序默认 ASC(降序) DESC(升序)
unique 此索引的每一个索引值只对应唯一的数据记录。
cluster 建立的索引是聚簇索引。
2 . 修改索引
alter index <旧索引名> rename to <新索引名>
3 . 删除索引
drop index <索引名>
4 数据字典
记录数据库中所有的定义信息包括关系模式定义,视图
定义 ,索引定义,完整性约束定义,各类用户对数据库的
操作权限统计信息等。