01 数据库及数据表的创建与删除                        
                                 

                                                                       
 广州大学学生实验报告

                                     开课学院及实验室:计算机科学与工程实验室418B室        
2018年05月 09 日


学院

计算机科学与教育软件

年级、专业、班

网络***

姓名

卟咚君

学号

1606100***


实验课程名称

数据库原理实验

成绩

 


实验项目名称

数据库及数据表的创建与删除

指导老师

 

                 
实验目的


在数据库中,基本表用于存储数据;视图是虚表,在数据库中只存储视图定义(物化视图除外),通过视图可以查询、更新基本表中的数据;索引主要用于提高存取效率。通过本次实验,可以掌握基本表、视图、索引在数据库中的基本管理方法。

实验要求


熟悉实验室实验环境,阅读本次实验预备知识,熟悉基本表、视图、索引的基本概念,了解基本表、视图、索引的基本管理语法。实验中根据实验步骤要求书写相应的SQL代码并运行,记录和分析运行结果,使用代码验证SQL代码执行后是否满足步骤要求,并独立完成实验报告。

实验环境

Oracle 10g,windows 2003;  

实验内容和步骤

(建议先把实验内容和步骤拷贝到SQL Developer工作区,然后按步骤进行实验,后同)

1.创建学生选课关系数据库中的STUDENT表(特别提示:表结构见1.3节,使用书上的表结构是错误的,后同);

create table Student

(

  Sno char(9) primary key,/*列级完整性约束条件*/

  Sname char(20) unique,

  Ssex char(3),

  Sage smallint,

  Sdept char(20)

);

2.创建学生选课关系数据库中的COURSE表;

create table Course

(

  Cno char(4) primary key,

  Cname char(40),

  Cpno char(4),

  Ccredit smallint,

  foreign key (Cpno)  references Course(Cno)/*表级完整性约束条件*/

);

3.创建学生选课关系数据库中的SC表;

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) 

);

4.运行下列语句,为基本表添加数据;

--以下为学生表的初始数据

insert into Student(sname,ssex,sno, sage, sdept)
values('李勇','男','200215121',20,'CS');

insert into Student(sname,ssex,sno, sage, sdept)
values('刘晨','女','200215122',19,'CS');

insert into Student(sname,ssex,sno, sage, sdept)
values('王敏','女','200215123',18,'MA');

insert into Student(sname,ssex,sno, sage, sdept)
values('张立','男','200215125',19,'IS');

--以下为课程表的初始数据

insert into course(cno,cname,cpno,ccredit) values('6','数据处理',null,2);

insert into course(cno,cname,cpno,ccredit) values('2','数学',null,2);

insert into course(cno,cname,cpno,ccredit) values('7','PASCAL语言','6',4);

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);

insert into course(cno,cname,cpno,ccredit) values('4','操作系统','6',3);

--以下为选修表的初始数据

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);

commit;

5.修改Student表结构,为Student表格添加一个“入学时间”属性,属性名为Senrollment,各元组在属性Senrollment的值是多少;

alter table student add Senrollment date;

--各元素在Senrollment的值为null

6.修改Student表结构,把Ssex列的宽度设置为6个字节;

alter table student modify Ssex char(6);

7.修改Student表结构,删除Senrollment列;

alter table student drop column Senrollment;

8.创建视图ds,该视图包含所有选修了“数据库原理”的学生信息(如果提示没有权限,请使用管理员授予当前用户Create view权限);

create view ds as select *from student where sno in (select sno from sc,course
where sc.cno=course.cno and course.cname='数据库原理');

9.创建视图maleStudent,该视图包含男学生所有信息,通过视图maleStudent更新基本表数据时必须保证学生性别为男;

create view maleStudent as select *from student where student.ssex='男' with
check option;

10.删除视图maleStudent;

drop view maleStudent;

11.为Course表的CName列建立唯一索引,索引名称为uniqueCname;

create unique index uniqueCname on course(cname);

12.试着为Course表的Cpno列建立唯一索引,索引名为indexCpno1,如果发生错误,请说明普通索引和唯一索引有何区别;

create unique index indexCpno1 on course(cpno);


--当要创建索引的列中的内容的值没有重复时(空值除外),才能对其创建唯一索引,否则,就创建不了唯一索引。通常来说,对于相同环境下(相同的对象,相同的操作,相同的检索条件等),唯一索引都会更好一些,其COST值也要更低一些。

13.为Cource表的Cpno列建立普通索引,索引名称为indexCpno2;

create index indexCpno2 on course(cpno);

14.删除索引indexCpno2;

drop index indexCpno2;

15.删除基本表Student,如果发生错误,请分析原因;

drop table student cascade constraints;

--该表被其他表的约束所引用,存在依赖该表的对象,不能删除。选择级联删除可将依赖对象一起删除

16.删除基本表SC;

drop table sc;

17.参考1.3节学生选课关系数据库的表结构,列出各个关系表应有的主码和外码约束(文字回答即可);


--在学生表中,sno约束为主码,sname约束为唯一。在课程表中,cno约束为主码,cname约束为唯一,cpno为外码,引用course(cno).在学生选修表中,sno为外码,参照student(sno),cno为外码,参照corse(cno)

18.查看已创建的Student、SC、Course表的约束,如果某个表缺少应有的主码或外码约束,为该表添加缺失的主码或外码约束。

实验总结

总结实验过程中涉及到的知识点、实验过程中遇到的问题及解决方法。


通过该实验,掌握了基本表、视图、索引的创建与删除等基本管理语法。在创建基本表的时候,要根据实际情况对各个列属性进行约束。对于一些表参照了别的基本表的,删除被参照的基本表的时候,不能直接删除,需要级联删除。

在用户创建视图之前,需要先把创建视图的权限给予该用户。还有就是创建唯一索引时,需要创建索引的列中的内容的值没有重复时(空值除外)。