数据库实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验报告
班级:计科161
姓名:蒋东旗
指导老师:杜献峰
实验一基本表的定义、删除与修改
定义基本表
1建立学生表Stu,每个属性名的意义为Sno-学号、Sname-姓名、Ssex-性别、Sage-年龄、Sdept-所在系。这里要求Sno和Sname不能为空值,且取值唯一。Sno为主码。
create table stu
(
sno char(20) primary key,
sname char(20) unique,
ssex char(2),
sage smallint,
sdept char(20)
);
2 建立课程表Cose,其属性名意义分别为Cno-课程号, Cname-课程名, Cpno-先修课程号, Credit-学分。Cno为主码。
create table cose
(
cno char(4) primary key,
cname char(40) not null,
cpno char(4),
ccredit smallint,
foreign key(cpno)references cose(cno)
);
3 建立成绩表StuSC。其中的属性名意义分别为Sno-学号,Cno-课程号和Grade-考试成绩。Sno和Cno为主码,Sno和Cno分别为外码。
create table stusc
(
sno char(9),
cno char(4),
grade smallint,
primary key(cno,sno),
foreign key(sno)references stu(sno),
foreign key(cno)references cose(cno));
修改基本表(Alter)
1向基本表Stu中增加“入学时间”属性列,其属性名为RegisterDate,数据类型为DATE型。
Alter table
Add (RegisterDate date);
2 删除Student表的属性列RegisterDate。
Alter table stu
Drop column RegisterDate cascade constraints;
说明:为了保证后面例子能够顺利运行,请大家一定将属性列RegisterDate从Stu表中删除。
3将Sage(年龄)的数据类型改为SMALLINT型。
Alter table stu
Modify sage smallint;
4 将Stu表的属性列RegisterDate名修改为RegDate,其它不变。
Alter table
Rename column RegisterDate to RegDate;
5增加Sname(姓名)必须取唯一值的约束。
alter table
add constraint cons_sname unique(sname);
6 删除Sname(姓名)必须取唯一值的约束。
Alter table
Drop constraint cons_sname;
7 表中添加PRIMARY KEY 约束
Alter table
Add constraint PK_SC
PRIMARY KEY (sno,cno);
8 StuSC表中添加FORENGN KEY 约束
alter table turing. stusc
add constraint fk_sc
foreign key (sno) references (sno)
foreign key (cno) references (cno);
9定义SC表中grade默认值为0;
alter table turing. Stusc
modify (grade default 0)
10定义SC表中grade最小值为0,最大值为100;
alter table turing. stusc
add constraint chk_grade1
check ((0<=grade) and (grade <=100));
删除基本表
1删除Stu表(注:能直接删除student表吗为什么)。
不能,因为stusc表中的sno依赖stu表中的sno 2删除cose表(注:能直接删除course表吗为什么)。
不能,因为stusc表中的cno依赖cose表中的cno
3 删除StuSC表。
实验二 SQL语言应用
A、单表查询
无条件查询
1查询全体学生的详细记录。
select *
from student
2查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。
select sname,sno,sdept
from student;
3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
select sname,sno,(2018-sage) as birthday
from student;
4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。select sname,(2018-sage) as birthday,lower(sno)
from student;
5查询选修了课程的学生学号。
select distinct sno
from sc;
条件查询
6 查询数学系全体学生的学号(Sno)和姓名 (Sname)。
select sno,sname
from student
where sdept='数理学院';