数据库实验报告Word文档下载推荐.docx
《数据库实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库实验报告Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
设有一个SPJ数据库,包括SPJSPJ4个关系模式
S(SNO,SNAME,STATUS,CITY)
P(PNO,PNAME,COLOR,WEIGHT)
J(JNO,JNAME,CITY);
SPJ(SNO,PNO,JNO,QTY);
输入书上相应的数据并进行查询以及操作.
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
createtableS
(
SNOnchar(10)primarykey,
SNAMEnvarchar(10),
STATUSint,
CITYnvarchar(10)
)
createtableP
PNOnchar(10)primarykey,
PNAMEnvarchar(10),
COLORnvarchar(10),
WEIGHTint
)
createtableJ
JNOnchar(10)primarykey,
JNAMEnvarchar(10),
createtableSPJ
SNOnchar(10),
PNOnchar(10),
JNOnchar(10),
QTYint,
primarykey(SNO,PNO,JNO),
foreignkey(SNO)referencesS(SNO),
foreignkey(PNO)referencesP(PNO),
foreignkey(JNO)referencesJ(JNO),
直接在企业管理中新建表将数据输入
Select*from表名字
Insert的信息如下
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
Insert数据时候如果插入了重复主键的数据时会报错,此时只要将相应主键的名字改了即可。
使用insertinto语句时候如果values里面的内容和创建表的类型不一样也会报错
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
使用select*fromPselect*fromS出现以下结果其他不给显示了
三、实验小结、建议及体会
通过这次试验,我简单的明白了在SQL2000查询分析器中创建数据库以及数据的方法,为以后的实验做了一定的基础,同时我也明白了一些数据创建查询的一些必要知识,以及敏感操作,对以后的操作错误一定可以更快的解决。
数据库系统原理
关系数据库标准语言sql
根据第一次试验完成以下操作
1求供应工程J1零件的供应商号码SNO
2求供应工程J1零件为P1的供应商号码SNO
3求供应工程J1零件为红色的供应工程号JNO
4求没有使用天津供应商生产的红色零件的工潮JNO
5求至少使用了供应商S1所供应的全部零件的工程号JNO
6找出所有供应商的姓名和所在城市
7找出所有零件的名称颜色重量
8找出使用供应商S1所供应零件的工程号
9找出工程项目J2使用的各种零件的名称及其数量
10找出上海厂商供应的所有零件号码
11找出使用上海产的零件的工程号码
12找出没有使用天津产的零件的工程号码
13把全部红色零件的颜色改成蓝色
14由S5供给J4的零件改为由S3供给
15删除S2
16讲(S2,J6.P4.200)插入到SPJ表
实验代码如下
1selectdistinctSNO
fromSPJ
whereJNO='
J1'
;
--求工程为J1的供应商号码
2selectdistinctSNO
andPNO='
P1'
--工程为J1零件为P1的供应商号码
3selectSNO
andPNOin(selectPNOfromPwhereCOLOR='
红'
);
--工程为J1零件为红色
4selectJNO
wherePNOnotin(selectPNOfromPwhereCOLOR='
orSNOnotin(selectSNOfromSwhereCITY='
天津'
5selectdistinctJNO
fromSPJSP1
wherenotexists
(select*fromSPJSP2
whereSP2.SNO='
S1'
andnotexists(select*fromSPJSP3whereSP3.Jno=SP1.JnoandSP3.PNO=SP2.PNO))
6selectSNAME供应商姓名,CITY供应商所在城市fromS
7selectPNAME名称,COLOR颜色,WEIGHT重量fromP
8selectdistinctJNOS1的供应商工程号fromSPJwhereSNO='
9selectPNAME,SUM(SPJ.QTY)数量
fromP,SPJ
whereP.PNO=SPJ.PNOandSPJ.JNO='
J2'
groupbyPNAME
10selectdistinctPNO
fromS,SPJ
whereS.SNO=SPJ.SNOandS.CITY='
上海'
11selectdistinctJNAME
fromS,SPJ,J
whereSPJ.SNO=S.SNOandSPJ.JNO=J.JNOandS.CITY='
12selectJNOfromSPJSP1whereJNOnotin(
selectJNOfromSPJSP2wherePNOin(selectPNOfromSPJSP3,SwhereS.SNO=SP3.SNOandS.CITY='
))
13updatePsetCOLOR='
蓝'
whereCOLOR='
14updateSPJsetSNO='
S3'
whereSNO='
S5'
P6'
andJNO='
J4'
select*fromSPJ
15deletefromSwhereS=’S2’
16insertintoSPJvalues(S2,J6,P4,,200)
三、主要仪器设备及耗材
SQLServer2000
查询时必要的时候要使用distinct来让输出结果不重复这样可以让显示结果简洁化
未使用distinct使用distinct
显然使用它更好些同时在某些时候使用exists来判断这样可以更好的得到自己想要的结果
通过这次试验我明白了数据库查询,更新,删除,等的具体操作并且熟悉运用了一些方法来查询一定条件下的结果,在查询的过程中遇到了一些错误,但是在对证书上了之后又及时的改正,使得我能够在规定的时间内完成实验,在试验中对于有些操作我还是比较生疏的虽然运用了它解决了部分问题但是还是很难熟练的运用它。
数据库安全性应用
一、实验内容描述(问题域描述)
今有两个关系模式,
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
使用SQL的GRANT和REVOKE完成以下任务
1用户王明对两个表有select权利
2用户李勇对两个表有insert和delete权利
3每个职工只对自己的表有select权利
4用户刘星对职工表有select权利对工资表有更新权利
5用户张新具有修改这两个表的结构的权利
6用户周平具有两个表的所有权利,并有赋予其他用户授权的权利
7用户杨兰具有从每个部门职工中select最高工资,最低工资,平均工资的权利他不能查看其他人工资.
二、基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
1创建两个表
createtableworker
widvarchar(10)primarykey,
wnamenvarchar(10),
wagevarchar(10)
constraintc3check(wage<
=60),
wdutynvarchar(10),
wsalaryint,
wnumvarchar(10)foreignkeyreferencesxnum(nnum)
ondeletecascade
onupdatecascade
createtablexnum
nnumvarchar(10)primarykey,
nnamenvarchar(10),
npresidentnvarchar(10),
nphonevarchar(20)
相应权利的代码
1EXECsp_addrole‘王明'
grantselectonworkerto王明;
grantselectonxnumto王明;
2EXECsp_addrole‘李勇'
grantinsert,updateonworkerto李勇;
grantinsert,updateonxnumto李勇;
3GRANTSELECTON职工
WHENUSER()=NAME
TOALL;
4EXECsp_addrole‘刘星'
grantselectonworkerto刘星;
createviewliuxin
as
selectwsalaryfromworker
grantupdateonliuxinto刘星;
5EXECsp_addrole‘张新'
Grantaltertableon职工部门
To张新
6EXECsp_addrole‘周平'
grantallprivilegesonworkerto周平withgrantoption;
grantallprivilegesonxnumto周平withgrantoption;
7createviewyang
as
selectmax(wsalary)最大,min(wsalary)最小,avg(wsalary)一般fromworker
EXECsp_addrole‘杨兰'
grantselectonyangto杨兰;
三主要仪器设备及耗材
个人计算机SQLServer2000
1在调试中如果使用createrole角色名来直接创建角色的话,是不允许的
EXECsp_addrole‘角色名'
一定要使用这样才行。
2用户与角色的创建时不一样的对于SQL用户要绑定登入这样在登入SQL的时候
要输入相应的登入账号和密码才行
我们可以再企业管理器中看到各个角色的情况
三、实验小结、建议及体会
通过这次试验我明白了在数据库中如何构建角色和用户的方法,同时我也明白了赋予用户角色权利和回收用户权利的方法,通过一定的使用这些方法我对这些东西都有了一定的认识.在试验中虽然遇到了不少的困难但是还是在网络的帮助下我解决了这些问题。
数据库完整性
朱鹏
使用SQL对数据进行完整性控制。
假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号是主码;
部门(部门号,名称,经理名,电话),其中部门号为主码。
用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:
(1)定义模式的主码;
(2)定义参照完整性;
(3)定义职工年龄不得超过60岁
二、实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等)
1.定义主键可以用:
在部门表中:
列级的如:
部门号
varchar(10)
RIMARY
KEY;
表级的如:
CONSTRAINT
PK_SC
KEY(部门号)(取了别名PK_SC);
在职工表中:
职工号
varchar(20)
EMP_SC
KEY(职工号)(取了别名EMP_SC);
2.
定义参照完整性:
FK_DEPTNO
FOREIGN
KEY(部门号)
REFFERENCES
部门号(部门号));
3.
定义职工年龄不得超过60岁
使用check关键字:
年龄
SMALLINTCHECK
(年龄<
=60);
三、主要实验工具、仪器设备及耗材
个人计算机,SQLServer2000
实验结果分析(可加页)
一、实验结果描述
用SQL定义关系模式,实验结果截图如下:
1、部门
(1)SQL语句
(2)执行Sql后的结果:
2、职工
(1)SQL语句
二、实验小结、建议及体会
通过本次实验,我对数据库有了更为深刻的理解。
关于数据库完整性,是指数据的正确性和相容性,它是为了防止数据库中存在不符合语义的数据,即有不正确的数据。
在实验中,涉及到了实体完整性(主码)定义和参照完整性(部门号)的定义。