- 基本表的创建
CREATE TABLE <表名> (<列名><数据类型>[列级完整性约束条件]
[,<列名><数据类型>[列级完整性约束条件]]
...
[,<表级完整性约束条件>]);
例:
--学生表
create table Student
(Sno char(9) primary key,--主码
Sname char(20) unique,--唯一
Ssex char(2),
Sage smallint,
Sdept char(20)
);
--课程表
create table Course
(Cno char(4) primary key,
Cname char(40) not null,--非空
Cpno char(4),
Ccredit smallint,
foreign key (Cpno) references Course(Cno)--表级完整性约束条件,Cpno是外码,被参照表是Course中的Cno列
);
--选课表
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),--Sno和Cno都是主码
foreign key(Sno) references Student(Sno),--表级完整性约束条件,Sno是外码,被参照表是Student中的Sno列
foreign key(Cno) references Course(Cno)--表级完整性约束条件,Cno是外码,被参照表是Course中的Cno列
);
其中,主码只有一个时,直接在后面直接加上primary key,而大于一个时,使用表级完整性约束条件primary key( , )
- 基本表的修改
ALTER TABLE<表名>
[ADD [COLUME]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP [COLUME]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE]]
[ALTER COLUME<列名><数据类型>];
例:
--向学生表(Student)中添加类型为日期型的“入学时间”列
alter table Student add S_entrance date;
--将年龄的数据类型由字符型改为整数
alter table Student alter column Sage int;
--增加课程名称必须取谓一致的约束条件
alter table Student add unique(Cname);
- 删除基本表
DROP TABLE<表名>[RESTRICT|CASCADE]
其中,CASCADE(级联)表示删除该表时,相关依赖的比如视图等,都将被删除。
RESTRICT(限制)表示如果该表已经被其他表约束(FOREIGN KEY),则不能被删除。
例:
drop table Student cascade;--出错,因为Student已经被表SC引用
Student已经被表SC引用,只有SC表删除之后,才能删除表Student