当前位置:文档之家› 北邮数据库实验五 数据库完整性与安全性实验

北邮数据库实验五 数据库完整性与安全性实验

北邮数据库实验五   数据库完整性与安全性实验
北邮数据库实验五   数据库完整性与安全性实验

实验五数据库完整性与安全性实验

1、实验目的

1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加

深对数据完整性的理解。

2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对

数据库安全性的理解

2、实验环境

操作系统:Microsoft Windows 7旗舰版(32位)。

数据库版本:MySQL 6.2

3、实验内容

完整性实验:

(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;

在create table 时已经定义了各个基表的主键。因此,首先对每个基表删除主键,再添加主键。实现实体完整性约束。如下图。

删除主键:

添加主键:

sc表中的cno和sno分别是course表和student表的外关键字。下图为给sc表添加student和course的外键,实现参照完整性约束。

alter table sc add constraint fk_student foreign key(sno) references student(sno);

alter table sc add constraint fk_course foreign key(cno) references course(cno);

主键和外键均添加成功,输入show create table 命令来查看各基表信息。

(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;

向课程表中插入课程号为C01的课程。

向学生表中插入学号为30201的学生。

由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。验证了实体完整性约束。

(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;

插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。受参照完整性约束,插入失败。

(4)删除学生表中的所有数据,验证参照完整性约束;

因为sc表中的sno是student表的外键,删除学生表中的所有数据违背了参照完整性约束,所以无法删除。

(5)定义存储过程,完成查询某个学生的选课情况,并执行。

本次实验设计的存储过程完成的是查询某个学生的选课情况。参数指定为sno学号。

存储过程是一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它。

因为在存储过程中会用到结束符‘;’,所以首先用delimiter修改结束符为//,创建

存储过程的sql语句为:

create procedure search_sc(num char(6))

begin

select sno,cno from sc where sno=num;

end

其中定义了一个读入的参数为num,用来读入所要查询的学生的学号。

创建成功。

调用该存储过程,查看学号为‘31428’的学生的选课信息。

(6)定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加1;并对其进行测试。

触发器的功能是监视某种情况,并触发某种操作。创建触发器的语句为:create trigger update_bdate

after insert on student

for each row

begin

update student set bdate=bdate+1;

end

表示当对student表进行插入操作后,对student表进行出生年月日加1的sql语句的执行。

向student里插入一条新纪录,触发触发器update_bdate的操作,但是出现了下述

错误信息:it is already used by statement which invoked this stored function/trigger。

经过了解,mysql中需要复制重建一个新的table,然后通过对旧table的操作来触发对新table 的操作。

create table new_student select * from student; //建立新表

create trigger t_bdate //建立触发器

before insert on student for each row

update new_student

set bdate=date_add(bdate,interval 1 day)

insert into student //插入查询语句

values('31011','lihua','男','1991-01-01 00:00:00','计算机','3147')

查看更新后的student表和new_student表如下:student表中的数据没有发生改变,只是插入了一条新的学生信息,而new_student表中所有学生信息的出生日期都为1月2号,比student表中的日期加1,但是没有新插入的学生信息。

安全性实验内容

(1)定义一新的登陆帐号、数据库用户,并授予其访问学生数据库的读权限;

创建新的登陆账号、数据库用户有两种方式,分别为grant 授予权限时创建和create user。下面分别用两种方式创建用户。

grant usage on *.* to 'lqy1'@'localhost' identified by '123456' with grant option;

with grant option 是使lqy1用户拥有授予权限的权利,是一句表示权限传递的语句。

create user 'lqy2'@'localhost' identified by '123456';

以lqy1为例,授予其访问学生数据库的读权限。

发现在user table 中并没有找到lqy1用户,发生这一错误的原因是在变更了https://www.doczj.com/doc/f19082424.html,er表之后,没有使用FLUSH PRIVILEGES命令来更新权限表(grant tables)。flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

更新如下:

查看user table ,发现lqy1和lqy2已更新。

再次执行授权语句,发现仍然无法找到该用户。然后查找了关于“mysql新建用户本地无法登录”的资料,发现问题在@’localhost’和@’%’上。当你试图连接MySQL服务器时,服务器基于你的身份以及你是否能通过供应正确的密码验证身份来接受或拒绝连接。你的身份取决于两个信息:一是从哪个主机连接,二是mysql用户名。Host值'%'匹配任何主机名,因此将定义新的用户的sql语句改为:

grant usage on *.* to 'lqy1'@’%' identified by '123456' with grant option;

再次执行授权语句,授予lqy3用户访问学生数据库的读权限。

(2)分别用root用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;

root超级用户登录:

lqy3用户登录:

Root超级用户查询及修改课程信息:

Lqy3 用户查询及修改课程信息,因为lqy3用户仅有读权限,所以可以查询数据库,但是不能够对数据库中的信息进行修改。

(3)再次用此用户访问学生数据库,并对其中的学生表数据进行修改。

登录root用户,授予lqy3用户写权限:

再次用lqy3用户登录,更改课程信息,成功。

实验总结

1、实现参照完整性约束时遇到的问题

最初建立外键时sql语句错误,错误信息是“cannot add or update a child row: a foreign key constraint fails”,原因在于:查询优化实验中,对sc表插入了三个元组,sno的值为10111,而该值并没有在student表中存在。参照完整性约束的规定是:若M是关系S中的一属性组,且M是另一关系Z的主关键字,则称M为关系S对应关系Z的外关键字。若M是关系S 的外关键字,则S中每一个元组在M上的值必须是空值或是对应关系Z中某个元组的主关键字值。因此,存在三个sno='10111'的元组,而student表中并不存在sno='10111'的学生信息,相当于三个不存在的学生却拥有成绩表。这显然是不合理的。因此只要将这三行元组删除即可。

2、定义存储过程中遇到的问题

注意要先更改结束符,因为存储过程中的sql语句以通用的分号为结束符,其作为定义存储过程的sql语句的一部分,会引发语句错误。

3、定义触发器时遇到的问题

使用create trigger 语句创建触发器是可以成功的,但是向student插入记录,触发触发器的操作时,出现了循环的错误信息,后来将student表复制了一份,重写create trigger 语句,定义触发器为:在对旧表student进行插入操作之前,更新new_student表,使每一元组的bdate增加一天。

4、定义新的登陆账号、数据库用户遇到的问题

grant和create均可创建用户,但注意创建的用户是基于所有主机(@'%')的。另外在命令行创建了用户,可以使用flush privileges更新权限表,而不用重新登录。

北邮数据库实验四数据库模式的设计

北邮数据库实验四数据 库模式的设计 Revised by Chen Zhen in 2021

北京邮电大学 实验报告 课程名称数据库 实验名称数据库模式的设计班级 姓名 学号 指导老师 成绩_________ 实验

.1.实验目的 1.了解E-R图的基本概念和根据数据需求描述抽象出E-R图并将其转换为数据库逻辑模式进而实现数据库中的表和视图。 2.通过进行数据库表的建立操作,熟悉并掌握Power designer数据库表的建立方法,理解关系数据库表的结构,巩固SQL标准中关于数据库表的建立语句。 3.通过对Power designer中建立、维护视图的实验,熟悉Power designe中对视图的操作方法和途径,理解和掌握视图的概念。 .2.实验内容 1 针对以下需求信息,尽可能全面地给出各个实体的属性和实体之间的系。 在线考试系统需求信息如下: 在线考试系统是关于一门课程的授课教师安排自己的学生在线参加各种考试的应 用,如果阶段性考试,期中考试和期末考试等。在线考试系统要求有用户的登录和登出。在线考试系统主要包括用户管理、试题管理、试卷管理和考试管理功能。需要实现教师输入试题,从试题生成试卷;学生参加考试获取试卷,提交答案和给出考试成绩等主要逻辑功能。 系统的用户包括教师、学生角色,一个用户有且只有一种角色。 鉴于在线考试的客观条件限制,试题完全采用单项选择形式。试题有所属知识点、内容、分值、备选答案和唯一正确答案等属性组成。课程的知识点是确定的,可以扩展,一道试题只能考察一个知识点。

教师录入各种试题构成题库,并根据考察的知识点不同生成试卷,相同知识点的试题只能在一张试卷中出现一次,试卷由试卷标题和一定数量(即知识点的数量)的试题组成。试卷生成后,教师指定某次考试使用的试卷,学生参加考试使用统一的试卷,考试信息还包含考试标题、任教老师、考试时间。 学生登录后,可以参加考试并在提交答案后立刻得到自己的考试成绩,也可以查看自己的考试历史记录。教师登录后可以查看学生的成绩。 ?2将E-R图输入Power Designer形成概念模型 ? 3 使用Power Designe将输入的E-R图转换成数据库物理模型 ? 4 使用Power Designe将输入的数据库物理模型转化为生成数据库中的表和视图的脚 本 ? 5 执行SQl脚本,生成表和视图 ? 6 成功后,查看生成的表和视图的情况 .3.实验环境 普通PC、Windows系列操作系统、IBM DB2 数据库管理系统 .4.实验步骤、结果与分析 1)五个实体: 用户: 用户ID( UserID )、用户名(UserName)、角色(Role)、密码(Password). 试题库(ItemBank): 题目代码(ItemID)、题目内容(Icontent)、分数(Iscore)、选项(Ioption)、正确答案(Ianswer)、知识点代码(PointID)(froeign). 知识点(KonwledgePoint): 知识点代码(PointID)、知识点内容(Pcontent)、知识点学科(Psubject). 试卷(Paper):

数据库实验5实验报告

淮海工学院计算机工程学院实验报告书 课程名:《数据库原理及应用》 题目:数据库的完整性 班级:软件132 学号:2013122907 姓名:莹莹

一.目的与要求 1.掌握索引创建和删除的方法; 2.掌握创建视图和使用视图的方法; 3.掌握完整性约束的定义方法,包括primary key、foreign key等。 二.实验容 1.基于前面建立的factory数据库,使用T-SQL语句在worker表的“部门号”列上创建一个非聚集索引,若该索引已经存在,则删除后重建。 2.在salary表的“职工号”和“日期”列创建聚集索引,并且强制唯一性。 3.建立视图view1,查询所有职工的职工号、、部门名和2004年2月工资,并按部门名顺序排列。 4.建立视图view2,查询所有职工的职工号、和平均工资; 5.建立视图view3,查询各部门名和该部门的所有职工平均工资; 6.显示视图view3的定义; 7.实施worker表的“性别”列默认值为“男”的约束; 8.实施salary表的“工资”列值限定在0~9999的约束; 9.实施depart表的“部门号”列值唯一的非聚集索引的约束; 10.为worker表建立外键“部门号”,参考表depart的“部门号”列。 11.建立一个规则sex:性别=’男’ OR 性别=’女’,将其绑定到“性别”上; 12.删除上面第7、8、9和10建立的约束; 13.解除第11题所建立的绑定并删除规则sex。 三.实验步骤 1 USE factory GO --判断是否存在depno索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='depno') DROP INDEX worker.depno GO --创建depno索引 CREATE INDEX depno ON worker(部门号) GO EXEC sp_helpindex worker GO 2 USE factory GO --判断是否存在no_date索引;若存在,则删除之 IF EXISTS(SELECT name FROM sysindexes WHERE name='no_date') DROP INDEX salary.no_date GO --创建no_date索引

数据库实验3答案

实验三:交互式SQL语句的使用 1、实验目的 (1)掌握数据库对象的操作过程,包括创建、修改、删除 (2)熟悉表的各种操作,包括插入、修改、删除、查询 (3)熟练掌握常用SQL语句的基本语法 2、实验平台 使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。 3 实验容及要求 选择如下一个应用背景之一: ●学生选课系统 ●习题3、4、和5中使用的数据库 ●其它你熟悉的应用 (1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。 (2)要求认真进行实验,记录各实验用例及执行结果。 (3)深入了解各个操作的功能。 实验要求包括如下方面的容: 3.1 数据定义 1.基本表的创建、修改及删除 2.索引的创建 3.视图的创建 3.2 数据操作 完成各类更新操作包括: 1.插入数据

2.修改数据 3. 删除数据 3.3 数据查询操作 完成各类查询操作 1.单表查询 2.分组统计 3. 连接查询 4. 嵌套查询 5. 集合查询 3.4 数据操作 1.创建视图 2.视图查询 参考示例: 建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。 一、数据定义 创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表: 表1. Student表结构 表2. Course表结构

表3. SC表结构 1.创建、修改及删除基本表 (1)创建Student表 CREATE TABLE Student (Sno CHAR(8)PRIMARY KEY, Sname CHAR(8), Ssex CHAR(2)NOT NULL, Sage INT, Sdept CHAR(20) ); (2)创建Course表 CREATE TABLE Course (Cno CHAR(4)PRIMARY KEY, Cname CHAR(40)NOT NULL, Cpno CHAR(4), Ccredit SMALLINT, ); (3)创建SC表 CREATE TABLE SC (Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno), Cno CHAR(4), Grade SMALLINT, ); (4)创建员工表Employee

数据库的安全性实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验:数据库的安全性实验 课程:数据库原理及应用B 班级:网络1203 学号: 学生姓名: 任课教师:孟彩霞

一、实验目的 (1)理解SQL Server验证用户身份的过程,掌握设置身份验证模式的方法(2)理解登录帐号的概念,掌握混合认证模式下登录帐号的建立与取消方法 (3)掌握混合认证模式下数据库用户的建立与取消方法 (4)掌握数据库用户权限的设置方法 (5)理解角色的概念,掌握管理角色技术 二、实验内容 (1)在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 (2)创建、管理数据库服务器的登录账号。 (3)创建、管理数据库用户。 (4)管理用户权限。 (5)创建、管理数据库角色。 三、实验环境 Windows7 SQL SERVER 2012 四、实验前准备 课本 上机使用代码 五、实验步骤 1.在企业管理器中打开“SQL Server属性(配置)”对话框,设置身份验证模式为“SQL Server”和“Windows”模式(即混合模式)。 2.创建、管理数据库服务器的登录账号。用T-SQL语句创建、查看、删除登录账号。 创建一个名为Student、密码为111、使用的默认数据库为JWGL的登录账号。 EXEC sp_addlogin ‘student’,’111’,’JWGL’查看登录账号EXEC sp_helplogins 删除登录账号为EXEC sp_droplogins ‘student’ 3.创建、管理数据库用户。 用T-SQL语句创建、查看、删除数据库用户。 为数据库JWGL创建一个用户user1,该用户登录SQL Server服务器的账号为wang,登录密码为secret,相应的程序代码为: EXEC sp_addlogin ‘wang’, ‘secret’, ‘JWGL’ GO EXEC sp_grantdbaccess ‘wang’, ‘user1’查看数据库用户为EXEC sp_helpuser 删除数据库中的“wang”用户为EXEC sp_revokedbaccess ‘wang’ 4.管理用户权限。 使用T-SQL语句完成第3章习题12中(1)~(3)的用户管理和用户权限管理。企业管理器: (1)允许用户李明对Orders表进行插入、删除操作。 GRANT INSERT ,DELETE ON Orders TO ‘李明’

北邮大三数据库实验六数据查询分析实验

实验六数据查询分析实验 实验目的 通过对不同情况下查询语句的执行分析,巩固和加深对查询和查询优化相关理论知识的理解,提高优化数据库系统的实践能力,熟悉了解Sybase中查询分析器的使用,并进一步提高编写复杂查询的SQL 程序的能力。 实验内容 1.索引对查询的影响 (1)对结果集只有一个元组的查询分三种情况进行执行(必如查询一个具体学生的信息):不建立索引,(学号上)建立非聚集索引,(学号上)建立聚集索引。 建立聚集索引: create clustered index student on student(student_id) go 建立非聚集索引: create nonclustered index student_index on student(student_id) go 用查询分析器的执行步骤和结果对执行进行分析比较。 select*from student where student_id='30201' 不建立索引 建立聚集索引

建立非聚集索引 (2)对结果集中有多个元组的查询(例如查看某门成绩的成绩表)分类似(1)的三种情况进行执行比较。 select*from student where student_id>'30401' 不建立索引:

建立聚集索引: 建立非聚集索引: (3)对查询条件为一个连续的范围的查询(例如查看学号在某个范围内的学生的选课情况)分类似(1)的三种情况进行执行比较,注意系统处理的选择。 select*from student where student_id between'31201'and'31415' 不建立索引:

实验五 SQL SERVER 完整性与安全性 实验报告

实验五SQL SERVER 完整性与安全性 一、实验目的 掌握SQL SERVER数据访问控制策略和技术,SQL SERVER数据库管理系统使用安全帐户认证控制用户对服务器的连接,使用数据库用户和角色等限制用户对数据库的访问。 二、实验内容 1.在服务器级别上创建三个以SQL Server身份验证的登录名,登录名称自定。 2.分别为三个登录名在“gongcheng”数据库映射三个数据库用户,数据库用户名为Tom,Mary和John,使这三个登录名可以访问“gongcheng”数据库。

3.授予用户John创建表和视图的权限。 grant create table,create view to John 在“gongcheng”下,安全性—John—属性,选择安全对象,搜索特定对象,选择“gongcheng”表,在权限中选择“创建表”和“创建视图”, 如图:

即可赋予John“创建表”和“创建视图”的权限。 4.完成以下授权: (1)把对表S的INSERT权力授予用户Tom,并允许他再将此权限授予其他用户。 grant insert on S to tom with grant option (2)用户Mary对S,P,J三个表有SELECT和INSERT权力 grant select,insert on S to Mary grant select,insert on P to Mary grant select,insert on J to Mary (3)用户Tom对SPJ表有DELETE权力,对QTY字段具有UPDA TE权力。 grant delete,update(qty) on spj to Tom

北邮数据库实验报告

数据库原理与应用 实验报告 实验指导教师:袁宝库 课程主讲教师: 袁宝库 报告提交日期: 2012 年10 月18 日 北京邮电大学

目录 实验任务 (3) 实验任务一 (4) 实验任务二 (5) 实验任务三 (7) 实验任务四 (8) 实验任务五 (9) 实验任务六 (12) 实验任务七 (20) 思考题 (22) 实验总结 (24)

实验任务 1、安装SQL Server 2008 2、使用SQL Server 配置管理器 3、使用SQL Server Management Studio 4、分别使用对象资源管理器和T-SQL创建一个实验数据库 5、使用对象资源管理器修改数据库的相关参数并将一个实验数据库删除 6、分别使用对象资源管理器和T-SQL创建、删除和修改表 7、分别使用对象资源管理器和T-SQL向表中插入、修改和删除数据 思考题: 1、配置SQL Server 2008 以允许远程连接 使用SQL Server 外围应用配置器配置SQL Server 2008 允许远程连接。 经过前几步的实验,现在已经可以通过远程客户端访问SQL Server 2008数据库服务器了,这里要求2个人一组,互相用自己的客户端(SQL Server Management Studio)连接并访问对方的数据库系统。

实验任务一:安装SQL Server 2008 1、实验设计 使用SQL Server 2008安装光盘将SQL Server 2008开发版安装到本地计算机,使本地计算机成为服务器和客户端工具; 选择Windows 7为操作系统,安装开发版SQL Server 2008; 安装数据库服务、客户端组件、文档、示例和示例数据库; 命名实例为shijing; 使用混合模式进行身份验证; 2、实验过程 使用SQL Server 2008安装介质将SQL Server 2008安装到本地计算机,使本地计算机成为服务器和客户端工具

北邮数据库实验报告

数据库实验报告(四) 姓名:学号:班级: 1.简单查询: (1) 查询“数据库开发技术”课程的学分; SQL语句: select credit from course where course_name='SQL Server数据库开发技术'; 或者模糊查询: select credit from course where course_name like'%数据库开发技术'; 执行结果: (2) 查询选修了课程编号为“dep04_s004”的学生的学号和成绩,并将成绩按降序输出; SQL语句: select student_id,grade from student_course where course_id='dep04_s003' order by grade desc; 执行结果:

(3) 查询学号为“g9940205”的学生选修的课程编号和成绩; SQL语句: select course_id,grade from student_course where student_id='g9940205'; 执行结果: (4) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。 SQL语句: select student_id,grade from student_course where course_id='dep04_s001'and grade>'85'; 执行结果:

2.在多表连接的查询实验中,用Transact SQL语句完成以下查询操作: (1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩; SQL语句: select student.student_id,student_name,grade from student,student_course where student.student_id=student_course.student_id and student_course.course_id='dep04_s002' and student_course.grade>'85'; 执行结果: (2)查询所有学生的学号、姓名、选修的课程名称和成绩; SQL语句: select student.student_id,student_name,course_name,grade from student,course,student_course where student.student_id=student_course.student_id and student_course.course_id=course.course_id; 执行结果:

数据库实验五题目答案

实验五 实验5.1 数据查询 1)要求 以School数据库为例,在该数据库中存在四表格,分别为: ●表STUDENTS(sid, sname, email, grade); ●表TEACHERS(tid, tname, email, salary); ●表COURSES(cid, cname, hour); ●表CHOICES(no, sid, tid, cid, score) 在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES中保存学生的选课记录。 按以下要求对数据库进行查询操作: (1)查询年级为2001的所有学生的名称并按编号升序排列。 程序:Select sname from students where grade='2001' order by sid asc; (2)查询学生的选课成绩合格的课程成绩。 程序:Select score from choices where score>'59';

(3)查询课时是48或60的课程的名称。 程序:select cname from courses where hour='48'or hour='60'; (4)查询所有课程名称中含有data的课程编号。 程序:select cid from courses where cname like'%data%';

(5)查询所有选课记录的课程号(不重复显示)。 程序:select distinct cid from choices; (6)统计所有教师的平均工资。 程序:select avg(salary) from teachers;

北邮大数据库实验三

实验三完整性及视图、索引 视图是基于某个查询结果的一个虚拟表,只是用来查看数据的窗口而已。索引能够提供一种以一列或多列的值为基础迅速查找数据表(或视图)中行的能力,用来快速访问数据表(或视图)中的数据。触发器是一种特殊的存储过程,它在特定语言事件发生时自动执行,通常用于实现强制业务规则和数据完整性。 【实验目的】 掌握MySQL视图、索引的使用,理解什么是数据库的完整性。 【实验要求】 1、每完成一个任务,截取全屏幕快照1~3作为中间步骤和结果的贴图,粘贴在最后的实验报告中。 2、除了使用我们提供的数据外还要自己向表中添加些新数据,以保证每个查询结果不为空集,或计数结果不为0。 3、思考题可以选做,作为优秀加分的依据。 【实验任务】 1、创建一个视图,该视图为每门课程的平均成绩,视图包括的列有课程号 及平均成绩,并用利用该视图查询所有课程的平均成绩,要求给出课程号、课程名及平均成绩。

2、创建一个视图,该视图为每门课程的平均成绩,视图包括的列有课程号、 课程名及平均成绩,并用利用该视图查询所有课程的平均成绩,要求给出课程号、课程名及平均成绩。

3、为院系代码表(dept_code)创建基于“院系代码”列的索引。 4、为教室信息表(classroom_info)创建基于room_id列的惟一索引并插入一 条room_id列与表中已有的值重复的数据,观察系统的反馈。

5、重新修改表stud_info、lesson_info及stud_grade,修改的容为: ①为三表增加主码约束,stud_info的主码为stud_id,lesson_info的主码为 course_id,stud_grade的主码为stud_id、course_id。

数据库原理实验报告_实验三_数据完整性与安全性控制

实验内容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1) 非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2) 主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择修改命令-->对话框中右击sno-->选择设置主键'>修改主键名为pk_sno '-->保存

(3)唯一约束:为姓名(sname)添加唯一约束(唯一键),约束名为uk_sname 。 唯一约束:单击数据库Student-->单击表--> 单击S-->右击sname-->选择修改’ 命令T右击 sname-->选择索引和键命令--> 打开索引和键框图--> 添加--> 是否唯一改为是--> 名称改为us sname '-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为男 设默认约束:单击数据库Student宀单击表宀单击右击sno^选择修改命令宀单击cno-->在默认值栏输入男’保存

D62.s1udent - Diagram_0* D62.sludent - dbo.S* SQLQuery5.sql - D... (D62\A^m i n (52J)* 列容 埶据类型 允祥值 Q 5TI0 Ctiar(lO) n sname nvarchar (20) a 卜:S5SX nchai ■⑵ 團 sbirtti date □ adept nv ar char (20) sPhoneNo ctiar(LQ) @] 数捐类型 允傑Mdl 值 曰表设计器 RowGuid E 标识魁 不用于复制 大小 (5) CHECK 约束:为SC 表的成绩(grade)添加CHECK 约束,约束名为ck grade ,其 检查条件为:成绩应该在0-100之间。 ffin har 妊 2 Nnrh 昙否否否二

北邮数据库实验三-实验报告

题目:数据库实验三:嵌入式SQL 完成日期:2014.5.22 操作环境:Microsoft Visual C++ 6.0 SQL server 2008 R2 1 实验目的 1、熟悉在Visual Studio C++环境中通过ODBC实现数据库互连; 2、熟悉通过嵌入式SQL对数据库进行操作; 3、掌握数据库应用程序界面开发基本流程。 2 实验内容及要求 1、在Visual Studio C++环境中通过ODBC实现与实验1建立的数据库StuManagement的互联,进行实验要求的各种操作,关系模式和数据的操作均通过应用程序界面完成; 2、根据以下要求认真进行实验,记录所有的实验用例,填写实验报告。 2.1 数据库连接 2.1.1 通过ODBC实现与实验1数据库互连; 2.2 关系模式定义 2.2.1创建1个基本表,并插入2行数据; 2.2.2修改及删除基本表; 2.3 数据操作 2.3.1 数据查询操作; 2.3.2 数据删除操作;( 2.3.3 界面执行SQL语句操作 2.4 界面要求: 2.4.1 查询结果的多行显示(至少支持5行以上查询结果的显示) ;(2分) 2.4.2 界面美观,操作简单。 3 操作环境 Microsoft Visual C++ 6.0 Sql server 2008 R2 4 实验步骤 (1)ODBC与数据库互联

找到控制面板——管理工具 打开数据源(ODBC) 点击【添加】,选择SQL server

填写名称和描述,选择自己机器的服务器 按照默认就可以

点击【完成】,数据源就创建好了 5 实验内容与完成情况 (1)整体外观 本次实验,完成了记录的查询(按主键、按内容),记录的添加与删除,新建表,删除表,添加数据,修改表;执行SQL语句,并将查询结果显示出来。 (2)添加记录

北邮大三数据库实验六数据查询分析实验

北邮大三数据库实验六数据查询分析实验

————————————————————————————————作者:————————————————————————————————日期: ?

实验六数据查询分析实验 实验目的 通过对不同情况下查询语句的执行分析,巩固和加深对查询和查询优化相关理论知识的理解,提高优化数据库系统的实践能力,熟悉了解Sybase中查询分析器的使用,并进一步提高编写复杂查询的SQL程序的能力。 实验内容 1.索引对查询的影响 (1)对结果集只有一个元组的查询分三种情况进行执行(必如查询一个具体学生的信息): ?不建立索引,(学号上)建立非聚集索引,(学号上)建立聚集索引。 建立聚集索引: createclustered indexstudent on student(student_id) go 建立非聚集索引: create nonclusteredindexstudent_index on student(student_id) go 用查询分析器的执行步骤和结果对执行进行分析比较。 select*from student where student_id='30201' 不建立索引 建立聚集索引

建立非聚集索引 (2)对结果集中有多个元组的查询(例如查看某门成绩的成绩表)分类似(1)的三种情况进行执行比较。 select*from student wherestudent_id>'30401' 不建立索引:

建立聚集索引: 建立非聚集索引: (3)对查询条件为一个连续的范围的查询(例如查看学号在某个范围内的学生的选课情况)分类似(1)的三种情况进行执行比较,注意系统处理的选择。 select*fromstudent where student_idbetween'31201'and'31415' 不建立索引:

数据库实验三报告

江西师范大学计算机信息工程学院学生实验报告专业___计算机科学与技术__ 姓名___燕悦__ 学号__1408091077_ 日期__ __

四.程序及运行结果(或实验数据记录及分析) 针对S_T数据库: 1)创建三个表:student course sc。程序: use S_T go /*创建Student表*/ create table student( Sno char(5) primary key not null check(Sno like '[0-9][0-9][0-9][0-9][0-9]'), Sname char(20) not null, Ssex char(2) not null check(Ssex in ('男','女')), Sage smallint not null check(Sage between 14 and 38), Sdept char(20) not null ); /*创建Course表*/ create table course( Cno char(4) not null primary key check(Cno like '[0-9][0-9][0-9][0-9]'), Cname char(40) not null, Cpno char(4), Ccredit smallint not null ); /*创建SC表*/ create table sc( Sno char(5) not null , Cno char(4) not null, Grade smallint check(Grade between 0 and 100), primary key(Sno,Cno)); 执行结果: 2)对course表进行修改。程序: /*修改course表,为Cpno列添加一个外键约束*/ alter table course add foreign key (Cpno) references course(Cno); 执行结果:

北邮大三下数据库实验报告5

北京邮电大学 实验报告 课程名称数据库系统原理 实验内容实验5 数据库完整性与安全性实验 班级2013211***姓名 *** 指导老师成绩_________ 2016年05月20日

实验5 数据库完整性与安全性实验 实验目的: 1.通过对完整性规则的定义实现,熟悉了解SQL SERVER中完整性保证的规则和实现方 法,加深对数据完整性的理解。 2.通过对安全性相关内容的定义,熟悉了解SQL SERVER中安全性的内容和实现方法, 加深对数据库安全性的理解 实验内容 完整性实验与要求: 1.分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束; 定义主键: 方法一:使用Enterprise Manager设置主键(以book表为例) ①光标移到book表的位置,右键->设计 ②在你要选的属性列右键->设置主键,完成。

方法二:使用SQL语句。 ①右键数据库,新建查询 设置外键: 方法一:使用Enterprise Manager设置外键(以student表为例) ①单击student表,鼠标移到“键”文件夹,单击右键,选择“新建外键”。 ②选择“表和列规范”进行设置

③我们想在student表设置class_id属性为外键,按照下图选择,点击确定,保存即可。 方法二:SQL语句 新建查询,输入如图语句。

2.向学生表插入具有相同学号的数据,验证其实体完整性约束; Student表的主键是学号,所以不能插入有相同学号的学生。 3.向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束; Class表中没有“2013211302”这个班级,所以无法插入。改变班级号为class表中存在的,则能够进行插入,结果如下: 4.删除教师表中的所有数据,验证参照完整性约束;

数据库实验报告

课程设计报告题目:数据库实验上机实验报告 专业班级:计算机科学与技术1210班 学号:U201215079 姓名:候宝峰 指导教师: 报告日期:2015-06-04 计算机科学与技术学院

目录 一、基本SQL操作(部分选做) (1) 1)数据定义 (1) 2)数据更新 (3) 3)用SQL语句完成下述查询需求: (4) 二、DBMS综合运用(部分选做) (8) 1)学习sqlserver的两种完全备份方式:数据和日志文件的脱机备份、系统的备份功能(选做)。 (8) 2)学习系统的身份、权限配置操作 (9) 3)了解SQLSERVER的存储过程、触发器、函数实现过程 (14) 三、实验总结 (17) 1)实验问题及解决 (17) 2)实验心得 (18)

一、基本SQL操作(部分选做) 1)数据定义 参照下面的内容建立自己实验所需的关系数据 创建三个关系: 商品表【商品名称、商品类型】 GOODS【GNAME char(20),GTYPE char(10)】 主关键字为(商品名称)。商品类型为(电器、文具、服装。。。) 商场【商场名称,所在地区】 PLAZA【PNAME char(20),PAREA c har(20)】 主关键字为商场名称。所在地区为(洪山、汉口、汉阳、武昌。。。) 销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】 SALE【GNAME char(20),PNAME char(20),PRICE FLOAT,ATYPE c har(10)】 主关键字为(商品名称、商场名称)。举办活动类型为(送券、打折),也可为空值,表示当前未举办任何活动。表中记录如(‘哈森皮靴’,‘亚贸广场’,200,‘打折’),同一商场针对不同的商品可能采取不同的促销活动。 create table goods(gname char(20) primary key,gtype char(10)); create table plaza(pname char(20) primary key,parea char(20)); create table sale (gname char(20), pname char(20), price FLOAT, atype char(10)check (atype in('送券','打折','')), primary key(gname,pname), foreign key(gname)references goods(gname), foreign key(pname)references plaza(pname));

北邮大三上选修课数据库实验二数据库维护

《数据库技术及应用》实验报告 题目:数据库的日常维护和安全性管理姓名日期 实验环境:Microsoft SQL Server 2012 实验内容与完成情况: 3.1.1 完成数据库的备份、还原分+分) 通过SQL语句,对已建立的数据库StuManagement进行备份和还原操作 备份: backup database StuManagement to mybackup1 还原: use master restore database StuManagement from mybackup1 with recovery,replace; 完成数据的导入、导出操作(1分+1分): 直接在Management Studio中,手工对已建立的数据库StuManagement进行数据的导入和导出操作(可导为Access数据库、Excel表格等) 导入:

导出:将S表导出到中 3.1安全性管理 3.2.1对已建立的数据库StuManagement进行,设置用户 直接在Management Studio中,手工对已建立的数据库StuManagement进行安全性管

理,建立2个不同的数据库用户。(1+1分) 在安全性下登录名右键新建,创建 在StuManagement下安全性用户处右键新建两个用户wb和wb1 3.2.2完成“授权和权利回收”的操作例子分+分)

分别用grant和revoke语句,对3.2.1已建立的用户,进行授权和权利回收的操作,并运行验证。 wb用户只具有public身份,用wb登录执行select语句,发现错误。 select Sno from S; 退出,用Windows 账户登录,grant语句赋给wb select权限,并允许wb把这种权限再授予给别的用户 grant select on S to wb with grant option; 断开连接,用wb用户登录,执行select语句,发现成功查询

数据库的完整性和安全性实验报告

信息工程学院实验报告 课程名称:《数据库原理》 实验项目名称:数据库的完整性和安全性 一、实 验 目 的: (1)掌握数据库约束的概念; (2)熟悉SQL SERVER 的完整性约束技术。 (3)了解SQL SERVER 的违反完整性处理措施。 (4)了解登录账户的管理理念与具体方法。 (5)了解数据库用户的管理的要则。 (6)了解用户权限管理的内涵与方法。 二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤 (一)测试完整性 运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。 1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2) PRIMARY KEY dname VARCHAR(20) NOT NULL,UNIQUE (1)增加数据 INSERT INTO dept VALUES('D1','计科系');----正常插入 INSERT INTO dept VALUES('D2','电信系');----正常插入 INSERT INTO dept VALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则 INSERT INTO dept VALUES('D2','机械系'); ----违反dno 主键(UNIQUE ) INSERT INTO dept VALUES('D3',NULL); ----违反dname 的NOT NULL 规则

数据库 实验三答案

实验3 SQL语言 一、实验目的 1、掌握SQL中运算符和表达式的使用。 2、掌握实用SQL语言查询数据库。 二、实验要求 1、所有的实验过程请严格按照实验内容的步骤进行。 2、对关键步骤截屏并复制到实验报告的相应位置。 三、实验设备、环境 设备:计算机 环境:WINDOWS XP、SQL SERVER 2000中文版 四、实验原理、方法 上机操作 五、实验内容 准备工作:还原学生成绩管理数据库; 注意:写SQL语句时,注意学生成绩管理数据库中表名称和字段名称的对应。 1、使用SQL查询分析器,对学生成绩管理数据库完成如下查询操作: 1)简单查询 (1)求数学系学生的学号和姓名。 (2)求选修了课程的学生学号。

(3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列。 (4)求选修课程0001且成绩在80~90之间的学生学号和成绩,并将成绩乘以系数0.8输出。 (5)求数学系或计算机应用系姓王的学生的信息。 (6)求缺少了成绩的学生的学号和课程号。

2)连接查询 (1)查询每个学生的情况以及他(她)所选修的课程。 (2)求学生的学号、姓名、选修的课程名及成绩。 (3)求选修0001课程且成绩为90分以上的学生学号、姓名及成绩。

3)嵌套查询 (1)求选修了0003的学生学号和姓名。 (2)求0001课程的成绩高于王军的学生的学号和成绩。

(3)求其他系中比计算机系某一学生年龄小的学生。 4)使用分组和函数查询 (1)求学生的总人数。 (2)求选修了课程的学生人数。

(3)求课程和选修0001的人数。 (4)求选修课超过3门课的学生学号。

实验--数据库安全性管理

北华航天工业学院 《数据库原理与应用》 实验报告 报告题目:_______ 数据库安全性管理__________ 作者所在系部:计算机

作者学号:201322542 作者所在专业:—软件工程____________________

作者姓名:魏志鹏 指导教师姓名:贾振华 完成时间:2015.5.20 北华航天工业学院教务处制 数据库安全性管理 1、 2理解数据库的安全性机制; 掌握SQL Server 2008的验证模式、登录管理、用户管理、角色管理以及权限管理; _ 、实验内容 (一)附加上次实验所创建的数据库“db_Library ”,并回顾该库的数据表信息。 (二)设置SQL Server的安全验证模式,并以两种方式尝试登录。 (三)登录账户管理 1、在当前Windows系统中新建一个用户Test,密码为secret,然后以管理员身份登录SQL Server,并将该系统用户添加为登录用户,并赋予系统管理员的权限。然后以该用户身份登录SQL Server。 2、使用SQL语句创建一个SQL Server登录账户,账户名为你的名字拼音,密码自定义。创建完成后,以该账户来进行登录。 3、使用SQL语句来修改上述登录账户的密码。 4、禁用上述登录账户连接SQL Server,并进行验证。 5、设置上述登录账户为数据库创建者的权限。 (四)数据库用户管理 1、使用SSMS添加db_Library数据库用户User1,其登录账户为上题所创建的Windows账户,使用默认dbo架构。 2、使用SQL语句添加db_Library数据库用户User2,其登录账户为上题所创建的SQL Server 登录账户,使用默认dbo架构,并赋予该用户能够运行Select语句的权限。 (五)权限管理 1、使用SSMS将创建数据表和创建视图的权限授予User2。 2、使用SQL语句将对db_Library数据库中图书信息表的查询、插入、以及对书名和作者列的修改权限授予用户User2。 3、使用SSMS收回User2创建数据表和创建视图的权限。 4、使用SQL语句收回User2修改书名和作者列的权限。 实验目的

数据库实验三作业及答案.docx

实验3 SQL Server 数据表的管理 一、实验目的 1.学会使用企业管理器和Transact-SQL语句CREATE TABLE和ALTER TABLE创建和修改表。 2.学会在企业管理器中对表进行插入、修改和删除数据操作。 3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。 4.了解SQL Server的常用数据类型。 二、实验准备 1.了解在企业管理器中实现表数据的操作,如插入、修改和删除等。 2.掌握用Transact-SQL语句对表数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE和TRANCATE TABLE)操作。 三、实验内容及步骤 1.启动企业管理器,展开studentsdb数据库文件夹。 2.在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图1-2、图1-3和图1-4所示。 图1-2 学生基本情况表student_info 图1-3 课程信息表curriculum 图1-4 学生成绩表grade 3.在企业管理器中创建student_info、curriculum表。 4.在企业管理器中,将student_info表的学号列设置为主键,非空。 5.使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。 CREATE TABLE grade (学号varchar(4), 课程编号varchar(4), 分数decimal(5,0) ) 6.student_info、curriculum、grade表中的数据如图1-5、图1-6和图1-7所示。 图1-5 student_info的数据

相关主题
文本预览
相关文档 最新文档