数据库原理实验答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Values(7,'PASCAL语言',6,4);
3)向SC表中插入数据
Insert Into SC(Sno,Cno, Grade) Values(200215121,1,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,2,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,3,88);
Insert Into SC(Sno,Cno, Grade) Values(200215122,2,90);
Insert Into SC(Sno,Cno, Grade) Values(200215122,3,80);
Insert Into SC(Sno,Cno, Grade) Values(200215121,4,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,5,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,6,88);
Insert Into SC(Sno,Cno, Grade) Values(200215123,2,90);
select sno,grade from sc where cno='3' order by grade desc;
8)查询各个课程号与相应的选课人数。
select cno, count(sno) from sc group by cno;
2. 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
Create table Course
(Cno number(4) constraint pk_course primary key,
Cname varchar2(20),
Cpno number(2),
Ccredit number(2));
3)?学生选课表:SC(Sno, Cno, Grade)其中学号Sno、课程号Cno为主码;成绩Grade(nember(4,1)型)。
1) 删除基本表Student
Drop table student cascade constraints;
2)删除基本表SC
Drop table sc;
二、索引操作
Create [Unique][Cluster] Index <索引名> On <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
第三部分 实验内容
实验一 数据定义和数据更新
实验目的:通过本实验能够熟练应用sql语言进行基本表和索引的定义,能够对表的结构进行修改和删除,并通过数据更新命令输入相应的数据.
实验要求:在进行本实验之前,应熟练课程内容,在上机之前做好实验计划,编写好相应的代码,这样才能在2个学时完成实验内容。
Drop Index <索引名>
1.建立索引
1)在Course表上建立关于Cname的唯一索引
Create unique index o on Course (cname asc);
Create unique index oo on sc(sno asc,cno desc);
2.删除索引
实验内容:
1. 创建教材的学生-课程数据库中的三个表.定义表时请注意数据类型问题,Oracle的数据类型请参照本实验讲义.
2. 对学生表(student)的结构用alter命令进行修改.
3. 对以上建立的表按关键字建立索引.
4. 输入数据.数据内容参照教材.输入数据时请注意数据类型问题.
5. 对输入的数据进行修改和删除.
4. 删除数据
Delete From <表名>Where <条件>
Update Student Set sage=sage+1;
Delete from Course Where cno= '1';
实验二 数据查询
实验目的:通过本实验能够应用sql语言进行基本表查询,并实现对视图的定义和查询.
1)删除Course表上的索引
Drop index o;
2)删除SC表上的索引
Drop index oo;
(二)数据操作
一、数据更新
1.插入数据
1)向Student表中插入数据
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215121,'李勇','男',20,'CS');
实验要求:在进行本实验之前,应熟练课程内容,在上机之前做好实验计划,编写好相应的代码 .
实验内容
1.对实验一建立的学生-课程数据库中的表进行单表查询
1)查询全体学生的详细记录。
select * from student;
2)查询全体学生的姓名及其出生年份。
select sname, 2007-sage sbirth from student;
5)查询学习1号课程的学生的最高分数。
select max(grade) from sc where cno=2;
6)查名字中第二个字为“阳”字的学生的姓名和学号。
select sname, sno from student where sname like '_敏%';
7)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
Insert Into SC(Sno,Cno, Grade) Values(200215123,1,85);
Insert Intቤተ መጻሕፍቲ ባይዱ SC(Sno,Cno, Grade) Values(200215123,4,88);
Insert Into SC(Sno,Cno, Grade) Values(200215122,1,90);
Sname char(8) not null unique,
Ssex char(2),
Sage number(2),
Sdept char(20),
Constraint ck_ss check (Ssex in ('男','女')));
2)课程表:Course (Cno, Cname, Cpno, Ccredit)其中课程号Cno(number型 长度为4 主码);Cname课程名(char型,长度为20);Cpno先行课(number型);Ccredit学分(nember型);
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215122,'刘晨','女',19,'CS');
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215123,'王敏','女',18,'MA');
Insert Into Course(Cno,Cname, Ccredit)
Values(2,'数学',2);
Insert Into Course(Cno,Cname,Cpno, Ccredit)
Values(3,'信息系统',1,4);
Insert Into Course(Cno,Cname,Cpno, Ccredit)
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215125,'张立进','男',22,'IS');
2)向Course表中插入数据
Insert Into Course(Cno,Cname, Ccredit)
Values(1,'数据库原理',2);
[Drop constraint <约束名>]
1)在Student表中加入属性Sage(number型)。
Alter table Student add Sage number not null;
2)修改某个表的属性的数据类型。
Alter table student Add s_entrance date;
Alter table student Drop column s_entrance;
Alter table student Modify sage char(3);
Alter table student Modify sage not null;
Alter table sc Add constraint ck_sc check(grade>=0 and grade<=100);
1)学生表:Student (Sno, Sname, Ssex, Sdept)其中学号Sno(number型 主码);姓名Sname(char型,长度为8,非空唯一);Ssex性别(char型,长度为2,只能为男或女);所在系Sdept(char型)
Create table Student
(Sno number(12) constraint PK_student primary key,
Constraint fk_c Foreign key (cno ) references course(Cno)
);
2.修改基本表
Alter table <表名>
[Add <列定义>]|
[Modify <列定义>]|
[Drop colomn <列名>]|
[Add <表约束>]|
3)查询年龄不在20至23岁之间的学生姓名、系别和年龄。
select sname,sdept,sage from student where sage not between 20 and 23;
4)查询所有姓刘的学生的姓名、学号和性别。
select sname,sno,ssex from student where sname like '刘%';
思考题:体会oracle数据库的数据存储方法.
实验报告要求:写出创建3个表的命令,修改表结构的命令,删除唯一性约束的命令,创建索引的命令,对每个表添加2个条记录的命令,删除数据的命令。
一、基本表操作
1.建立基本表
创建教材p69页的学生表(student)、学生选课表(SC)、课程表(course)
Values(4,'操作系统',6,3);
Insert Into Course(Cno,Cname,Cpno,Ccredit)
Values(5,'数据结构',7,4);
Insert Into Course(Cno,Cname,Ccredit)
Values(6,'数据处理',2);
Insert Into Course(Cno,Cname,Cpno,Ccredit)
Alter table sc Drop constraint ck_sc;
如原来的表student中sname属性为not null default约束,现在通过alter命令修改为可以取空,具体SQL语句为 alter table student modify sname null;
3.删除基本表
Insert Into SC(Sno,Cno, Grade) Values(200215122,5,80);
2.修改数据
Update <表名>
Set <列名1>=<值1>,<列名2>=<值2>,…
Where <条件>
Update Student Set Ssex='女', sage=23 Where sname='李勇';
Create table SC
(Sno number(12),
Cno number(4),
Grade number(3),
Constraint pk_SC Primary key (Sno,Cno),
Constraint fk_s Foreign key (sno ) references student(Sno),
Insert Into SC(Sno,Cno, Grade) Values(200215123,3,80);
Insert Into SC(Sno,Cno, Grade) Values(200215121,7,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,4,92);
3)向SC表中插入数据
Insert Into SC(Sno,Cno, Grade) Values(200215121,1,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,2,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,3,88);
Insert Into SC(Sno,Cno, Grade) Values(200215122,2,90);
Insert Into SC(Sno,Cno, Grade) Values(200215122,3,80);
Insert Into SC(Sno,Cno, Grade) Values(200215121,4,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,5,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,6,88);
Insert Into SC(Sno,Cno, Grade) Values(200215123,2,90);
select sno,grade from sc where cno='3' order by grade desc;
8)查询各个课程号与相应的选课人数。
select cno, count(sno) from sc group by cno;
2. 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
Create table Course
(Cno number(4) constraint pk_course primary key,
Cname varchar2(20),
Cpno number(2),
Ccredit number(2));
3)?学生选课表:SC(Sno, Cno, Grade)其中学号Sno、课程号Cno为主码;成绩Grade(nember(4,1)型)。
1) 删除基本表Student
Drop table student cascade constraints;
2)删除基本表SC
Drop table sc;
二、索引操作
Create [Unique][Cluster] Index <索引名> On <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
第三部分 实验内容
实验一 数据定义和数据更新
实验目的:通过本实验能够熟练应用sql语言进行基本表和索引的定义,能够对表的结构进行修改和删除,并通过数据更新命令输入相应的数据.
实验要求:在进行本实验之前,应熟练课程内容,在上机之前做好实验计划,编写好相应的代码,这样才能在2个学时完成实验内容。
Drop Index <索引名>
1.建立索引
1)在Course表上建立关于Cname的唯一索引
Create unique index o on Course (cname asc);
Create unique index oo on sc(sno asc,cno desc);
2.删除索引
实验内容:
1. 创建教材的学生-课程数据库中的三个表.定义表时请注意数据类型问题,Oracle的数据类型请参照本实验讲义.
2. 对学生表(student)的结构用alter命令进行修改.
3. 对以上建立的表按关键字建立索引.
4. 输入数据.数据内容参照教材.输入数据时请注意数据类型问题.
5. 对输入的数据进行修改和删除.
4. 删除数据
Delete From <表名>Where <条件>
Update Student Set sage=sage+1;
Delete from Course Where cno= '1';
实验二 数据查询
实验目的:通过本实验能够应用sql语言进行基本表查询,并实现对视图的定义和查询.
1)删除Course表上的索引
Drop index o;
2)删除SC表上的索引
Drop index oo;
(二)数据操作
一、数据更新
1.插入数据
1)向Student表中插入数据
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215121,'李勇','男',20,'CS');
实验要求:在进行本实验之前,应熟练课程内容,在上机之前做好实验计划,编写好相应的代码 .
实验内容
1.对实验一建立的学生-课程数据库中的表进行单表查询
1)查询全体学生的详细记录。
select * from student;
2)查询全体学生的姓名及其出生年份。
select sname, 2007-sage sbirth from student;
5)查询学习1号课程的学生的最高分数。
select max(grade) from sc where cno=2;
6)查名字中第二个字为“阳”字的学生的姓名和学号。
select sname, sno from student where sname like '_敏%';
7)查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
Insert Into SC(Sno,Cno, Grade) Values(200215123,1,85);
Insert Intቤተ መጻሕፍቲ ባይዱ SC(Sno,Cno, Grade) Values(200215123,4,88);
Insert Into SC(Sno,Cno, Grade) Values(200215122,1,90);
Sname char(8) not null unique,
Ssex char(2),
Sage number(2),
Sdept char(20),
Constraint ck_ss check (Ssex in ('男','女')));
2)课程表:Course (Cno, Cname, Cpno, Ccredit)其中课程号Cno(number型 长度为4 主码);Cname课程名(char型,长度为20);Cpno先行课(number型);Ccredit学分(nember型);
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215122,'刘晨','女',19,'CS');
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215123,'王敏','女',18,'MA');
Insert Into Course(Cno,Cname, Ccredit)
Values(2,'数学',2);
Insert Into Course(Cno,Cname,Cpno, Ccredit)
Values(3,'信息系统',1,4);
Insert Into Course(Cno,Cname,Cpno, Ccredit)
Insert Into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(200215125,'张立进','男',22,'IS');
2)向Course表中插入数据
Insert Into Course(Cno,Cname, Ccredit)
Values(1,'数据库原理',2);
[Drop constraint <约束名>]
1)在Student表中加入属性Sage(number型)。
Alter table Student add Sage number not null;
2)修改某个表的属性的数据类型。
Alter table student Add s_entrance date;
Alter table student Drop column s_entrance;
Alter table student Modify sage char(3);
Alter table student Modify sage not null;
Alter table sc Add constraint ck_sc check(grade>=0 and grade<=100);
1)学生表:Student (Sno, Sname, Ssex, Sdept)其中学号Sno(number型 主码);姓名Sname(char型,长度为8,非空唯一);Ssex性别(char型,长度为2,只能为男或女);所在系Sdept(char型)
Create table Student
(Sno number(12) constraint PK_student primary key,
Constraint fk_c Foreign key (cno ) references course(Cno)
);
2.修改基本表
Alter table <表名>
[Add <列定义>]|
[Modify <列定义>]|
[Drop colomn <列名>]|
[Add <表约束>]|
3)查询年龄不在20至23岁之间的学生姓名、系别和年龄。
select sname,sdept,sage from student where sage not between 20 and 23;
4)查询所有姓刘的学生的姓名、学号和性别。
select sname,sno,ssex from student where sname like '刘%';
思考题:体会oracle数据库的数据存储方法.
实验报告要求:写出创建3个表的命令,修改表结构的命令,删除唯一性约束的命令,创建索引的命令,对每个表添加2个条记录的命令,删除数据的命令。
一、基本表操作
1.建立基本表
创建教材p69页的学生表(student)、学生选课表(SC)、课程表(course)
Values(4,'操作系统',6,3);
Insert Into Course(Cno,Cname,Cpno,Ccredit)
Values(5,'数据结构',7,4);
Insert Into Course(Cno,Cname,Ccredit)
Values(6,'数据处理',2);
Insert Into Course(Cno,Cname,Cpno,Ccredit)
Alter table sc Drop constraint ck_sc;
如原来的表student中sname属性为not null default约束,现在通过alter命令修改为可以取空,具体SQL语句为 alter table student modify sname null;
3.删除基本表
Insert Into SC(Sno,Cno, Grade) Values(200215122,5,80);
2.修改数据
Update <表名>
Set <列名1>=<值1>,<列名2>=<值2>,…
Where <条件>
Update Student Set Ssex='女', sage=23 Where sname='李勇';
Create table SC
(Sno number(12),
Cno number(4),
Grade number(3),
Constraint pk_SC Primary key (Sno,Cno),
Constraint fk_s Foreign key (sno ) references student(Sno),
Insert Into SC(Sno,Cno, Grade) Values(200215123,3,80);
Insert Into SC(Sno,Cno, Grade) Values(200215121,7,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,4,92);