《数据库原理》实验报告书班级: 学号:姓名:指导教师:实验成绩:中南林业科技大学涉外学院理工系目录数据库原理实验安排 (3)实验一数据库和表的建立、数据操作 (4)实验二 SQL语言的使用 (9)实验三完整性、安全性实现 (16)实验四数据库编程 (18)附录一SQL Server的安装 (20)数据库原理实验安排一、实验目的通过实验,使学生熟悉并掌握数据库的基本概念、基本原理、和基本技术;能够应用这些理论和技术设计合理的数据库;更重要的是通过教学活动,使学生能够把与数据库相关的先修后继知识融会贯通,初步具有开发完整可用的数据库系统的能力。
二、实验安排本门课程共分4个实验,8学时实验一数据库和表的建立、数据操作 2学时实验二 SQL语言的使用2学时实验三完整性、安全性实现 2学时实验四数据库编程 2学时三、实验考核实验成绩通过实验报告及每次实验后的验机给出,每次实验结束后都必须写出实验报告。
实验一数据库和表的建立、数据操作一、实验目的:掌握使用SQL语言进行数据定义和数据操纵的方法。
二、实验要求:建立一个数据库stumanage,建立三个关系表students,course,grade。
向表中插入数据,然后对数据进行删除、修改等操作,对关系、数据库进行删除操作。
三、实验步骤:1、在SQL Server中输入本机器的名字,选择“windows身份验证”。
点击确定连接SQL Server数据库服务器。
2、新建查询分析器。
3、在查询分析器中输入SQL语句------建立数据库stumanage。
然后单击上面的绿色三角形右箭头。
下部的空白区显示该语句的运行情况。
4、选择数据库stumanage为当前数据库。
5、如下图建立表students:列名数据类型允许空主键说明(1) sno Char(8) 否是学号(2) sname Varchar(20) 是否姓名(3) sex Char(2) 是否性别(4) dept Varchar(20) 是否所在系如下图建立表:course列名数据类型允许空主键说明(1) cno Char(6) 否是课程号(2) cname Varchar(20) 是否课程名如下图建立表sc:(注:包括两个外键,sno和cno共同组成主键)列名数据类型允许空主键外键说明(1) sno Char(8) 否是 students(sno) 学号(2) cno Char(6) 否是 course(sno) 课程号(3) grade int 否否否成绩6、使用SQL语句完成建表操作并以截屏的方式将建表操作过程粘贴在下方表格中。
表student建立表course建立表scstudents表中插入以下数据:(1)20050101,王飞,男,计算机系(2)20050102,李丽,女,信息系(3)20050103,张晨,女,信息系(4)20050104,刘建峰,男,信息系(5)20050105,李勇志,男,信息系(6)20050106,邹红艳,女,计算机系8、在course表中插入以下数据:(1)01,数据结构(2)02,数据库原理(3)03,计算机组成原理(4)04,Java程序设计(5)05,算法导论9、在sc表中插入以下数据:(1) 20050101,01,70 (2) 20050101,02,90 (3) 20050101,03,93 (4) 20050101,04,85(5) 20050102,02,77(6) 20050102,03,84(7) 20050102,04,88(8) 20050102,05,80(9) 20050103,02,79(10)20050103,03,96 (11)20050103,04,70 (12)20050105,01,90 (13)20050105,02,93 (14)20050105,03,56 (15)20050105,04,85 (16)20050105,05,82 (17)20050106,01,91 (18)20050106,03,82 (19)20050106,04,87 (20)20050106,05,9410、对每一门课,求学生的平均成绩,并把结果以基本表的形式存入数据库。
将操作过程和结果展示以截屏的方式粘贴在下方表格中。
11、修改sc表中sno为20050102、cno为02的记录的grade属性值为85,然后将该条记录删除。
将操作过程和结果展示以截屏的方式粘贴在下方表格中。
12、删除‘李丽’的所有选课情况。
将操作过程和结果展示以截屏的方式粘贴在下方表格中。
13、删除数据库中的三个表中的所有数据,将操作过程和结果展示以截屏的方式粘贴在下方表格中。
14、删除数据库中的三个表结构。
将操作过程和结果展示以截屏的方式粘贴在下方表格中。
15、删除数据库,将操作过程和结果展示以截屏的方式粘贴在下方表格中。
四、实验分析和体会:这次实验让我粗略的了解如何创建数据库、如何创建表格、如何插入信息、如何查询信息以及如何删除信息。
这次实验让我感觉意识到,数据库语言与c语言和java语言还是有许多不同的,如果用之前学过的思想来学数据库的话还是不行的,必须从头开始。
不过还是有共同点的,那就是多练,多想。
实验二SQL语言的使用一、实验目的:掌握使用SQL语言进行各种查询的操作和视图的操纵方法。
二、实验要求:在现有的数据库上进行各种查询操作,对视图、存储过程的创建、使用等操作。
三、实验步骤:1、在SQL Server中输入本机器的名字,选择“windows身份验证”。
点击确定连接SQL Server数据库服务器。
2、新建查询分析器。
3、在查询分析器中输入SQL语句,建立起实验要操作的数据库test1,并在库中建立表、数据(数据参照教材第二章习题)。
4、在数据库test1中进行下列查询操作,将查询语句与结果(结果以截屏图片的方式)写入下面的表格中。
(1)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称(2)查询所有零件情况,先按零件名称升序排列,零件名称相同按重量SQL语句:select * From P ORDER BY pname, weight DESC结果:SQL语句:select jname,jno From J Where jname like ‘%厂%’结果:SQL语句: SELECT Sname,Sno FROM S WHERE Sname LIKE ‘_ 方%’结果:SQL语句:select max(weght)最大值,min(weight)最小值,avg(weight)平均值 From P结果:(6)查询零件中名为“螺丝刀”的零件的种类数、平均重量。
SQL语句:SELECT AVG(weight),count(*) FROM P WHERE pname= ' 螺丝刀 ' 结果:(7)查询供应商S1所供应的各种零件的名称和数量。
SQL语句:select pname 零件名称,qty 零件数量 From SPJ,P Where SJP.pno=P.pno, And SJP.sno=‘s1’结果:SQL语句:select pname 零件名称 ,sum(qty )零件数量 from SPJ left outer join P on (SPJ.pno=P.pno) where SPJ.jno='j1' group by pname结果:SQL语句:select jname 没有使用红色螺丝刀的工程名称 from J where not exists (select*from SPJ,P where SPJ.pno=P.pno and SPJ.jno=J.jno and color='红色' and pname='螺丝刀');结果:SQL语句:select sno没有供应红色螺丝刀的供应商 from S where not exists (select*from SPJ,P where SPJ.pno=P.pno and SPJ.sno=S.sno and color='红色' and pname='螺丝刀');结果:SQL语句:select jno 所用零件数量超过的工程项目号 from SPJ group by jno having sum(qty)>500结果:SQL语句:select jname 所用零件种类超过种的工程项目名称 from J where jno in(select jno from SPJ group by jno having count(pno)>3);结果:(13)查询使用了全部零件的工程项目名称。
SQL语句:select jname 所用全部零件的工程项目名称 from J where jno in(select jno from SPJ group by jno having count(pno)=6);结果:SQL语句:select sname 至少供应了工程J1所使用的全部零件的供应商名称 from S where not exists(select * from SPJ X where X.jno='j1'and not exists (select * from SPJ Y where S.sno=Y.sno and X.pno=Y.pno) )结果:SQL语句:select sname 供应商名称 ,pname 零件名,jname 工程名称 ,qty 数量 from S,P,J,SPJ where S.sno=SPJ.sno and P.pno=SPJ.pno and J.jno=SPJ.jno结果:(16)查询“东方红”供应商供应情况,显示供应的零件名、工程名称、SQL语句:select pname 零件名,jname 工程名称 ,qty 数量 from S,P,J,SPJ where S.sno=SPJ.sno and P.pno=SPJ.pno and J.jno=SPJ.jno and sname='东方红'结果:件代码,供应数量。
针对该试图完成如下查询,将查询语句与结果(结果以截屏图片的方式)写入下面的表格中。
SQL语句:create view jcc as select sno,pno,qty from SPJ,J where J.jno=SPJ.jno and jname='机车厂'结果:(2)查询处供应商S2的供应情况。
SQL语句:select * from jcc where sno='s2'结果:四、实验分析和体会:实验三完整性、安全性实现一、实验目的:使学生加深对数据库安全性和完整性的理解,并掌握SQL Server中有关用户、角色及操作权限的管理方法,学会创建和使用规则、缺省和触发器。