版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统概论实验报告书专业班级学 号姓 名指导教师实验一:数据定义语言 实验要求 熟悉Oracle上机环境,掌握Oracle客户端的配置; 建立数据库表,修改数据库表结构,建立、删除索引; 实验方法 按照附录中的操作步骤进行客户端的配置; 将实验需求用SQL语句表示; 执行SQL语句; 查看执行结果,如果结果不正确,进行修改,直到正确为止。 实验内容 1.SQL数据定义语句:例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2) 字段,Sname 字段为Sname(C,8)且可为空。例1-2: (修改数据库表) 在Student表中增加SE
2、X(C,2) 字段。例1-3: (修改列名) 将Student表中列名SEX修改为SSSEX。例1-4: (修改数据库表) 将Student表中把Sname 字段修改为Sname(C,15)且为非空。例1-5: (建立索引) 为Score表按课程号升序、分数降序建立索引,索引名为SC_GRADE。例1-6: (删除索引) 删除索引SC_GRADE。例1-7: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。例1-8: (修改数据库表) 删除成绩表Score的参照完整
3、性约束关系。例1-9: (修改数据库表) 添加成绩表Score的参照完整性约束关系。例1-10: (修改数据库表名) 将数据库表S1改名为Student_Temp。 实验总结 在创建表时分段写,这样一目了然,便于阅读。表创建和修改时,用COMMIT,这样数据库中才能实现更改。实验二:数据操纵语言 实验要求 对数据库表进行插入、修改和删除数据的操作。 实验方法 按照附录中的操作步骤进行客户端的配置; 将实验需求用SQL语句表示; 执行SQL语句; 查看执行结果,如果结果不正确,进行修改,直到正确为止。 实验内容 2.SQL数据操纵语句:例2-1: (插入数据) 按前面各表中的数据分别插入到教学数
4、据库的四个数据库表中。INSERT INTO Student VALUES('96001','马小燕','CS','01','21','女'); INSERT INTO Student VALUES('96002','黎明','CS','01','18','男'); INSERT INTO Student VALUES('96003','刘东明','MA',
5、'01','18','男');INSERT INTO Student VALUES('96004','赵志勇','IS','02','20','男'); INSERT INTO Student VALUES('97001','马蓉','MA','02','19','女'); INSERT INTO Student VALUES('97002'
6、,'李成功','CS','01','20','男');INSERT INTO Student VALUES('97003','黎明','IS','03','19','女');INSERT INTO Student VALUES('97004','李丽','CS','02','19','女'); INSERT INTO Stud
7、ent VALUES('97005','司马志明','CS','02','18','男');INSERT INTO Course VALUES('001','数学分析','144');INSERT INTO Course VALUES('002','普通物理','144');INSERT INTO Course VALUES('003','微机原理','72'
8、;);INSERT INTO Course VALUES('004','数据结构','72');INSERT INTO Course VALUES('005','操作系统','64');INSERT INTO Course VALUES('006','数据库原理','64');INSERT INTO Course VALUES('007','DB_Design','48');INSERT INTO Cou
9、rse VALUES('008','程序设计','56');INSERT INTO Teach VALUES('王成刚','男','004','05-9月-1999','CS'); INSERT INTO Teach VALUES('李正科','男','003','05-9月-1999','CS'); INSERT INTO Teach VALUES('严敏','女
10、','001','05-9月-1999','MA'); INSERT INTO Teach VALUES('赵高','男','004','05-9月-1999','IS'); INSERT INTO Teach VALUES('李正科','男','003','23-2月-00','MA'); INSERT INTO Teach VALUES('刘玉兰','女
11、','002','23-2月-00','CS');INSERT INTO Teach VALUES('王成刚','男','004','23-2月-00','IS'); INSERT INTO Teach VALUES('马悦','女','008','06-9月-00','CS'); INSERT INTO Teach VALUES('王成刚','男'
12、,'007','05-9月-1999','CS'); INSERT INTO Score VALUES('96001','001',77.5); INSERT INTO Score VALUES('96001','003',89); INSERT INTO Score VALUES('96001','004',86); INSERT INTO Score VALUES('96001','005',82); INSERT
13、INTO Score VALUES('96002','001',88); INSERT INTO Score VALUES('96002','003',92.5); INSERT INTO Score VALUES('96002','004',90); INSERT INTO Score VALUES('96003','004',92); INSERT INTO Score VALUES('96003','005',90); INSER
14、T INTO Score VALUES('96003','002',89); INSERT INTO Score VALUES('96003','007',76); INSERT INTO Score VALUES('96003','001',69);INSERT INTO Score VALUES('97001','001',96); INSERT INTO Score VALUES('97001','008',95); INSERT
15、 INTO Score VALUES('96004','001',87); INSERT INTO Score VALUES('96003','003',91); INSERT INTO Score VALUES('97002','003',91); INSERT INTO Score(SNO,CNO) VALUES('97002','004'); INSERT INTO Score VALUES('97002','002',92);
16、INSERT INTO Score VALUES('97004','005',90); INSERT INTO Score VALUES('97004','006',85); INSERT INTO Score VALUES('97004','008',75);INSERT INTO Score VALUES('97003','001',59); INSERT INTO Score VALUES('97003','003',58);例2
17、-2:(多行插入) 将表Student中在计算机系(CS)的学生数据插入到表Student_Temp。例2-3:(利用查询来实现表的定义与数据插入) 求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。例2-4: (修改数据) 将Student_Temp表中所有学生的年龄加2。例2-5: (修改数据) 将Course表中程序设计课时数修改成与数据结构的课时数相同。例2-6: (插入数据) 向Score表中插入数据(98001, 001, 95),根据返回信息解释其原因。违反完整约束条件<scott.ssno_fk>-未找到父类关键字;在student表中没有建立980
18、01的学生。例2-7: (插入数据) 向Score表中插入数据(97001, 010, 80),根据返回信息解释其原因。因为违反了完整性约束CONSTRAINT Cno_fk FOREIGN KEY(CNO) REFERENCES Course(CNO) Course表中没有010的课程号。例2-8: (删除数据) 删除Student表中学号为96001的学生信息,根据返回信息解释其原因。因为违反了完整性约束CONSTRAINT SSno_fk FOREIGN KEY(SNO) REFERENCES Student(SNO)。例2-9: (删除数据) 删除Course表中课程号为003 的课程
19、信息,根据返回信息解释其原因。因为违反了完整性约束CONSTRAINT Cno_fk FOREIGN KEY(CNO) REFERENCES Course(CNO)。例2-10: (删除数据) 删除学生表Student_Temp中学号以96打头的学生信息。例2-11: (删除数据) 删除数据库表Student_Temp中所有学生的数据。例2-12:(删除表) 删除数据库表Student_Temp和Student_Gr。 实验总结 在输入数据时,应按照创建表的顺序输入数据,注意数据的格式。同样,在修改数据时用COMMIT,数据库才会修改。在插入和删除时,不能违反表的完整性约束,否则插入和删除会报
20、错。实验三:数据查询语言 实验要求 对数据库表进行各种查询操作。 实验方法 将实验需求用SQL语句表示; 执行SQL语句; 查看执行结果,如果结果不正确,进行修改,直到正确为止。 实验内容 3.SQL数据查询语句:例3-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。例3-2: (不选择重复行) 求选修了课程的学生学号。例3-3: (选择表中的所有列) 求全体学生的详细信息。例3-4: (使用表达式) 求全体学生的学号、姓名和出生年份。例3-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。例3-6: (比较大小条件) 求年龄大于19岁的学生
21、的姓名和年龄。例3-7: (比较大小条件) 求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。例3-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。例3-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。例3-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。例3-11:(确定集合条件) 求不是数学系、计算机系的学生信息。例3-12:(匹配查询) 求姓名是以“李”打头的学生。例3-13:(匹配查询) 求姓名中含有“志”的学生。例3-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生
22、。例3-15:(匹配查询) 求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、课程号和成绩。例3-16:(匹配查询) 求课程名中包含 _ 字符的课程号、课程名和学时数。例3-17:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。例3-18:(控制行的显示顺序) 求选修003课程或004课程的学生的学号、课程号和分数,要求按课程号升序、分数降序的顺序显示结果。例3-19:(组函数) 求学生总人数。例3-20:(组函数) 求选修了课程的学生人数。例3-21:(组函数) 求计算机系学生的平均年龄。例3-22:(组函数) 求选修了课程001的最高、最低与平均成绩。例3
23、-23:(分组查询) 求各门课程的平均成绩与总成绩。例3-24:(分组查询) 求各系、各班级的人数和平均年龄。例3-25:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。 SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=CS GROUP BY SDEPT;ORA-00979: 不是 GROUP BY 表达式 GROUP BY表达式只能是集函数或者GROUP BY 中用于分组的列名。例3-26:(分组查询) 分析以下语句为什么会出现错误。并给出正确的查询语句。 SELECT SAGE FROM STUDENT GROUP
24、 BY SNO;ORA-00979: 不是 GROUP BY 表达式 GROUP BY表达式只能是集函数或者GROUP BY 中用于分组的列名。例3-27:(分组查询) 求学生人数不足3人的系及其相应的学生数。例3-28:(分组查询) 求各系中除01班之外的各班的学生人数。例3-29:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。例3-30:(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。例3-31:(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。例3-32:(自身连接查询) 求年龄大于 李丽
25、的所有学生的姓名、系和年龄。例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩,要求必须将002和003课程的相关信息显示出来。例3-34:(子查询) 求与 黎明 年龄相同的学生的姓名和系。例3-35:(子查询) 求选修了课程名为 数据结构 的学生的学号和姓名。例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。例3-39:(返回多列的子查询) 求与 李丽 同系且同龄的学生的姓名和系。例3
26、-40:(多个子查询) 求与 黎明 同系,且年龄大于 李丽 的学生的信息。例3-41:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。例3-42:(连接或嵌套查询) 检索至少选修王成刚老师所授课程中一门课程的女学生姓名。例3-43:(嵌套与分组查询) 检索选修某课程的学生人数多于3人的教师姓名。例3-44:(集合查询) 列出所有教师和同学的姓名和性别。例3-45:(相关子查询) 求未选修课程004的学生的姓名。例3-46:(相关子查询) 求选修了全部课程的学生的姓名。例3-47:(相关子查询) 求至少选修了学生 96002 所选修的全部课程的学生的学号。例3-48:(相关子查询)
27、 求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩。例3-49:(相关子查询) 查询被一个以上的学生选修的课程号。例3-50:(相关子查询) 查询所有未选课程的学生姓名和所在系。 实验总结 应该熟悉和熟练运用各种查询所用到的方法,同时注意在分组查询时GROUP BY的使用,GROUP BY表达式只能是集函数或者GROUP BY 中用于分组的列名。实验四:视图、授权控制与事务处理 实验要求 建立视图,视图查询,视图更新; 给某一或全部用户授权和收回授权; 事务回退,事务提交。 实验方法 将实验需求用SQL语句表示; 执行SQL语句; 查看执行结果,如果结果不正确,进行修改,直到正确为止。
28、 实验内容 4.SQL视图的定义与操纵:例4-1: (建立视图) 建立计算机系的学生的视图STUDENT_CS。例4-2: (建立视图) 建立由学号和平均成绩两个字段的视图STUDENT_GR。例4-3: (视图查询) 利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息。例4-4: (视图查询) 利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩。例4-5: (视图更新) 利用视图STUDENT_CS,增加学生( 96006,张然,CS,02,男,19 )。例4-6: (视图更新) 利用视图STUDENT_CS,将学生年龄增加1岁。观察其运行结果并分析原因。
29、例4-7: (视图更新) 利用视图STUDENT_GR,将平均成绩增加2分。观察其运行结果并分析原因。因为平均成绩是按照基本表计算得来的,不可以直接更改例4-8: (视图更新) 删除视图STUDENT_CS中学号为 96006 的学生的全部数据。例4-9: (视图更新) 删除视图STUDENT_GR的全部数据。例4-10:(删除视图) 删除视图STUDENT_CS和STUDENT_GR。5 SQL数据控制语句:例5-1: (授权) 给左右邻近同学(用户)授予在表Student上的SELECT权限,并使这两个用户具有给其他用户授予相同权限的权限。例5-2: (授权) 给邻近同学(用户)授予Tea
30、ch表上的所有权限。例5-3: (授权) 给所有用户授予Score表上的SELECT权限。例5-4: (授权验证) 观察左右邻近同学查询你所授权的表中的内容。例5-5: (收回授权) 收回上面例子中的所有授予的权限。6 SQL事务处理:例6-1: (事务回退) 将课程名称表中的 程序设计 课程学时数修改为80、微机原理 课程学时数修改为70学时,查询全部课程的总学时数后,取消所有修改(ROLLBACK)。再次查询全部课程的总学时数。注意比较分析两次查询的结果。例6-2: (事务提交) 将课程名称表中的 程序设计 课程学时数修改为80、微机原理 课程学时数修改为70学时,查询全部课程的总学时数后,确认所有修改(COMMIT)。再次查询全部课程的总学时数。注意比较分析两次查询的结果。 实验总结 视图是表的窗口,在视图中修改视图时,当用COMMIT提交时,视图和数据库中表中的数据都会更改。当授予其他用户权限时,其他用户就可以访问该用户的数据。当修改表时,若没有用COMMIT提交,是ROLLBACK回退的,数据库内容不会变。实验五:Or
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三明医学科技职业学院马克思主义基本原理概论期末考试模拟题附答案
- 2025山西省公务员考试《公共基础知识》题库及答案一套
- 露天矿物开采辅助工安全文化竞赛考核试卷含答案
- 履带运输车司机岗前实操熟练考核试卷含答案
- 拉床工岗前班组建设考核试卷含答案
- 浸渍干燥工变革管理知识考核试卷含答案
- 缩放排工安全培训强化考核试卷含答案
- 2025年乐山市税务系统遴选笔试真题汇编附答案
- 2024年潮州市特岗教师笔试真题题库附答案
- 2024年鹤壁市直属机关遴选公务员考试真题汇编附答案
- 高端科技产品研发保障承诺书5篇
- 子宫腺肌症护理
- 乡镇农业培训课件
- 设计措施方案模板(3篇)
- Dahua大华NYX5400BX系列红外非制冷焦平面热成像机芯使用说明书
- 《PLC应用技术项目教程》课件项目一
- 中医学针灸考试题及答案
- 2023年北京中考化学真题(含答案)
- 工程联系单管理办法(含附件)
- 2025至2030年中国高效高速混合机数据监测研究报告
- 餐具管理课件
评论
0/150
提交评论