一、定义数据表
1、建立一个“学生”表student。
create table student
(Sno char(9) primary key,/*主键(主码),列级完整性约束条件*/
Sname char(20) unique,/*Sname 取唯一值*/
Ssex char(2),
Sage smallint,
Sdep char(20)
);
2、建立一个“课程”表course。
create table course
(Cno char(4) primary key,/*Cno主键*/
Cname char(40) not null,/*Cname不能取空值*/
Cpno char(4),/*先修课*/
Ccredit smallint,
foreign key(Cpno) references course(Cno)/*Cpno是外键,对应course的Cno*/
);
3、建立学生课程表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)
);
二、数据类型
数据类型 | 含义 |
---|---|
char(n),character(n) | 长度为n的定长字符串 |
varchar(n),charactervarying(n) | 最大长度为n的变长字符串 |
clob | 字符串大对象 |
blob | 二进制大对象 |
int,integer | 长整数(4字节) |
smallint | 短整数(2字节) |
bigint | 大整数(8字节) |
numeric(p,d) | 定点数,有p位数字组成,小数点后面有d位数字 |
decimal | 同numeric |
boolean | 布尔值 |
date | 日期,包含年月日,格式为YYYY-MM-DD |
time | 时间,包含一日的时分秒,格式为HH:MM:SS |
timestamp | 时间戳类型 |
interval | 时间间隔类型 |
三、模式与表
方法:在表明中明显的给出模式名。
create table "S-T".student(···);
create table "S-T".course(···);
create table "S-T".sc(···);
四、修改基本表
【例】向student表增加“入学时间”列,其数据类型为日期型
alter table student add S_entrance date;
【例】修改student表的Sage字段默认值为20
alter table student alter column Sage set default 20; /*修改student表的Sage字段的默认值为20*/
【例】将student表的Sage由字符型改为整型。
alter table student modify column Sage int;
【例】增加课程名必须取唯一的约束条件。
alter table course add unique(Cname);
五、删除基本表
若选择restrict ,则该表的删除是有限制的,欲删除的基本表不能被删除。
若选择cascade,则删除没有限制,在删除表的同时,相关依赖对象,例如视图,都将被一起删除。
drop table student restrict|cascade;
😱
1 OωO