文档下载:
实验名称 | 实验一 数据定义和数据更新 | ||
实验教室 | 913 | 实验日期 | 2018年10月8日 |
学 号 | 2016214*** | 姓 名 | *** |
专业班级 | 计算机科学与技术2016级 *班 | ||
指导教师 | 王阿川 |
东北林业大学
信息与计算机科学技术实验中心
一、实验目的 (1)熟悉数据库的交互式SQL工具; (2)通过本实验能够熟练应用sql语言进行基本表和索引的定义,能够对表的结构进行修改和删除,并通过数据更新命令输入相应的数据。 |
二、实验环境 计算机 windows7操作系统, Oracle 11g, SQL Developer
|
三、实验内容及结果
一、基本表操作 1.建立基本表 创建教材中的学生表(student)、学生选课表(SC)、课程表(course) 创建学生表: 1)·学生表:Student (Sno, Sname,Sage,Ssex,Sdept)其中学号Sno主码 create table Student(
2)·课程表:Course (Cno, Cname, Cpno, Ccredit)其中课程号Cno主码;先行课为外码参照Course表中Cno字段。 create table Course(
3)·学生选课表:SC(Sno, Cno, Grade)其中学号Sno、课程号Cno为主码;Sno为外码参照Student表中sno字段;Cno为外码参照Course表中cno字段。 create table SC( Sno char(9), Cno char(4), Grade smallint, primary key(Sno,Cno), foreign key (Sno) references Student(Sno), foreign key (Cno) references Course(Cno) );
2.修改基本表 1)在Student表中加入属性BloodType(char(2)型)。 alter table Student add BloodType char(2);
2)修改表student中的Sdept属性的数据类型为varchar2(40),注意和定义表的时候类型不同。 alter table Student modify (Sdept varchar2(40));
3)给表student的sage列添加一个自定义约束sage必须大于15且小于30。 alter table Student add check (Sage>15 and Sage<30);
4)删除3)中新添加的约束。 select * from user_constraints where table_name='STUDENT';
alter table Student drop constraint CK_STUDENT; 5)删除表student中的字段BloodType。 alter table Student drop(BloodType);
3.删除基本表 1) 删除基本表Student drop table student cascade CONSTRAINTS
2)删除基本表SC drop table sc cascade CONSTRAINTS
二、索引操作 1.建立索引 1)在Student表上建立关于Sname的唯一索引stusnam+学号后四位 CREATE UNIQUE INDEX stusnam ON student(sname);
2)在SC表上建立关于Sno升序、Cno降序的唯一索引i_sc+学号后四位 CREATE UNIQUE INDEX i_sc ON sc(sno asc, cno desc);
2.删除索引 1)删除Student表上的索引stusnam+学号后四位 drop index stusnam
2)删除Course表上的索引i_sc+学号后四位 drop index i_sc
(二)数据操作 一、数据更新 1.插入数据 1)向Student表中插入数据 insert into Student(Sno,Sname,Ssex,Sage,Sdept) values('200215121','李勇','男','20','CS'); 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 Student(Sno,Sname,Ssex,Sage,Sdept) values('200215125','张立','男','19','IS');
2)向Course表中插入数据(注意插入次序) insert into Course(Cno,Cname,Cpno,Ccredit) values('2','数字',null,'2'); insert into Course(Cno,Cname,Cpno,Ccredit) values('6','数据处理',null,'2'); insert into Course(Cno,Cname,Cpno,Ccredit) values('7','PASCAL语言','6','4'); insert into Course(Cno,Cname,Cpno,Ccredit) values('4','操作系统','6','3'); insert into Course(Cno,Cname,Cpno,Ccredit) values('5','数据结构','7','4'); insert into Course(Cno,Cname,Cpno,Ccredit) values('1','数据库','5','4'); insert into Course(Cno,Cname,Cpno,Ccredit) values('3','信息系统','1','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','4','90'); insert into SC(Sno,Cno,Grade) values('200215122','3','80');
2.修改数据 1)将王敏的同学的年龄改为20。 update Student set Sage=20 where Sname='王敏';
2)将全部同学的年龄加1。 update Student set Sage=Sage+1;
3)将’CS’系同学的选课信息中的成绩置0。 update SC set Grade='0' where Sno in(select Sno from Student where Sdept='CS'); update SC set Grade='0' where Sno in(select Sno from Student where Sdept='CS'); 3.删除数据 1)删除和’ 刘晨’在同一个系的学生的信息。 delete from Student where Sdept in(select Sdept from Student where Sname='刘晨');
2)删除’CS’系同学的选课信息。 delete from SC where Sno in(select Sno from Student where Sdept='CS'); |
四、实验过程分析与讨论 1. 实验过程分析与讨论: (1)建表设置外键时要记得级联置空或者级联删除,避免不必要的麻烦 (2)定义表属性时,varchar2是比较好的选择,为变长数组。可以避免不必要的麻烦 (3)为约束起名时尽量保证名称方便阅读 (4)敲入SQL语句时要保证为英文输入法,包括空格与符号全部为英文输入法。
2.思考题 (1)一个列上有外码约束如何实现。 使用 alter table table_name add constraint FK foreign key (x) references X(y); 语句增加外码约束。 (2)删除表时,表中某一列是另外一个表的外键,此表如何删除。 需要为这一列建立级联删除。 (3)对表中某一列的数据类型进行修改时,要修改的列是否必须为空列。 是的,否则会报错。 |
|
五、指导教师意见
指导教师签字: 年 月 日 |