1. 编写6个基本表
设有简单教学管理的6个关系模式如下:
系(系编号,系名称、系主任、联系电话、地址)
专业(专业编号、专业名称、所属系)
教师(教师编号、姓名、所在系、电话、电子信箱)
学生(学号、姓名、性别、出生日期、所学专业)
课程(课程号、课程名、学分、先修课)
学生选课(学号、课程号、成绩)
要求:在数据库EDUC中,创建对应的6个基本表,基本表的名称和属性名称由同学自行确定。
基本表的数据结构及完整性要求:
1. 系 (系编号,系名称、系主任、联系电话、地址) - 系编号:字符型(定长),长度为4,主码
- 系名称:字符型(变长),长度20,非空
- 系主任:字符型(定长),长度为10
- 联系电话:字符型(变长),长度20
- 地址:字符型(变长),长度40
复制代码
2. 专业 (专业编号、专业名称、所属系) - 专业编号:字符型(定长),长度为2,主码
- 专业名称:字符型(变长),长度40,非空
- 所属系:字符型(定长),长度为4,外码
复制代码
3. 教师 (教师编号、姓名、所在系、电话、电子信箱) - 教师编号:字符型(定长),长度为10,主码
- 姓名:字符型(定长),长度10,非空
- 所在系:字符型(定长),长度为4,外码
- 电话:字符型(变长),长度20
- 电子信箱:字符型(变长),长度30
复制代码
4. 学生 (学号、姓名、性别、出生日期、所学专业) - 学号:字符型(定长),长度为10,主码
- 姓名:字符型(变长),长度20,非空,唯一
- 性别:字符型(定长),长度为2,性别只能为‘男‘ 或‘女’
- 出生日期:日期型(datetime)
- 所学专业:字符型(定长),长度为2,外码
复制代码
5. 课程 (课程号、课程名、学分、先修课) - 课程号:字符型(定长),长度为4,主码
- 课程名:字符型(变长),长度30
- 学分:数值型(长度为2,含1位小数)
- 先修课:字符型(定长),长度为4,外码
复制代码
6. 学生选课 (学号、课程号、成绩) - 学号:字符型(定长),长度为10,外码
- 课程号:字符型(定长),长度为4,外码
- 成绩:数值型(长度为4,含1位小数),成绩必须在:0~100分之间。
- 本表的主码为:(学号,课程号)。
复制代码- -- 创建系表
- create table department(
- dpt_id char(4) primary key,
- dpt_name varchar(20) not null,
- dpt_head char(10),
- dpt_phone varchar(20),
- dpt_address varchar(40)
- )
- -- 创建专业表
- create table major(
- mj_id char(2) primary key,
- mj_name varchar(40) not null,
- mj_dpt char(4) foreign key references department(dpt_id)
- )
- -- 创建教师表
- create table teacher(
- tc_id char(10) primary key,
- tc_name char(10) not null,
- tc_dpt char(4) foreign key references department(dpt_id),
- tc_phone varchar(20),
- tc_email varchar(30)
- )
- -- 创建学生表
- create table student(
- st_id char(10) primary key,
- st_name varchar(20) not null unique,
- st_sex char(2) check(st_sex in('男','女')),
- st_born datetime,
- tc_mj char(2) foreign key references major(mj_id)
- )
- -- 创建课程表
- create table course(
- cs_id char(4) primary key,
- cs_name varchar(30),
- cs_credit numeric(2,1),
- cs_prerequisite char(4) foreign key references course(cs_id)
- )
- -- 创建学生选课表
- create table select_course(
- sc_id char(10) foreign key references student(st_id),
- sc_num char(4) foreign key references course(cs_id),
- sc_grade numeric(4,1) check (sc_grade>0 and sc_grade<100)
- primary key(sc_id,sc_num)
- )
复制代码
2. 修改基本表结构,完整性约束条件
用 Alter table 语句修改基本表的结构,以及完整性约束条件
1. 为学生表增加属性:班级,字符型(变长),长度20 - -- 为学生表增加属性:班级,字符型(变长),长度20
- alter table student add st_class varchar(20)
复制代码
2. 为课程表添加一条完整性约束条件:课程名不允许为空值 - -- 为课程表添加一条完整性约束条件:课程名不允许为空值
- alter table course alter column cs_name varchar(30) not null
复制代码
3. 删除学生表中的班级属性 - -- 删除学生表中的班级属性
- alter table student drop column st_class
复制代码
4. 删除学生表中对学生姓名的唯一值限制 - -- 删除学生表中对学生姓名的唯一值限制
- alter table student drop constraint 约束名 --约束名通过图形化界面查看
复制代码
3. 用Drop table 语句删除基本表 - -- 创建一个新的基本表
- create table test(
- id char(10) primary key,
- name varchar(10) not null
- )
- -- 删除该表。
- drop table test
复制代码 |