SQL实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例1:定义院系表,其中编号为主关键字,名称应该惟一、并且不允许为空值。
代码:
--E1
create table Department
(编号char(8)primary key,
名称char(40)unique not null,
负责人char(20),
办公地点char(20)
);
例2:定义学生表,其中规定:
⏹学号列是主关键字;
⏹院系列为计算列(取学号列的第3和第4个字符),
并且院系值参照院系表的编号值(院系表是被参照表,主关键字是编号;参照表是学生表,外部关键字是院系),此约束说明一名学生一定属于某个院系;
⏹姓名列不允许为空值;
⏹性别必须取值“男”或“女”;
⏹学生的学籍状态为正常、留级、休学或退学。
代码:
--E2
create table Student
(学号char(10)primary key,
院系as convert(char(8),substring(学号,3,2))
persisted not null
foreign key(院系)references Department(编号),
姓名char(20)not null,
性别char(2)constraint c1 check(性别in('男','女')),
生源char(10),
状态char(4)constraint c2 check(状态in('正常','留级','休学','退学')) );
例3:定义教师表,其中规定:
⏹教师编号是主关键字;
⏹院系列为计算列(取教师编号的第1和第2个字
符),并且院系值参照院系表的编号值,此约束说明一名教师一定属于某个院系;
⏹姓名列不允许为空值;
⏹性别必须取值“男”或“女”;
⏹职称的取值为教授、副教授、讲师或助教。
代码:
--E3
create table Teacher
(教师编号char(10)primary key,
院系as convert(char(8),substring(教师编号,1,2))
persisted not null
foreign key(院系)references Department(编号),
姓名char(20)not null,
性别char(2)constraint c3 check(性别in('男','女')),
职称char(6)constraint c4 check(职称in('教授','副教授','讲师','助教')), 专业char(40)
);
例4:定义课程表,其中规定:
⏹课程编号是主关键字;
⏹课程名称不允许为空值;
⏹责任教师参照教师表的教师编号值,此约束说明责
任教师一定是已经在编的教师;
⏹学时不允许为空值;
⏹课程性质分为公共基础、专业基础、专业选修和任
意选修。
代码:
--E4
create table Course
(课程编号char(8)primary key,
课程名称char(30)not null,
责任教师char(10)constraint Duty_Teacher foreign key(责任教师) references Teacher(教师编号),
学时smallint not null,
课程性质char(10)constraint c5 check(课程性质in('公共基础','专业基础','专业选修','任意选修')),
);
例5:定义选课表,其中规定:
⏹学号和课程编号两列构成主关键字(需要表级完整
性约束);
⏹学号参照学生表的学号(约束选课的学生必须存
在);
⏹课程编号参照课程表的课程编号(约束被选的课程
必须存在);
⏹考试成绩取值在0~100之间,并且默认为空值。
代码:
--E5
create table SC
(学号char(10),
课程编号char(8),
考试成绩smallint constraint c6 check(考试成绩between 0 and 100)default null,
primary key(学号,课程编号),
foreign key(学号)references Student(学号),
foreign key(课程编号)references Course(课程编号)
);
例6:规定学生表的性别字段不允许为空值
代码:
--E6
alter table Student alter column性别char(2)not null;
例7:删除课程表中的责任教师列
代码:
--E7
alter table Course drop constraint Duty_Teacher
alter table Course drop column责任教师;
例8:为课程表增加责任教师列,列描述如下:
字符类型,长度为10;
允许空值;
代码:
--E8
alter table Course add责任教师char(10)null
constraint newdt foreign key references Teacher(教师编号);
例9: 插入院系表的第1个元组(记录)
代码:
--E9
insert into Department (编号,名称,负责人,办公地点)
values(01,'信息管理学院','李嘉','教一楼层');
例10 省略列名、插入院系表的第2个元组
代码:
--E10
insert into Department values(02,'经济管理学院','吴鸿忠','教三楼层');例14:插入学生表的第1个元组