数据定义
数据定义
一.模式的定义和删除
1.定义模式
create schema<模式名>authorization<用户名>;
如果没有指定模式名,那么模式名隐含为用户名。
例:
create schema authorization HuanXiong;
这个语句中没有指定<模式名>,所以<模式名>隐含为用户名HuanXiong。
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表,视图,索引等。
2.删除模式
drop schema<模式名>;
选择cascade(级联),表示在删除模式的同时把该模式下的所有的数据库对象全部删除;选择了restrict(限制),表示如果模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行。
二.基本表的定义、删除与修改
1.定义基本表
例:建立一个“学生”表Student
create table Student(
Sno char(9) primary key, /*列级完整性约束条件,Sno为主键*/
Sname char(20) unique, /*Sname值不能重复*/
Ssex char(2) default'男/女', /*Ssex的值只能为男或女*/
Sage smallint defaule 18, /*Sage默认值为18*/
Sdept char(20));
例:建立一个“课程”表Course
create table Course(
Cno char(4) primary key,
Cname char(40) not null unique,
Cpo char(4),
Ccredit smallint,
foreign key(Cpno)references Course(Cno) /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);
该例说明参照表和被参照表可以是同一张表。
例:建立一个学生选课表SC
create table SC(
Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno)references Student(Sno),
foreign key(Cno)references Course(Cno) );
2.修改基本表
例:向Student表中增加“入学时间”列,其数据类型为日期型
alter table Student add s_entrance date;
例:将年龄的数据类型改为整数型
alter table Student alter column Sage int;
例:增加课程名必须为唯一值的约束条件
alter table Course add unique(Cname);
3.删除基本表
例:删除Student表
drop table Student cascade;
三.索引的建立和删除
建立索引是加快查询速度的有效手段。数据库索引类似图书后面的索引,能快速定位到需要查询的内容。
索引是关系数据库管理员系统的内部实现技术,属于内模式的范畴。
1.建立索引
create [unique] [clustered] index<索引名>
on<表名>(<列名>[<次序>][,<列名>[<次序>]]···);
索引可以建立在表的一列或者多列上,每个列之间用逗号分割。每个列名之后还可以用次序指定次序的排序次序,可选ASC(升序)或DESC(降序),默认值为ASC。
unique表明此索引的每一个索引值只对应唯一的数据记录。
clustered表明要建立的索引是聚簇索引。
例:在SC表上建唯一索引,按学号升序和课程号降序。
create unique index SCno on SC(Sno ASC,Cno DESC);
2.修改索引
alter index<旧索引名>rename to<新索引名>;
3.删除索引
drop index<索引名>;