第十四章 约束
–练习1
1.学校有一个选课系统,其中包括如下关系模式:
系(系编号: 主键,
系名称: 唯一键,
系主任: 非空约束,
系所在校去:取值范围只能在南湖校区和浑南校区)
create table xi
(
xi_no varchar2(10) primary key,
xi_name varchar2(10) unique,
xi_mrg varchar2(10) not null,
xi_loc varchar2(20) check(xi_loc in('南湖校区','浑南校区'))
);
select * from xi
班级(班级编号: 主键,
班级名称: 唯一键,
所属系: 外键)
create table classbj
(
classbj_no varchar2(10) primary key,
classbj_name varchar2(10) unique,
xi_name varchar2(10)
constraint xi_name_fk references xi (xi_name)
)
2.创建学生表,包含如下属性:
学号 定长字符型 10位 主键
姓名 变长字符型 20位 非空
性别 定长字符型 2位 取值范围只能为男或女
出生日期 日期型
所在班级
create table student(
stu_no varchar(10) primary key,
stu_name varchar2(20) not null,
stu_sex varchar(2) check(stu_sex in('男','女')),
stu_date date,
classbj_name varchar2(10)
)
–课后作业
1.简述5种约束的含义。
not null 非空约束:主要作用为约束列值不能为空
primary key 主键约束:约束列值唯一且不能为空
foreign key 外键约束:约束列值与父项相关
unique 唯一约束:约束列值必须唯一
check 检查约束:约束列值在某一范围
2.创建学生关系sc,包括属性名:
选课流水号 数值型 主键;
学生编号 非空 外键
课程编号 非空 外键;
成绩 0-100之间;
create table sc (
scid number(10)
constraint tabsc_scid_pk primary key,
-- 选课流水号 数值型 主键;
stno number(10)
constraint tabsc_scno_fk reference tabstudent14(stno),
-- 学生编号 非空 外键
cid number(4)
constraint tabsc_cid_fk reference tabcourse(cid),
-- 课程编号 非空 外键;
scgrade number(5,2)
constraint tabsc_scgrade_ck check(scgrade bewteen 0 and 100)
-- 成绩 0-100之间;
);
3.创建copy_emp,要求格式同emp表完全一样,不包含数据。
4.创建copy_dept,要求格式同dept表完全一样,不包含数据。
5.设置copy_emp 表中外键deptno,参照copy_dept中deptno,语句能否成功,为什么?
6.追加copy_dept表中主键deptno