第一篇:GCSJK实验安排工程数据库实验报告
工程数据库设计与应用
实验报告
实验一
创建数据库的基本操作
学号:
1030413529
班级:
计科1305 姓名: 游思睿 成绩
指导教师:戴月明
一、实验目的
通过实验熟练掌握创建数据库的方法,掌握如何建表、添加、删除、更新、查询表中数据的方法,及创建和使用视图的方法。
二、实验内容
1、创建一个新的数据库。
2、建立一些新表,并对其作添加、删除、更新和查询记录的操作。
3、创建视图,并学会使用视图。
三、实验完成情况
四、心得体会
通过实验熟练掌握创建数据库的方法,掌握如何建表、添加、删除、更新、查询表中数据的方法,及创建和使用视图的方法。
工程数据库设计与应用
实验报告
实验二
创建过程的基本操作
学号:
1030413529
班级:
计科1305 姓名: 游思睿 成绩
指导教师:戴月明
一、实验目的
通过实验熟练掌握创建过程的方法,掌握如何新建过程、修改及调用过程的方法。
二、实验内容
1、创建一个分页查询的过程。
2、建立一些新表,并对其添加记录后再调用过程的操作。
三、实验完成情况
1.建立的新表
2.分3行为一页查询第2页内容
四、心得体会
通过实验熟练掌握创建过程的方法,掌握如何新建过程、修改及调用过程的方法。
工程数据库设计与应用
实验报告
实验三
创建函数的基本操作
学号:
1030413529
班级:
计科1305 姓名: 游思睿 成绩
指导教师:戴月明
一、实验目的
通过实验熟练掌握创建函数的方法,掌握如何新建函数、修改及调用函数的方法。
二、实验内容
1、创建一个新的函数,用于查询满足一定条件的(1)记录数、(2)记录。
2、建立一些新表,并对其添加记录后再调用函数的操作。
三、实验完成情况
四、心得体会
通过实验熟练掌握创建函数的方法,掌握如何新建函数、修改及调用函数的方法。
工程数据库设计与应用
实验报告
实验四
创建触发器的基本操作
学号:
1030413529
班级:
计科1305 姓名: 游思睿 成绩
指导教师:戴月明
一、实验目的
通过实验熟练掌握创建触发器的方法,掌握如何新建触发器、修改及使用触发器的方法。
二、实验内容
1、创建一个触发器:修改学生表里的姓名,同步更新成绩表里的姓名。
2、创建第二个触发器:删除学生表中的某个学生,同步删除成绩里的该学生的成绩记录。
三、实验完成情况
四、心得体会
通过实验熟练掌握创建触发器的方法,掌握如何新建触发器、修改及使用触发器的方法。
工程数据库设计与应用
实验报告
实验五
数据库应用的基本操作之一
学号:
1030413529
班级:
计科1305 姓名: 游思睿 成绩
指导教师:戴月明
一、实验目的
通过实验熟练掌握调用数据库的方法,掌握如何通过链接字调用数据库的方法。
二、实验内容
1、创建一个新的数据库链接字。
2、建立一个新的窗体,在窗体上使用控件来对数据库进行相应操作。
三、实验完成情况
四、心得体会
通过实验熟练掌握调用数据库的方法,掌握如何通过链接字调用
工程数据库设计与应用
实验报告
实验六
数据库应用的基本操作之二
学号:
1030413529
班级:
计科1305 姓名: 游思睿 成绩
指导教师:戴月明
一、实验目的
通过实验熟练掌握数据库备份鱼恢复的方法。
二、实验内容
1、创建一个数据库进行备份(完全备份、差异备份)。
2、对备份的数据库进行恢复。
三、实验完成情况
1、创建一个叫DBTest的数据库,创建一张叫sd的表,这个时候进行一次完整备份,备份文件为:DBTest-full.bak;接着创建表sg后进行差异备份,备份文件为:DBTest-diff.bak;
2、创建一个叫DBTest2的数据库,用于测试TestBackup数据库的备份文件的还原。
3、数据库差异备份文件还原:
步骤一:还原完整备份文件DBTest-full.bak,恢复状态选项:不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。(RESTORE WITH NORECOVERY)
然后确定就可以了。这样就可以接着还原差异备份了。(注:只要还要还原,就一定要选择”不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志“,否则还原差异备份或日志备份就会出现以上的错误。)
还原成功后数据列表就会如下图所示:
步骤二:还原差异备份文件
TestBackupDB-diff.bak,操作按正在还原步骤即可,恢复状态选项:回滚未提交的事务,使数据库处于可以使用状态。无法还原其他事务日志(L)。(RESTORE WITH RECOVERY)。
四、心得体会
通过实验熟练掌握数据库备份鱼恢复的方法。
第二篇:数据库实验2实验报告 2
数据库第二次试验报告
PB10011020 刘思轶
实验内容
本实验有两个可选题目,旅游出行和药品免疫库。本程序即为旅游出行的一个实现。
实验原题摘要如下 数据关系模式:
航班FLIGHTS(String flightNum, int price, int numSeats, int numAvail, String FromCity, StringArivCity);
宾馆房间HOTELS(String location, int price, int numRooms, int numAvail); 出租车CARS(String location, int price, int numCars, int numAvail); 客户CUSTOMERS(String custName);
预订情况RESERVATIONS(String resvKey, String custName, int resvType)系统基本功能:
1.航班,出租车,宾馆房间和客户基础数据的入库,更新(表中的属性也可以根据你的需要添加)。
2.预定航班,出租车,宾馆房间。
3.查询航班,出租车,宾馆房间,客户和预订信息。4.查询某个客户的旅行线路。5.检查预定线路的完整性。6.其他任意你愿意加上的功能。
程序功能
本系统由旅行服务提供商运营,发布在支持PHP + MySQL 的服务器上。系统默认有三个角色,游客、用户和管理员。它们的权限如下
1、游客
查询当前航班、旅馆和出租车的预订情况;
2、注册用户
游客的所用权限; 查询当前预订;
预订航班、旅馆和出租车; 退订航班、旅馆和出租车。打印旅行路线
检查预定路线的完整性。检查航班的完备性
3、管理员
注册用户的所用权限 添加航班、旅馆和出租车信息; 更改航班、旅馆和出租车信息; 注册用户;
更改用户密码和权限; 删除注册用户; 查询用户预订; 取消用户预订; 查询用户旅行线路。
运行平台
本系统在Windows 7 32位 下由PHP-now虚拟的网络运行平台上测试.所需环境为: PHP Apache MySQL PhmyAdmin 环境搭建
打开集成环境php-now文件夹,点击init.cmd,会自动安装所需环境 接着在PHP后台中载入所需要的表
CREATE TABLE FLIGHTS(flightNum varchar(30), price int(6), numSeats int(6), numAvail int(6), FromCity varchar(30), ArivCity varchar(30), PRIMARY KEY(flightNum));CREATE TABLE HOTELS(location varchar(30), price int(6), numRooms int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CARS(location varchar(30), price int(6), numCars int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CUSTOMERS(custName varchar(30), password varchar(50), type varchar(20), PRIMARY KEY(custName));CREATE TABLE RESERVATIONS(resvKey int(20)AUTO_INCREMENT, custName varchar(30), resvType varchar(20), detail varchar(20), PRIMARY KEY(resvKey));
该程序所实现的功能
1.登录功能
登陆者身份分为游客和管理员,在数据库中信息都存放在customer表中,区别为type项不同,管理员为admin,游客为users,决定了权限不同.(1)普通游客登录后界面
(2)管理员登陆后界面
2.查询功能
登入http://127.0.0.1 可以选择查询航班,旅馆和出租车.3.游客-预订功能
4.游客-管理预订信息功能
点击自己的id可进入该功能页面,可以看到自己的旅游路线和预订信息,并可以取消预订.5.游客-检查线路完整性功能
当游客预订了从A到B的机票,则必须检查啊在A定了车(去机场),在B订了车和旅馆(下飞机后坐车和住宿),以此实现完整性检查.在从nanjing to beijing的旅游路线后面点击check,会提示游客还需要在nanjing预订汽车,在beijing预定旅馆。
6.管理员-管理航班,旅馆和出租车表
可以有insert delete 和update 几种操作.delete:
直接点击cancel就可删除相应的信息。insert & update: 点击edit后,程序会自动将想要编辑的行的信息填入供管理员编辑,不用再手动输入。
7.管理员-管理用户表
可以添加新用户,对用户的权限升级,查看用户信息.用户的密码是md5加密保存的。
实验小结
仍然存在的问题: 1.软件界面过于简单,仅仅实现了功能没有在用户可用性上多做考虑。
2.新用户想要登录该系统预订必须要由管理员登入信息后才可操作。缺少了游客注册的功能。
3.不能根据用户的需求点对点得查询相应信息,只能罗列出所有的信息。
实验心得: 1.在搭建PHP环境中遇到了许多问题:如用户权限不够,域名已使用使得Apache-20安装不成功,通过网上查阅资料解决问题。
2.了解到自己对问题的调研还是不足,如旅游系统,各种表之间到底应该怎么建立关系,哪些项是主键,自己建的表中的信息是否已经充足了,参照现实中旅游系统才能不断完善.
第三篇:数据库实验报告(实验六)
实验
六
SQL语言数据查询语言DQL
一、实验内容
了解SQL语言的SELECT语句对数据的查询,学会在Navicat for MySQL中用SELECT语句对表中的数据进行简单查询、连接查询、嵌套查询和组合查询。
启动Navicat for MySQL,用SELECT语句进行简单查询操作,具体实验步骤如下:(实验步骤里的内容)
1启动Navicat for MySQL,登录到本地数据库服务器后,连接到test数据库上。用Create Table建立Student表、Course表和Choose表:
2.用INSERT语句分别向Student表中插入3个元组、Course表中插入3个元组、Choose表中插入7个元组:
3.用SELECT语句,查询计算机学院学生的学号和姓名。
4.用SELECT语句的between„and„表示查询条件,查询年龄在20~23岁的学生信息。
5.用SELECT语句的COUNT()聚集函数,统计Student表中学生总人数。
6.分别用SELECT语句的max()、min()、sum()、avg()四个聚集函数,计算Choose表中C1课程的最高分、最低分、总分、平均分。
7.用SELECT语句对空值(NULL)的判断条件,查询Course表中先修课称编号为空值的课程编号和课程名称。
8.用SELECT语句的连接查询,查询学生的学号、姓名、选修的课程名及成绩。
9.用SELECT的存在量词EXISTS,查询与“张三”在同一个学院学习的学生信息。
10.用SELECT语句的嵌套查询,查询选修C1课程的成绩低于“张三”的学生的学号和成绩。
11.用SELECT语句的组合查询(UNION),查询选修了C1课程或者选修了C3课程的学生学号。
12.用SELECT语句的组合查询(UNION)与DISTINCT短语,查询选修了C1课程或者选修了C3课程的学生学号,并取消重复的数据。
二、遇到的问题及解决
该实验中,由于对SQL中语句的不熟悉,多次导致了输入错误,得不到实验结果,对存在量词EXISTS陌生,不熟悉,导致实验步骤中的13小题无法根据题目要求完成,要对书本上的知识加以熟悉。
三、心得体会
在实验过程中,要独立思考、独立完成实验任务,不懂的要虚心向教师或同学请教,这样自己才会学到真的东西,对自己有所提升,并且可以为专业课程有所帮助。
第四篇:数据库上机实验8实验报告
上机实验八——完整性约束的实现
一、实习目的:
掌握SQL中实现数据完整性的方法,加深理解关系数据模型的三类完整性约束。
二、实习准备:
1.复习“完整性约束SQL定义”
2.完成习题四第10题中的各项操作的SQL语句。
3.了解SQL Server 中实体完整性、参照完整性和用户自定义完整性的实现手段
三、实习内容:
1.验证习题四第10题四个表结构的SQL语句。
表一:Sstudent CREATE TABLE Sstudent(Sno char(7)NOT NULL PRIMARY KEY, Sname VarChar(20)NOT NULL, Ssex Char(2)NOT NULL DEFAULT('男')check(Ssex IN('男','女')), Sage smallint check(Sage >14 AND Sage<65), Clno Char(5)NOT NULL REFERENCES Cclass(Clno)ON UPDATE CASCADE);
表二:Ccourse CREATE TABLE Ccourse(Cno Char(1)NOT NULL PRIMARY KEY, Cname VarChar(20)NOT NULL, Credit Smallint CHECK(Credit IN(1,2,3,4,5,6)));
表三:Cclass CREATE TABLE Cclass(Clno Char(5)NOT NULL PRIMARY KEY, Speciality VarChar(20)NOT NULL, Inyear Char(4)NOT NULL, Number Integer CHECK(Number>1 AND Number<100), Mointor Char(7)REFERENCES Student(Sno));
表四:Ggrade CREATE TABLE Ggrade(Sno Char(7)NOT NULL REFERENCES Student(Sno)ON DELETE CASCADE ON UPDATE CASCADE, Cno Char(1)NOT NULL REFERENCES Course(Cno)ON DELETE CASCADE ON UPDATE CASCADE, Gmark Numeric(4,1)CHECK(Gmark>0 AND Gmark<100), PRIMARY KEY(Sno,Cno));
2.SQL Server中提供了那些方法实现实体完整性、参照完整体和用户自定义完整性
答:实体完整性:是通过主码的定义(PRIMARY KEY)来实现的;
参照完整性:是利用外部码(REFERENCES)的说明,以限制相关表中某些属性的取值,当用户违反规则时,提供三种:RESTRICT(限制策略),CASCADE(级联策略),SET NULL(置空策略);
用户自定义完整性:check约束,对元组的CHECK约束
第五篇:实验三 数据库安全性实验报告
一 实验目的1.熟悉通过SQL语句对数据进行安全性控制;
2.针对具体应用要求,完成授权和收回权限的操作;
二 实验工具SQL Server 2005
利用SQL Server 2005 SSMS及其SQL查询编辑器。
三 实验内容和要求
使用SQL对数据进行安全性控制,包括:授权和权力回收。操作完成后看看已授权的用户是否真正具有授予的数据操作的权力了;权力收回操作之后的用户是否确实丧失了收回的数据操作的权力。根据以上要求认真填写实验报告,记录所有的实验用例。具体操作可以参照课件中的实例。
具体操作内容:
创建以下两个关系模式,并分别插入相应的数据。
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号码)
(1)请用SQL的Grant和Revoke语句(加上视图机制)完成以下授权定义或存取控制功能,并进行相应的安全性测试;
(a)用户王明对两个表有select权力;
(b)用户李勇对两个表有insert和delete权力;
(c)每个职工只对自己的记录有select权力;
(d)用户刘星对职工表有select权力,对工资字段具有更新权力;
(e)用户张新具有修改这两个表的结构的权力;
(f)用户周平具有对两个表所有权力(对,插,改,删数据),并具有给其他用户授权的权利;
(g)用户杨兰具有从每个部门职工中select最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
(2)把上面(a)~(g)的每一种情况,撤销各用户所授予的权力。
四 实验报告
4.1 实验环境:
Windows XP
MicrosoftSQL server Management Studio 2005
4.2 实验内容与完成情况:
--新建数据库
create database work
go
use work
--创建以下两个关系模式,并分别插入相应的数据。
--Worker(职工号,姓名,年龄,职务,工资,部门号)
go
create table Worker(职工号 varchar(10),姓名 char(10),年龄 int,职务 char(15),工资 int,部门号 char(50))
--Section(部门号,名称,经理名,地址,电话号码)
create table Section(职工号 char(10),名称 char(10),经理名 char(10),地址 char(50),电话 char(15));
go
--插入部门信息
insert into Section values('a001','市场部门','李永','白理工','***');
insert into Section values('a002','营销部门','李刚','白理工','***');
--插入职工信息
insert into Worker values('a001001','王明',20,'市场营销员',2000,'a001');
insert into Worker values('a001002','李村',29,'市场营销员',2000,'a001');
insert into Worker values('a001003','李永',20,'经理',5000,'a001');
insert into Worker values('a002001','罗杰',18,'销售员',2000,'a002');
insert into Worker values('a002002','李红',24,'销售员',2000,'a002');
insert into Worker values('a002003','李刚',32,'经理',5000,'a002');
--查询部门表和职工表的数据
select *from Worker;
select *from Section;
--授权
use work
go
--(a)用户王明对两个表有select权力;
create login [王明] with password=N'1234';
create user [王明] for login [王明];
grant select on Worker to [王明];
grant select on Section to [王明];
--插入数据权限测试
insert into Worker values('a002004','罗红',28,'销售助理',4000,'a002');
--查询数据权限测试
select *from Worker;
--(b)用户李勇对两个表有insert和delete权力;
use work
go
create login [李勇] with password=N'1234';
create user [李勇] for login [李勇];
grant insert,delete on Worker to [李勇];
grant insert,delete on Section to [李勇];
--插入数据权限测试
insert into Worker values('a002005','罗莉',52,'销售助理',4000,'a002');
--查询数据权限测试
select *from Worker;
--删除权限测试
delete Worker from where 职工号='a002001';
--(c)每个职工只对自己的记录有select权力;
use work
go
create view Myself as select * from Worker
where 姓名=user;
grant select on Myself to public;
--(d)用户刘星对职工表有select权力,对工资字段具有更新权力;
use work
go
create login [刘星] with password=N'1234';
create user [刘星] for login [刘星];
grant select,update(工资)on Worker to [刘星];
--更新修改权限测试
update Worker set 工资=3500 where 职工号='a002001'
--查询数据权限测试
select *from Worker;
--(e)用户张新具有修改这两个表的结构的权力;
use work
go
create login [张新] with password=N'1234';
create user [张新] for login [张新];
grant all PRIVILEGES on Worker to 张新;
grant all PRIVILEGES on Section to 张新;
--(f)用户周平具有对两个表所有权力(对,插,改,删数据),并具有给其他用户授权的权利;
use work
go
create login [周平] with password=N'1234';
create user [周平] for login [周平];
grant all PRIVILEGES on Worker to 周平with grant option;
grant all PRIVILEGES on Section to 周平with grant option;
--(g)用户杨兰具有从每个部门职工中select最高工资,最低工资,平均工资的权力,他不能查看每个人的工资。
use work
go
create login [杨兰] with password=N'1234';
create user [杨兰] for login [杨兰];
grant view Wage(max(工资),min(工资),avg(工资))
as select max(工资),min(工资),avg(工资)from Worker Group by 部门号; grant select on Wage to 杨兰;
--(2)把上面(a)~(g)的每一种情况,撤销各用户所授予的权力。
use work
go
--注销用户王明,收回权力
revoke select on WOrker from [王明];
revoke select on Section from [王明];
drop user [王明];
drop login [王明];
use work
go
--注销用户李勇,收回权力
revoke select on Worker from [李勇];
revoke select on Section from [李勇];
drop user [李勇];
drop login [李勇]
--撤销用户对自己的记录有select权力
use work
go
revoke select on Myself from public;
drop view Myself cascade;
use work
go
--注销用户刘星,收回权力
revoke select,update(工资)on Worker from [刘星];
drop user [刘星];
drop login [刘星];
use work
go
--注销用户张新,收回权力
revoke alter on table Worker,Section from [张新];
drop user [张新];
drop login [张新];
use work
go
--注销用户周平,收回权力
revoke all PRIVILEGES on table Worker from [周平] cascade;
revoke all PRIVILEGES on Section from [周平] cascade;
drop user [周平];
drop login [周平];
--注销用户杨兰,收回权力
revoke select on Wage from [杨兰];
drop view Wage cascade;
drop user [杨兰];
drop login [杨兰];
use master
go
--删除数据库work
drop database work;
4.3 出现的问题:
在更改连接的时候使用SQL server身份验证登陆,用新建的用户名登陆失败,显示
该用户与可信SQL server无关联
4.4 解决方案(列出遇到的问题和解决办法,列出没有解决的问题): 启用SQL Server身份验证
SQL Server Management Studio--对象资源管理器--右键 你的服务器(.SQLExpress或者localhost)--属性--安全性--服务器身份验证--SQL Server和Windows身份验证模式,最后重启一下数据库