第一篇:数据库实验报告(实验六)
实验
六
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小题无法根据题目要求完成,要对书本上的知识加以熟悉。
三、心得体会
在实验过程中,要独立思考、独立完成实验任务,不懂的要虚心向教师或同学请教,这样自己才会学到真的东西,对自己有所提升,并且可以为专业课程有所帮助。
第二篇:数据库实验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.了解到自己对问题的调研还是不足,如旅游系统,各种表之间到底应该怎么建立关系,哪些项是主键,自己建的表中的信息是否已经充足了,参照现实中旅游系统才能不断完善.
第三篇:数据库上机实验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身份验证模式,最后重启一下数据库
第五篇:SQL数据库实验报告 实验二
实验2SQL Server数据库的管理
1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。
(2)掌握使用SQL Server管理平台对数据库进行管理的方法。
(3)掌握使用Transact-SQL语句对数据库进行管理的方法。
2.实验内容及步骤
(1)在SQL Server管理平台中创建数据库。
① 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。
② 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。
(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。
(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。
(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。
(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。
(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。
(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。
(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。
3.实验思考
(1)数据库中的日志文件是否属于某个文件组?
(2)数据库中的主数据文件一定属于主文件组吗?
(3)数据文件和日志文件可以在同一个文件组吗?为什么?
(4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库?
(5)能够删除系统数据库吗?