SQL标准不提供修改模式定义和修改视图定义的操作
模式的定义与删除
1定义模式
模式的定义语句:CREATE SCHEMA<模式名>authorization<用户名>
如果没有指定模式名,那么模式名隐含为用户名
用户可以在创建模式的同时在这个模式定义中进一步创建表视图定义授权。
2删除模式
drop schema<模式名><cascade|restrict>
cascade表示在删除模式的同时把该模式中所有的数据库对象全部删除
restrict表示如果该模式中已经定义了下属数据库对象,则拒绝删除语句的执行
基本表的定义删除与修改
1定义基本表
创建一个模式就建立了一个数据库的命名空间,一个框架
Create table<表名>(<列名><数据类型>列级完整性约束条件
.......)
表级完整性约束条件
例建立一个课程表Course
create table Course
(Cno char(4)primary key,//列级完整性约束条件,Cno是主码
Cname char(40)not null, //列级。。。,Cname不能为空值
Cpno char(4) //Cpno 的含义是先修课
Ccredit smallint,
foreign key(Cpno)references Course(Cno)
//表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno);
本例说明参照表和被参照表可以使一个表//外键参照表,主键被参照表
例2建立学生选课表SC
create table SC
(Sno char(9),
Cno char(4),
Grade Smallint,
primary key(Sno,Cno)//主码由两个属性构成,必须作为表级完整性进行定义
foreign key(Sno)references Student(Sno),
//表级完整性约束条件,Sno是外码,被参照表是student
foreign key(Cno)references Course(Cno)
//表级完整性约束条件,Cno是外码,被参照表是Course);
2模式与表
三种方法定义所属模式
1,在表中明显给出模式名
create table “S-T”.Student(....)
2在创建模式语句的同时创建表
3当用户创建基本表时若没有指定模式,系统根据搜索路径(search path)来确定该对象所属模式
3修改基本表
alter table<表名>
【add 【cloumn】<新列名><数据类型>【完整性约束】】
【add<表级完整性约束>】
【drop 【column】<列名>【cascade|restrict】】//删除表中的列
【drop constraint<完整性约束名>【restrict|cascade】】//删除指定的完整性约束条件
【alter column<列名》<数据类型>】;//用于修改原有的列定义,包括修改列名和数据类型
例向student表中添加入学时间列,其数据类型为日期型
alter table student add S_entrance Date;
将年龄的数据类型由字符型改为整数
alter table student alter conlumn Sage int;
增加课程名称必须取唯一值得约束条件
alter table Course add unique(Cname);
4删除基本表
drop table<表名>[restrict|cascade];
索引的建立与删除
数据库索引有多种类型,常见
顺序文件上的索引
B+树索引
散列索引
位图索引
1建立索引
create【unique】【cluster】index<索引名>
on 《表名》(列名,次序)
例student表按学号升序建唯一索引,SC按学号升序和课程号降序建唯一索引
create unique index Coucno ON course(Cno);
create unique index SCno ON SC(Sno ASC,Cno DESC);
2修改索引
alter index<旧索引名>rename to<新索引名>;
3删除索引
drop index<索引名>