学生学号
实验课成绩
武汉理工大学
学 生 实 验 报 告 书
课 程 名 称 数据库系统概论 开 课 学 院 计算机科学与技术学院 指 导 老 师 凌咏红 学 生 姓 名 专 业 班 级
— 学年 第 学期
实验课程名称: 数据库系统概论
实验项目名称 实验者 同组者 应用关系代数进行查询 专业班级 实验成绩 组别 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 设有一个SPJ数据库,包括S,P,J,SPJ 4个关系模式: S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY); 其中:供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;工程项目表J 由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量组成(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。 试着用关系代数完成如下查询: 1、求供应工程J1零件的供应商号码SNO; 2、求供应工程J1零件P1的供应商号码SNO; 3、求供应工程J1零件为红色的供应商号码SNO; 4、求没有使用天津供应商生产的红色零件的工程号JNO; 5、求至少用了供应商S1所供应的全部零件的工程号JNO。 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 关系运算包括诸如并、差、交、笛卡尔积等的传统的集合运算和包括选择、投影、连接、 除运算等的专门的关系运算。本实验,采用专门的关系运算符来进行查询。 1、 选择:它是在关系R中选择满足给定条件的诸元组,记作(R)={t∣t∈R∧F(t)=’ 真’}。其中,F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。 2.投影:是从R中选择出若干属性列组成新的关系,记作R中的属性列。 (R)={t[A]∣t∈R }。其中A为 3.连接:是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,记作∈R∧∈S∧{∣[B]}.其中A和B分别为R和S上度数相等且可比的属性组。θ是×比较运算符。连接运算从R和S的笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上值满足比较关系θ的元祖。 4.除运算:R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X属性列上得投影:元组在X上分量值X的象集Ys包含S在Y上得投影的集合。记作:R÷S={ 三、主要仪器设备及耗材 Sql Server 数据库 }其中为x在R中的象集,x=[X]。
第二部分:实验调试与结果分析(可加页) 一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 查询资料,对自己写的查询语句进行验证,仔细检查是否正确。 二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等) 1、求供应工程J1零件的供应商号码SNO: (=’J1’(SPJ)) 2、求供应工程J1零件P1的供应商号码SNO: (=’J1’∧PNO=’P1’(SPJ)) 3、求供应工程J1零件为红色的供应商号码SNO: (=’P1’ ( =’红’ (P)SPJ)) 4、求没有使用天津供应商生产的红色零件的工程号JNO: (SPJ) ﹣ (=’天津’∧Color=’红’ (SSPJP) 5、求至少用了供应商S1所供应的全部零件的工程号JNO: (SPJ) ÷ (=’S1’ (SPJ)) 三、 实验小结、建议及体会 关系代数是一种抽象的查询语言,它用关系的运算来表达查询。任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符、运算结果是运算的三大要素。 通过本次实验,我对关系型数据库在理论上有了初步的了解,并对关系代数有了一定的认识。为以后的学习打下了基础。 实验课程名称: 数据库系统概论
实验项目名称 实验者 同组者 SQL语句的使用 专业班级 实验成绩 组别 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一、 实验内容描述(问题域描述) 1、 用SQL语句建立试验1中的4个表; 2、针对建立的四个表用SQL语句完成试验1的查询 3、完成如下查询: (1)找出所有供应商的姓名和所在城市。 (2)找出所有零件的名称、颜色、重量。 (3)找出使用供应商S1所供应零件的工程号码。 (4)找出工程项目J2使用的各种零件的名称及其数量。 (5)找出上海厂商供应的所有零件号码。 (6)出使用上海产的零件的工程名称。 (7)找出没有使用天津产的零件的工程号码。 (8)把全部红色零件的颜色改成蓝色。 (9)由S5供给J4的零件P6改为由S3供应。 (10)从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。(11)请将(S2,J6,P4,200)插入供应情况关系。 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 1、定义模式 GREATE SCHEMA <模式名> AUTHORIZATION<用户名>(本次试验未用到) 2、建立一个数据库,CREATE DATABASES databasename; 3、创建四个表格 CREATE TABLE tablename(参数); 4、将数据导入到表格中 5、执行相应的查询命令 select [ALL|DISTINCT] <目录列表表达式>[,<目录列表表达式>]··· FROM<表名或视图名>[,<表名或视图名>]··· [WHERE <条件表达式>] [GROUP BY<列表 1 > [HAVING <条件表达式>]] [ORDER BY<列表 2 >[ASC|DESC]] 三、主要仪器设备及耗材 Sql Server数据库
第二部分:实验调试与结果分析(可加页) 一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 1、 我们可以通过将excel表格导入的方法来建立数据表 2.1、select SNO from SPJ where JNO=’J1’ 2.2、select SNO from SPJ where JNO=’J1’and PNO=’P1’ 2.3、select SNO from SPJ where JNO=’J1’and PNO IN (select PNO from P where COLOR=’红’) 2.4、select JNO from J where JNO NOT IN(select JNO from SPJ,S,P where S.CITY=’天津’and P.COLOR=’红’and SPJ.SNO=S,SNO and SPJ.PNO=P.PNO) 2.5、select JNO from J where NOT EXISTS (select * from SPJ SPJ1 where SPJ1.SNO=’S1’and NOT EXISTS (select * from SPJ SPJ2 where SPJ2.JNO=J.JNO and SPJ2.PNO=SPJI.PNO )) 3.1、select SNO,CITY from S 3.2、select PNAME,COLOR WEIGHT from P 3.3、select distinct JNO from SPJ where PNO IN (select distinct PNO from SPJ where SNO=’S1’) 3.4、select P.PNAME,SPJ.QTY from SPJ,P where SPJ.PNO=P.PNO and SPJ.JNO=’J2’ 3.5、select distinct PNO from SPJ where SNO IN(select SNO from S where CITY=’上海’) 3.6、select JNAME from J where JNO IN(select distinct JNO from SPJ where PNO IN(select distinct PNO from SPJ where SNO IN(select SNO from S where CITY=’上海’)) ) 3.7、select JNO from J where NOT EXISTS(select * from SPJ where EXISTS(select * from S where SPJ.JNO=J.JNO and S.SNO=SPJ.SNO and S.CITY=’天津’)) 3.8、update P set COLOR=’蓝’ where COLOR=’红’ 3.9、update SPJ set SNO=’S3’where SNO=’S5’and PNO=’P6’and JNO=’J4’ 3.10、delect from S where SNO=’S1’ 3.11、 insert into SPJ(SNO,JNO,PNO,QTY) values(’S2’,’J6’,’P4’,200) 二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等) 三、实验小结、建议及体会 本次实验强调的是Sql语句的使用,包括怎样去查询数据库。其中,我使用导入excel表格的方法来建立数据表。在具体查询时,简单查询还是很好完成的,嵌套查询以及还有EXISTS 谓词的查询还是着实难为了我,自己动了一番脑筋,还有在老师同学的帮助下最终完成了。复杂查询这方面的确是难点,不过,欣喜的是,自己最终还是掌握了它。
实验课程名称: 数据库系统概论
实验项目名称 实验者 同组者 数据控制(安全性) 专业班级 实验成绩 组别 实验日期 年 月 日 第一部分:实验分析与设计(可加页) 一、实验内容描述(问题域描述) 现有连个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号) 部门(部门号,名称,经理名,地址,电话号) 请用SQL的GRANT 和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能: (a)用户王明对两个表有SELECT 权力。 (b)用户李勇对两个表有INSERT 和DELETE 权力。 (c)每个职工只对自己的记录有SELECT 权力。 (d)用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。 (e)用户张新具有修改这两个表的结构的权力。 (f)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。 (g)用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 实验步骤: (1)首先创建两个表格; (2)创建若干个用户; (3)对各个用户授予不同的权限,sql授权语句如下: (a)GRANT SELECT ON 职工,部门TO 王明 (b)GRANT INSERT,DELETE ON 职工,部门 TO 李勇 (c)GRANT SELECT ON 职工 WHEN USER()=NAME TO ALL (d)GRANT SELECT,UPDATE(工资) ON 职工TO 刘星 (e)GRANT ALTER TABLE ON 职工,部门TO 张新 (f) GRANT ALL PRIVILIGES ON 职工,部门TO 周平WITH GRANT OPTION (g)CREATE VIEW 部门工资统计(最高工资,最低工资,平均工资) AS SELEST MAX(工资),MIN(工资),AVG(工资) FROM 职工 GROUP BY 部门号 GRANT SELECT ON 部门工资统计 TO 杨兰 三、主要仪器设备及耗材 Sql Server数据库
第二部分:实验调试与结果分析(可加页) 一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 在进行具体授权操作前,应该首先建立两个关系模式,并且最好在其中加入若干关系。然后授权给这些用户,GRANT语句的一半语法为: GRANT <权限>[,<权限>]··· ON <对象类型><对象名>[<对象类型><对象名>]··· TO <用户>[,<用户>]··· [WITH GRANT OPTION]。 然后用新建的用户登录数据库,进行授权的操作,明查看结果。进行未授权的操作时,会被系统拒绝。 二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等) 本次试验着重演练授权定义及存取控制功能,练习用sql语句实现这些功能。经过与同学讨论,确认自己写的sql语句正确,能够实现要求的操作。 三、实验小结、建议及体会 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。Sql Server数据库和其他数据库一样,在安全性这方面做了很多功夫,通过简单的grant和revoke并通过组合可以实现复杂的用户权限管理。通过自己实际动手操作,加深了对理论知识的理解,同时在将理论知识运用到实际的过程中也提高了动手能力。