《数据库原理实验报告.doc》由会员分享,可在线阅读,更多相关《数据库原理实验报告.doc(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、广州大学学生实验报告开课学院及实验室:计算机学院 年 月 日 学 院计算机学院年级、专业、班姓名学号实验课程名称数据库原理成绩实验项目名称SQL语言指 导 教 师注:实验要求与说明(1) 切忌抄袭实验手册任何内容;(2) 切忌抄袭任何其他同学实验报告,包括实验截图等;(3) 每次实验正式进行之前,请仔细阅读实验手册。遇到问题请先自行翻阅实验手册;(3) 请严格按照以下7个大标题填写实验内容;(4) 每一次实验都必须要有截图,以说明本次实验操作得当与否、成功与否。截图必须清晰、大小适当、有正确的先后顺序;每一张图都必须要有题注以说明该图的内容。(截图方法:同时按住ALT和PrtSc,即将当前窗口
2、复制到了系统剪贴板中,再粘贴到实验报告中即可)实验1-1数据库及数据表的创建与删除一、 实验目的掌握利用Oracle Database Configuration Assistant工具来创建和删除Oracle数据库,掌握Oracle中的用Create命令定义表的方法,以及表的完整性定义,并掌握Oracle中的用Alter命令 和Drop命令对表的修改和删除。二、 实验原理基于数据库系统概论,熟悉实验环境,熟悉基本表等本次实验的基本概念,了解创建数据表及其相关操作的语法。根据要求,编写相应的SQL代码,并运行、记录和分析结果,测试所编写代码是否满足步骤要求,完成实验。三、 使用仪器、材料Ora
3、cle 11g,windows10;四、 实验步骤1. 创建以下数据表(Student(主码为SNO)、Course(主码为CNO)、SC(主码为(SNO、CNO),其中SNO引用Student的SNO属性,CNO引用Course的CNO属性)2. 向三个表格中插入3条数据,数据内容自编。3. 修改Student表格,用SQL语句为Student表格添加一个“入学时间”属性,属性名为Senrollment。4. 限定Ssex的值只能为“男”或者“女”。5. 修改Course表格,用SQL语句为Course表格添加一个“说明”属性,属性名为“Cdesc”,类型为varchar2,长度为200。6
4、. 更改Course表格的Cdesc属性,使其长度变为500。7. 删除刚建立的属性Cdesc。8. 修改Course表的CPNO,使其为外码,引用Course表的CNO属性。Student表。属性名类型长度是否空含义SNOvarchar217主码(非空)学生编号Snamevarchar210否姓名Sageinteger年龄Ssexvarchar22性别Sdeptvarchar220所在系Course表属性名类型长度是否空含义CNOvarchar25主码(非空)课程编号Cnamevarchar220否课程名CPNOvarchar25先修课程Ccreditinteger学分SC表属性名类型长度是
5、否空含义SNOvarchar217主属性(非空)学生编号CNOvarchar25主属性(非空)课程编号Gradenumeric5,2成绩五、 实验过程原始记录(实验过程、数据、图表、计算等)create table Student( Sno varchar2(17) PRIMARY key, Sname VARCHAR2(10) not null UNIQUE, Sage INT, Ssex VARCHAR2(3) check(Ssex IN(男,女), Sdept VARCHAR2(20);create table Course( CNO VARCHAR2(5) PRIMARY KEY, C
6、name VARCHAR2(20) not null, CPNO VARCHAR2(5), Ccredit INT);1.create table SC( Grade numeric(5,2), Sno varchar2(17), Cno varchar2(5), PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno);insert into Student(sname,ssex,sno, sage, sdept) values(李勇,男,20
7、0215121,20,CS);/*插入student表数据*/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,) values(6,
8、数据处理,null,2);insert into course values(2,数学,null,2);insert into course values(7,PASCAL 语言,6,4);insert into course values(5,数据结构,7,4);insert into course values(1,数据库,5,4);insert into course values(3,信息系统,1,4);insert into course values(4,操作系统,6,3); insert into sc(Sno,Cno,Grade) values(200215121,1,92);
9、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);2.3.在student表格中添加“入学时间”属性,属性名为Senrollmentalter table Student ADD Senrollment date;4. 限定S
10、sex的值只能为“男”或者“女”答:在创建student基本表时已先行进行了检查。5.在course表格添加“说明”属性alter table Course ADD Cdesc VARCHAR2(200);6.修改Cdese长度变为500alter table Course MODIFY Cdesc VARCHAR2(500);7. 删除刚建立的属性Cdescalter table Course DROP COLUMN Cdesc;8. 修改Course表的CPNO,使其为外码,引用Course表的CNO属性。alter table course add constraint fk1 fore
11、ign key(CPno) references course(Cno);六、实验结果及分析实验结果截图,对实验进行说明和分析。1、Course表:SC表:Student表:2、Course表数据:SC表数据:Student表数据:3、4、student表的约束条件总Ssex检查男女。5、6、7、8、七、实验报告思考题 无。八、实验心得体会本次实验主要有以下收获和体会:1、首次使用oracle11g进行数据库实验,基本了解了oracle11g的基本语句和使用方法。2、通过本次实验,对基本表的创建,修改和删除有了实际上的应用,加深了对课本知识的理解,增强了操作能力。3、从实验中总体上增强了对SQ
12、L语言的运用和对oracle11g的可视化操作能力,更深层次的了解了SQL的使用方法和oracle11g界面操作。实验1-2 SQL语言一、实验目的熟悉并掌握创建表,插入记录,查询记录,删除记录,修改记录。创建索引,删除索引。创建视图,使用视图,删除视图。二、实验原理。三、使用仪器、材料Oracle 11g,windows10;四、实验步骤现有一个单位内部的小型图书借阅系统,假设每本图书的数量无限制,并且可以借给任何单位成员,每个单位成员可以借多本书,单位成员与图书的关系是多对多的关系。假设系统中仅有三个关系模式。数据表结构Reader表属性名类型长度是否空含义RNOvarchar24员工编号
13、(主码)Rnamevarchar210否员工姓名Rsexvarchar22性别Rageintegerinteger年龄Rbossvarchar210直接上司Raddressvarchar230办公地点Book表属性名类型长度是否空含义BNOvarchar24书本编号(主码)Bnamevarchar250否书名Bauthorvarchar250作者Bpressvarchar250出版社Bpricevarchar2numeric(6,2)价格RB表属性名类型长度是否空含义RNOvarchar24员工编号BNOvarchar24书本编号RBdatedate借阅日期1、 创建新的用户并授权:2、 以用
14、户CC的身份建立连接,并在此连接下执行后面的操作;3、 拷贝代码运行,删去旧的同名数据表:4、 建立表格Reader5、 拷贝代码运行,向Reader表格中插入十条数据6、 查询记录:在Reader表中查询直接上司是“李四”的员工的名字7、 修改记录:在Reader表中把直接上司是“李四”的员工的办公地点统一改为“420”8、 删除记录:在Reader表中把直接上司未赋值(NULL)是记录删去9、 删去数据表:把整个Reader表删去10、 重新执行第一、二步,即建立数据表、插入数据。11、 创建表格Reader2,比较Reader2和Reader中的记录和结构是否相同12、 分别执行下面的每
15、行语句,查看语句是否执行成功,分析为什么?13、 删除Reader2表格;14、 拷贝代码运行,建立表格Bookcreate table Book( BNOvarchar2(4), Bnamevarchar2(50) not null, Bauthorvarchar2(50), Bpressvarchar2(50), Bpricenumeric(6,2), primary key(BNO);15、 拷贝代码运行,向Book表格中插入5条数据insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B001,严蔚敏,数据结构,清华大学
16、出版社,null);insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B002,唐发根,数据结构,北航出版社,24);insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B003,王珊,数据库原理,高等教育出版社,40);insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B004,张飞,数据库原理,清华大学出版社,30);insert into book (BNO,Bauthor,Bnam
17、e, bpress, bprice) values(B005,王珊,数据库原理,清华大学出版社,null);16、 拷贝代码运行,建立表格RBcreate table RB( RNO varchar2(4), BNO varchar2(4), RBdate date default sysdate, primary key(RNO,BNO), foreign key (RNO) references Reader(RNO), foreign key (BNO) references Book(BNO);17、 拷贝代码运行,向RB表格中插入13条数据;insert into RB (RNO,B
18、NO) values (R001,B001);insert into RB (RNO,BNO) values (R001,B002);insert into RB (RNO,BNO) values (R001,B004);insert into RB (RNO,BNO) values (R002,B001);insert into RB (RNO,BNO) values (R003,B001);insert into RB (RNO,BNO) values (R004,B001);insert into RB (RNO,BNO) values (R004,B002);insert into R
19、B (RNO,BNO) values (R005,B001);insert into RB (RNO,BNO) values (R006,B001);insert into RB (RNO,BNO) values (R006,B003);insert into RB (RNO,BNO) values (R006,B005);insert into RB (RNO,BNO) values (R006,B002);insert into RB (RNO,BNO) values (R006,B004);初始数据reader表RNORNAMERSEXRAGERBOSSRADDRESSR001张三男20
20、李四416R002张三女35417R003李四男30416R004王五男20417R005马六男40416R006刘三男20417R007王四男40李四416R008李小龙男20李四417R009王小倩男40李四416R010王一小男20李四417book表中数据BNOBNAMEBAUTHORBPRESSBPRICEB002数据结构唐发根北航出版社24B003数据库原理王珊高等教育出版社40B004数据库原理张飞清华大学出版社30B005数据库原理王珊清华大学出版社B001数据结构严蔚敏清华大学出版社RB表中数据RNOBNORBDATE(实验时间)R001B001插入数据时的系统时间R001B
21、002R001B004R002B001R003B001R004B001R004B002R005B001R006B001R006B003R006B005R006B002R006B004以下为查询READER表中创建的约束类型,其中constraint_type为约束类型,该属性值的取值Type Code如下表所示。(可以根据上课所讲的实体完整性、参照完整性、用户自定义完整性理解以下约束类型;直接在SQL DEVELOPER中双击表格也可以查看在表上所建立的约束)select table_name,constraint_name,constraint_type from user_constrai
22、nts where table_name =READER;Type CodeType DescriptionActs On LevelCCheck on a tableColumnORead Only on a viewObjectPPrimary KeyObjectRReferential AKA Foreign KeyColumnUUnique KeyColumnVCheck Option on a viewObject1、 执行insert into RB(RNO,BNO) values(R010,B005);2、 写出删除Reader表格中编号为R010的员工,如果执行错误,分析错误原
23、因。3、 想办法删除Reader中的R010员工;方法一:先把RB中所有R010的借书记录都删掉方法二:修改数据表READER的结构,允许级联删除(注:ORACLE不支持级联更新)。4、 为Reader表添加一个属性列“出生年份”,名为Rbirthday,整数;5、 对于Reader表格,员工编号可以确定年龄,年龄又可以确定出生年份,因此存在传递函数依赖关系,删除Rbirthday列,使关系模式符合第三范式要求;6、 修改Reader表格的Raddress属性,使其长度为50,数据类型不变;7、 修改book表的Bprice属性,使其值得范围在10到100之间;8、 修改Reader表的Rag
24、e属性,使其值得范围为16到60之间。9、 试试是否可以删除Reader表,使用CASCADE是否可以删除?10、 删除Reader、Book和RB表。索引的建立与删除1、 重新执行前面的代码创建三个数据表并插入数据;2、 为Reader表格的Rname建立UNIQUE索引如何修改表格数据,再建索引?3、 删除索引。视图1、 如果上面的运行是在CC的连接中,则需要回到在sysdba 的连接中,执行:grant resource, connect, DBA to cc;否则系统显示没有创建视图的权限。执行完之后再回到CC的连接:在ORACLE SQL Developer 的左上方: 2、 建立在
25、416办公室工作的视图V416,视图包括员工的编号、姓名、年龄等信息3、 从V416中查询年龄大于30的员工信息4、 向视图V416中插入一条新的员工记录,然后从V416中查找该条记录,测试是否可以找到;插入成功了吗?为什么通过视图插入的纪录在视图中看不见?5、 建立在417办公室工作的视图V417,视图包括员工的编号、姓名、性别、年龄等信息,视图定义带with check option选项;6、 向视图V417中插入一条新的员工记录,然后从V417中查找该条记录,测试是否可以找到;7、 通过视图删除刚插入的员工记录,在基本表Reader中查看是否已经删除成功?8、 在视图V417上建立所有女
26、员工信息的视图FV417,查询视图结果9、 删除视图V417中没有借阅图书的员工信息10、 建立视图GV,数据包括每本图书的编号及其借阅数量。思考是否可以向GV中插入数据,为什么?11、 删除视图V417五、实验过程原始记录(实验过程、数据、图表、计算等)1,2连接数据库按指导书代码执行完毕。3、删除同名数据库按指导书书代码执行完毕,问:为何要先删去RB?能不能先删去READER?答:因为RB引用了READER的RNO作为外码,所以,要先删去RB,才能删去READER。create table Reader( RNOvarchar2(4) primary key, Rnamevarchar2(
27、10) not null, Rsexvarchar2(2), Rageinteger, Rbossvarchar2(10), Raddressvarchar2(30) ;4、insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R001,张三,20,男,李四,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R002,张三,35,女,null,417);insert into Reader (RNO,Rname,Rage,Rsex,R
28、boss, Raddress) values(R003,李四,30,男,null,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R004,王五,20,男,null,417);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R005,马六,40,男,null,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R006,刘三,20,男,nul
29、l,417);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R007,王四,40,男,李四,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R008,李小龙,20,男,李四,417);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R009,王小倩,40,男,李四,416);insert into Reader (RNO,Rname,Rage,R
30、sex,Rboss, Raddress) values(R010,王一小,20,男,李四,417);5、select Rnamefrom readerwhere (rboss=李四);6、UPDATE readerset Raddress=420where rboss=李四;7、DELETE FROM readerWHERE rboss is NULL;8、DROP TABLE Reader;9、10、create table Reader( RNO varchar2(4) primary key, Rname varchar2(10) not null, Rsex varchar2(3),
31、Rage integer, Rboss varchar2(10), Raddress varchar2(30);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R001,张三,20,男,李四,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R002,张三,35,女,null,417);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R003,李四,
32、30,男,null,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R004,王五,20,男,null,417);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R005,马六,40,男,null,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R006,刘三,20,男,null,417);insert into Reader (RNO,
33、Rname,Rage,Rsex,Rboss, Raddress) values(R007,王四,40,男,李四,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R008,李小龙,20,男,李四,417);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R009,王小倩,40,男,李四,416);insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values(R01
34、0,王一小,20,男,李四,417);create table reader2 as select * from reader;desc reader; desc reader2;11、12、update reader set RNO=R001 where Rname=张三;update reader2 set RNO=R001 where Rname=张三;*/insert into reader2(RNO,Rname,Rsex,Rage,Rboss, Raddress) values(null,lisi,null,null,null,null);drop table reader2;13、
35、create table Book( BNOvarchar2(4), Bnamevarchar2(50) not null, Bauthorvarchar2(50), Bpressvarchar2(50), Bpricenumeric(6,2), primary key(BNO);14、insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B001,严蔚敏,数据结构,清华大学出版社,null);insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B002,唐发根
36、,数据结构,北航出版社,24);insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B003,王珊,数据库原理,高等教育出版社,40);insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B004,张飞,数据库原理,清华大学出版社,30);insert into book (BNO,Bauthor,Bname, bpress, bprice) values(B005,王珊,数据库原理,清华大学出版社,null);15、create table RB( RNO
37、varchar2(4), BNO varchar2(4), RBdate date default sysdate, primary key(RNO,BNO), foreign key (RNO) references Reader(RNO), foreign key (BNO) references Book(BNO);16、17、insert into RB (RNO,BNO) values (R001,B001);insert into RB (RNO,BNO) values (R001,B002);insert into RB (RNO,BNO) values (R001,B004);
38、insert into RB (RNO,BNO) values (R002,B001);insert into RB (RNO,BNO) values (R003,B001);insert into RB (RNO,BNO) values (R004,B001);insert into RB (RNO,BNO) values (R004,B002);insert into RB (RNO,BNO) values (R005,B001);insert into RB (RNO,BNO) values (R006,B001);insert into RB (RNO,BNO) values (R00
39、6,B003);insert into RB (RNO,BNO) values (R006,B005);insert into RB (RNO,BNO) values (R006,B002);insert into RB (RNO,BNO) values (R006,B004);初始化三个表后:delete from reader where RNO=R010;1、delete from reader where RNO=R010;2、delete from RB where RNO=R010;delete from reader where RNO=R010;3、alter table re
40、ader add Rbirthday integer;4、alter table reader drop column Rbirthday;5、alter table reader modify Raddress varchar2(50);6、alter table book add constraint ck_bprice check (bprice between 10 and 100);7、alter table Reader add constraint ck_Rage check(Rage between 16 and 60);8、drop table reader cascade
41、9、drop table reader cascade constraints;drop table book cascade constraints;drop table rb cascade constraints;10、索引的建立与删除create table Reader( RNO varchar2(4) primary key, Rname varchar2(10) not null, Rsex varchar2(2), Rage integer, Rboss varchar2(10), Raddress varchar2(30);1、create table Book( BNO varchar2(4) primary key, Bname varchar2(50) not null, Bauthor varchar2(50), Bpress varchar2(50), Bprice nu