数据库原理实验报告S8-数据库安全性

数据库原理实验报告S8-数据库安全性
数据库原理实验报告S8-数据库安全性

实验8 数据库安全性

实验日期和时间:2014/11/05 实验室:2栋实验楼

班级:12计科4 学号:20123569 姓名:施文君

实验环境:

硬件:Windows 7旗舰版( 32位/ DirectX 11 ) ,SQL Server 2005

软件:

CPU:英特尔Pentium(奔腾) 双核T4300 @ 2.10GHz,

内存:2 GB ( 海力士DDR2 800MHz )

硬盘:希捷ST9500325AS ( 500 GB )

显卡:A TI Mobility Radeon HD 4570 (M92) ( 512 MB / 华硕)

实验原理:

SQL Server 2005数据库的安全性通过以下几个方面得以保证:

?网络系统的安全性:这可以通过在网络系统边界安装防火墙系统得以实施。

?服务器的安全性:即保证运行SQL Server 2005的服务器本身及其操作系统的安全。

?SQL Server 2005的登录安全性:即允许哪些用户登录SQL Server服务器。

?数据库的安全性:即规定用户登录SQL Server服务器以后可以使用哪些数据库。

?数据库对象的安全性:即规定用户打开某一数据库后,可以操作哪些数据库对象以及怎样操作。

实验主要任务:

一、创建登录账户:SQL Server 2005的登录安全性(通过修改身份认证

方式Windows身份认证和SQL、Windows混合身份认证及在服务器安全性里建立登录名实现)

1.理解Windows身份认证和SQL、Windows身份认证的含义区别,利用SQL管理控制

平台建立5个登录账号,创建密码,,默认数据库为MASTER,

再利用SQL 语句创建3个登录账号,创建密码。如:

create login s2******* WITH

PASSWORD ='S123_456'

(登录账号建议使用本班学生的学号,密码用强密码方式)。然后用其中的登录

账户进入系统。

2.删除一个登录账号

3.查看各服务器角色的含义并为所创建的登录账号分配服务器角色。

(服务器角色是指根据SQL Server的管理任务,以及这些任务相对的重要性等级来把具有SQL Server管理职能的用户划分为不同的用户组,每一组所具有的管理SQL Server的权限都是SQL Server内置的,即不能对其进行添加、修改和删除,只能向

其中加入用户或者其他角色。

SQL Server提供的固定服务器角色,其具体含义如下:

?系统管理员(sysadmin):可以在数据库引擎中执行任何活动。默认情况下,

Windows BUILTIN\Administrators组(本地管理员组)的所有成员都是sysadmin

固定服务器角色的成员。

?服务器管理员(Serveradmin):可以更改服务器范围的配置选项和关闭服务器。

?磁盘管理员(diskadmin):管理磁盘文件。

?进程管理员(processadmin):可以终止在数据库引擎实例中运行的进程。

?安全管理员(securityadmin):可以管理登录名及其属性。

?安装管理员(setupadmin):可以添加和删除链接服务器,并可以执行某些系统

存储过程。

?数据库创建者(dbcreator):可以创建、更改、删除和还原任何数据库。

?大容量插入操作管理者(bulkadmin):可以执行大容量插入操作)

二、管理数据库的用户(通过在不同的数据库里建立用户名,并与相应的任务一所

建立的服务器登录名建立映射关系实现)

在数据库中,一个用户或工作组取得合法的登录账户,只表明该账户可以通过Windows 认证或SQL Server认证,但并不表明其可以访问数据库和对数据库对象进行某种或某些操作,管理员必须在数据库中为用户建立一个数据库账户,并授予此账户访问数据库及数据库中对象的权限后,才能使该用户访问数据库。

一台服务器除了有一套服务器登录帐户列表外,每个数据库中也都有一套相互独立的数据库用户列表。每个数据库用户都和服务器登录帐户之间存在着一种映射关系。系统管理员可以将一个服务器登录帐户映射到用户需要访问的每一个数据库中的一个用户帐户和角色上。一个登录帐户在不同的数据库中可以映射成不同的用户,从而拥有不同的权限。

导入(或附加)学生成绩数据库,附加SPJ表,然后以不同的登录账户访问相关数据库对数据库实施如下操作:

1.使用

USE 数据库名

GO

查看各个登录账户能否使用各数据库。

2.分别使用SQL SERVER管理控制台为学生成绩数据库创建数据库用户U1-U5和

TRANSACT-SQL的数据库用户U6,U7,U8,与相应的登录账户建立好映射关系。

如:USE学生成绩

create user u3

for login s3

--WITH DEFAULT_SCHEMA=DBO

3.查看各数据库角色的含义并为所创建的用户分配数据库角色

(在SQL Server管理控制台中,展开SQL Server服务器组中相应服务器,展开“数据库”目录树,再展开某个具体的数据库,选择“安全性|角色|数据库角色”,在右侧窗口中会看到数据库中已存在的角色。在未创建新角色之前,数据库中只有固定数据库角色。)

(数据库角色是为某一用户或某一组用户授予不同级别的管理或访问数据库以及数

据库对象的权限,这些权限是数据库专有的,并且还可以给一个用户授予属于同一数据库的多个角色。SQL Server在安装成功后,提供了十种固定数据库角色。固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。

SQL Server提供的固定数据库角色的具体含义如下:

?public:维护全部默认权限。

?db_accessadmin:可以为登录帐户添加或删除访问权限。

?db_backupoperator:可以备份该数据库。

?db_datareader:可以对数据库中的任何表或视图运行SELECT语句。

?db_datawriter:可以在所有用户表中添加、删除或更改数据。

?db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令。

?db_denydatareader:不能读取数据库内用户表中的任何数据。

?db_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据。

?db_owner:可以执行数据库的所有配置和维护活动。

?db_securityadmin:可以修改角色成员身份和管理权限。

在固定的数据库角色中,public是一个特殊的数据库角色,每个数据库用户都属于public数据库角色。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的public角色的权限。)

4. 利用TRANSACT-SQL语句DROP USER user_name 删除用户U8。

三、权限的管理

权限用来指定授权用户可以使用的数据库对象以及对这些数据库对象可以执行的操作。用户在登录到SQL Server之后,根据其用户帐户所属的Windows组或角色,决定了该用户能够对哪些数据库对象执行哪种操作以及能够访问、修改哪些数据。在每个数据库中,用户的权限独立于用户帐户和用户在数据库中的角色,每个数据库都有自己独立的权限系统。权限的管理主要是完成对权限的授权、拒绝和回收。

权限的管理主要是对权限的授权(grant)、拒绝(deny)、和回收(revoke)。

管理权限可以通过以下方式实现:

1.从数据库的角度来管理。

2.从用户或角色的角度来管理。

3.从数据库对象的角度来管理。

在SQL Server中,可以通过SQL Server管理控制台或Transact-SQL语句管理权限。

(一)管理数据库的权限:从数据库的角度来管理。

在SQL Server管理控制台中,展开SQL Server服务器组中相应服务器。(2)展开“数据库”,右击某个数据库的名称,在弹出的快捷菜单中选择“属性”选项,会弹出数据库属性对话框。单击“权限”选择页,打开权限窗口。在权限选择页中,可以单击“添加”按钮,添加用户或角色。选择权限。

1.利用SQL Server管理控制台对学生成绩数据库为用户U1授予CONNECT、

CREATE TABLE、CREA TE VIEW、INSERT、SELECT等6种权限。并验证相应

的权限。(注意:要能执行建表语句,需要两个权限:(1). create table权限:

(2.)所在架构的alter权限:alter schema

2.利用SQL Server管理控制台对学生成绩数据库为用户U1回收相应的权限,并验证。

(二)管理用户的权限:从用户或角色的角度来管理

管理用户的权限就是设置一个用户能对哪些对象执行哪些操作。选择数据库-安全性-用户-右键单击数据库用户-属性-安全对象-添加-特定对象-相关表或视图等-选择权限。,

1.对用户U2,利用对用户的授权机制授予其查询课程表的权限, 并验证。

2.回收其查询课程表的权限, 并验证。

(三)管理数据库对象的权限:从数据库对象的角度来管理

可以从数据库对象的角度完成相同的工作,即设置一个数据库对象能被哪些用户/角色执行哪些操作。在SQL Server管理控制台中,展开SQL Server服务器组中相应服务器。展开“数据库”,再展开指定的数据库,选择“表”,在右边窗口的数据表列表中右击表名称,在弹出的快捷菜单中选择“属性”选项,打开表属性对话框,选择“权限”选择页。可以单击“添加”按钮添加用户或角色,也可以撤消已授的权限。

1.对于成绩表,对用户U3赋予其SELECT 、DELETE、INSERT、UPDATE成绩列

的权限,并验证。

同时验证验证将学号2005226146的成绩改为100

验证学号2005226146的学号改为2005999999

如果给用户U3赋予了修改学号的权限,可以修改吗?为什么(利用第五章的数据库的参照完整性回答)

2. 回收其查询成绩表的权限,并验证。

四、参照王珊教材第四章利用Transact-SQL语句完成下列权限的设置,并验证。(先在管理控制平台下回收用户的上述所有的权限。)

(一)授权

1.把查询学生表和张姓同学的视图的权限授给用户U1

2.把对学生表和课程表的全部权限授予用户U2和U3

3.把对成绩表的查询权限授予所有用户

4.把查询学生表和修改学生学号的权限授给用户U4

5.把对成绩的INSERT权限授予U5用户,并允许他再将此权限授予其他用户

(with grant option)

6.U5将相应权限授予U6,并允许他再将此权限授予其他用户

7.U6将相应权限授予U7

(二)回收权限

8.把用户U4修改学生学号的权限收回

9.收回所有用户对表SC的查询权限

10.把用户U5对成绩表的INSERT权限收回

验证结果是否正确

将以上任务的实验完成情况、实验结果、实验原理、总结分栏一一填写到下表中,格式参考任务1或者自定。

任务1:

1.理解Windows身份认证和SQL、Windows身份认证的含义区别,利用SQL管理控制平

台建立5个登录账号,创建密码,,默认数据库为MASTER,

2.删除一个登录账号

3.查看各服务器角色的含义并为所创建的登录账号分配服务器角色。

完成情况(代码及运行结果评析):

1.

create login s2******* with

PASSWORD ='S123'

create login s2******* with

PASSWORD ='S123'

create login s2******* with

PASSWORD ='S123'

2.

3.

小结:

任务2:

通过在不同的数据库里建立用户名,并与相应的任务一所建立的服务器登录名建立映射关系实现

导入(或附加)学生成绩数据库,附加SPJ表,然后以不同的登录账户访问相关数据库对数据库实施如下操作:

1.使用

USE 数据库名

GO

查看各个登录账户能否使用各数据库。

2.分别使用SQL SERVER管理控制台为学生成绩数据库创建数据库用户U1-U5和

TRANSACT-SQL的数据库用户U6,U7,U8,与相应的登录账户建立好映射关系。

3.查看各数据库角色的含义并为所创建的用户分配数据库角色

4. 利用TRANSACT-SQL语句DROP USER user_name 删除用户U8。

完成情况(代码及结果):

1.

用户20121111的服务器角色是sysadmin,所以可以访问spj表2.

create user U6

for login s2*******

create user U7

for login s2*******

create user U8

for login s2******* 3.

4.

DROP USER U8

命令成功完成,U8已经删除。

总结:(实验结果及原理的分析)

任务3:

(一)管理数据库的权限:从数据库的角度来管理。

1.利用SQL Server管理控制台对学生成绩数据库为用户U1授予CONNECT、

CREATE TABLE、CREA TE VIEW、INSERT、SELECT等6种权限。并验证相应

的权限。(注意:要能执行建表语句,需要两个权限:(1). create table权限:

(2.)所在架构的alter权限:alter schema

2.利用SQL Server管理控制台对学生成绩数据库为用户U1回收相应的权限,并验证。

(二)管理用户的权限:从用户或角色的角度来管理

1.对用户U2,利用对用户的授权机制授予其查询课程表的权限, 并验证。

2.回收其查询课程表的权限, 并验证。

(三)管理数据库对象的权限:从数据库对象的角度来管理

1.对于成绩表,对用户U3赋予其SELECT 、DELETE、INSERT、UPDATE成绩列

的权限,并验证。

同时验证验证将学号2005226146的成绩改为100

验证学号2005226146的学号改为2005999999

如果给用户U3赋予了修改学号的权限,可以修改吗?为什么(利用第五章的数据库的参照完整性回答)

2. 回收其查询成绩表的权限,并验证。

完成情况(代码及结果):

1.

select*

from学生名单

create table宿舍

(宿舍号char(20)primary key)

2.

3.

数据库原理实验报告

南京晓庄学院 《数据库原理与应用》 课程实验报告 实验一SQL Server 2005常用服务与实用工具实验 所在院(系):数学与信息技术学院 班级:14软工5班 学号:14551204 14551206 姓名:花元凯罗文波 1.实验目的 (1)了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server 2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server 2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获得 所感兴趣的相关产品主题/技术文档。

(4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL查 询语句。 (5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1) 简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。 SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能(BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能。SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。目前最新版本是SQL SERVER 2014。 1,SQL Server 2005学习版当保护和管理应用系统内外部的信息变得至关重要时,通过提供一套免费、易于使用和健壮的数据库,学习版帮助开发人员建立强健的和可靠的应用系统。

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

一、实验内容、步骤以及结果 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-->选择‘修改’命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加--> 是否唯一改为‘是’-->名称改为‘us_sname’ -->关闭。

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

(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其检查 条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表 和C表,外键名称分别为fk_sno,fk_cno。 2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint) 删除约束:单击数据库Student-->表-->单击S-->展开键、约束。一一删除即可。

数据库实验报告

. . 《数据库原理与技术》实验报告 实验一、数据定义及更新语句练习 一、实验容 建立如下mySPJ数据库,包括S,P,J,和SPJ四个基本表(《数据库系统概论》第二章习题5中的四个表),要现关系的三类完整性。 S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY); 二、完成情况

附上按照实验容编写的程序代码。(小四号字,宋体) 三、实验结果 1、插入一条记录 2、①将p表中的所有红色零件的重量增加5。 ②将spj表中所有供应商的QTY属性值减少10。用子查询。

3.利用Delete语句删除p表中的所有红色零件的记录。 附上各个步骤所用的实验用例与结果显示(小四号字,宋体) 四、问题与解决 (小四号字,宋体) 1 .实验中遇到的问题及解决过程 2 .实验中产生的错误及原因分析 首先写出执行语句不成功的时候系统报告的错误信息。然后分析错误原因,并给出解决办法。

实验二简单查询和连接查询 一、实验容 (一)完成下面的简单查询: ①查询所有“”的供应商明细; ②查询所有“红色”的14公斤以上的零件。 ③查询工程名称中含有“厂”字的工程明细。 (二)完成下面的连接查询: ①等值连接:求s表和j表的相同城市的等值连接。 ②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。 ③笛卡尔积:求s和p表的笛卡尔积。 ④左连接:求j表和spj表的左连接。 ⑤右连接:求spj表和j表的右连接。 二、完成情况 (一)完成下面的简单查询: ①查询所有“”的供应商明细; ②查询所有“红色”的14公斤以上的零件。

数据库原理实验报告(1)

南京晓庄学院 《数据库原理与应用》课程实验报告 实验一 SQL Server 2005常用服务与实用工具实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)了解Microsoft 关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server 2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio 图形环境的基本操作方法。了解使用“SQL Server 2005 联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server 2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server 2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获 得所感兴趣的相关产品主题/技术文档。 (4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL 查询语句。 (5)查看Microsoft SQL Server 2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1) 简要总结SQL Server系统发展历史及SQL Server 2005主要版本类别与主要功能特性。

数据库实验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索引

数据库原理实验报告(数据查询)

数据库原理实验报告 实验三数据查询 班级:××× 姓名:××× 学号:××× 数据查询 一、[实验目的] 1.掌握SQL的单表查询操作

2.掌握SQL的连接查询操作 3.掌握SQL的嵌套查询操作 4.掌握SQL的集合查询操作 二、[实验内容] 本实验的主要内容是: 1.简单查询操作。包括投影、选择条件表达,数据排序,使用临时表等。 2.连接查询操作。包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。 3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 4.组合查询与统计查询。 (1)分组查询实验。该实验包括分组条件表达、选择组条件的表达方法。 (2)使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 (3)组合查询实验。 (4)计算和分组计算查询的实验。 三、[实验方法] 1.将查询需求用Transact-SQL语言表示。 2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。 3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。 4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。 5 查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。 图5- 错误!未定义书签。SQL Server 2000查询分析器 查询分析器的界面如图5- 错误!未定义书签。所示。在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查

数据库原理实验报告二.pdf

LIAOCHENG UNIVERSITY 计算机学院实验报告 【2015 ~2016 学年第 2 学期】 【一、基本信息】 【实验课程】数据库原理与应用 【设课形式】独立□非独立【课程学分】 【实验项目】实验二、SQL数据操作及查询 【项目类型】基础综合□设计□研究创新□其它[ ]【项目学时】4【学生姓名】傅雪晨【学号】59 【系别专业】电子商务 【实验班组】 【同组学生】 【实验室名】综合实验楼 【实验日期】【报告日期】 【二、实验教师对报告的最终评价及处理意见】 实验成绩:(涂改无效) 指导教师签名:年月日注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学生,并报实验管理中心备案

【三、实验预习】 实验条件(实验设备、软件、材料等): 实验2 SQL数据操作及查询 实验目的: 1. 向实验1建立的表中添加数据(元组), 掌握INSERT语句的用法; 2. 修改基本表中的数据, 掌握UPDATE语句的用法; 3. 删除基本表中的数据,掌握DELETE语句的用法; 4. 体会数据完整性约束的作用, 加深对数据完整性及其约束的理解。 5. 熟练掌握SELECT语句,能够运用该语句完成各种查询。 实验内容: 1.使用INSERT语句将教材P82表中的数据添加到数据库STUDENTDB中. 2. Insert into student59 select'1','李勇','男','20','CS','',''union select'2','刘晨','女','19','CS','',''union select'3','王敏','女','18','MA','',''union select'5','张立','男','19','IS','','' select*from student59 select*from course59 select*from sc59 alter table course59NOCHECK Constraint fk_cpno Insert into course59 select'1','数据库','5','4'union select'2','数学','','2'union select'3','信息系统','1','4'union select'4','操作系统','6','3'union select'5','数据结构','7','4'union select'6','数据处理','','2'union select'7','PASCAL语言','6','4' alter table course59CHECK Constraint FK_course59_course59 Insert into sc59 select'1','1',92 union select'1','2',85 union select'1','3',88 union select'2','2',90 union select'2','3',80 alter table sc59CHECK Constraint fk_S_c alter table sc59NOCHECKConstraint fk_S_c

数据库实验报告五

数据库原理及应用实验报告(五) 实验题目:过程 专业:数字媒体技术 班级:1306班 姓名:***************

运城学院实验报告 专业:数字媒体技术系(班):计算机科学与技术系1306班姓名:************* 课程名称:数据库原理及应用 实验项目:过程实验类型:验证型指导老师:***** 实验地点:软件实验室一时间:2015年12月10日 一、实验目的: 掌握用户存储过程的创建,了解一些常用的系统存储过程,以及调用和删除过程,并熟悉使用存储过程来进行数据库应用程序的设计。 二、实验内容: (1)基于学生—课程数据库创建一存储过程,用于检索数据库中某个专业学生的人数,带有一个输入参数,用于指定专业。执行结果如图二所示: create procedure pro_s @stu_sdept varchar(5) //这是带参数的过程,参数不用()括 As select count(*) as 人数from student where sdept = @ stu_sdept 1、存储过程的执行 execute pro_s 实参//实参可以是变量,也可以是常量 (2)基于学生-课程数据库创建一存储过程,该过程带有一个输入参数,一个输出参数。其中输入参数用于指定学生的学号,输出参数用于返回学生的平均成绩。执行结果如图四所示: create procedure pro_stu @stu_sno char(6),@stu_avg float output //这个带output的是输出参数as select @stu_avg = avg(grade) //将平均值给了变量 from student,sc where student. sno = sc. sno and student.sno=@stu_sno 1.存储过程的执行 declare @stuavg float //用于存放输出变量内容的 execute pro_stu ‘1000’,@stuavg output// 输出参数必须是变量 select @stuavg //看结果 (3)在pubs数据库中建立一个存储过程,用于检索数据库中某一价位的图书信息。参数有两个,用

数据库实验报告4

数据库实验报告4

《数据库原理》实验报告 题目:实验四视图与索引学号姓名班级日期Xxxx Xx xxxxx 2016.10.20 一. 实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是 1986年出生的学生的视图,视图中包括学号,性别,成绩三个信息。 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ) 方法一: create view V_SP as select sno,pno,qty from spj where spj.jno in (select jno from j where j.jname='

三建') 方法二: create view V_SPJ as select sno,pno,qty from spj,j where j.jno=spj.jno and j.jname='三建'

INTO V_SPJ(SNO,PNO,QTY) VALUES( 's5','p3',900) 提示: -SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由 于JNO为NULL,所以视图中没有该 条数据。 -SPJ表中JNO不能为空时,可以使用instead of触发器实现。 (1)修改视图V_SPJ中的任意一条数据的供 应数量。 update V_SPJ set qty=111 where sno='s1' and pno='p1'

(2)删除视图V_SPJ中的任意一条数据(注意 所创建视图可以视图消解时,才能正常删除,否则会删除失败;也可以考虑用 instead of触发器实现)。 DELETE V_SPJ where sno='s1' and pno='p1' and qty=111 用instead of触发器实现 CREATE TRIGGER trdV_SPJ ON V_SPJ INSTEAD OF DELETE AS BEGIN Delete from V_SPJ WHERE sno='s1' and pno='p1' and qty=111 END

数据库原理实验报告

数据库原理 实验报告 系别电子信息系 专业计算机科学与技术班级学号4080522 姓名龚敏 指导教师李爱英

一.概要设计 1.教学数据库各表的关系模式:(加下线的属性为主键) 学生 (学号,姓名,性别, 出生日期,所在系) 英文缩写对照:student(s_no,s_name,s_sex,s_age,s_birthday,s_department) 课程 (课程号,课程名,学分) 英文缩写对照:course(c_no,c_name,c_score) 教师 (职工号,姓名,性别,职称) 英文缩写对照:teacher(t_no,t_name,t_sex,t_duty) 选课 (学号,课程号,成绩) 英文缩写对照:choice(s_no,c_no,score) 讲授 (职工号,课程号) 英文缩写对照:teaching(t_no,c_no) 2.教学数据库E-R 图: 实体:课程,学生,选课 联系:选课(学生同课程之间多对多的联系m:n),讲授(教师同课程之间多对多的联系m:n)。 二.逻辑设计 代码: use master go create database stu go use stu go n m m n 课程 教师 讲授 选课 学号 姓名 性别 出生日期 成绩 职工号 姓名 性别 职称 学分 课程号 课程名 学生

create table student (s_no char(8) not null primary key, s_name char(8) not null , s_sex varchar(8) not null, s_birthday smalldatetime not null, s_department varchar(13) not null) drop table student use stu go create table teacher (t_no char(8) not null primary key, t_name char(8) not null, t_sex varchar(8) not null, t_duty char(8) not null) create table course (c_no char(8) not null primary key, c_name char(8) not null, c_score varchar not null) create table choice( s_no char(8) not null primary key, c_no char(8) not null primary key, score varchar not null) create table teaching( t_no char(8) not null primary key, c_no char(8) not null primary key) insert student values('101','袁敏','女','1982-2-3','机电') insert student values('102','李志强','男','1983-4-5','计算机') insert student values('103','张亮','男','1984-10-9','建筑') insert student values('104','李平','女','1984-5-6','计算机') insert student values('105','王丽','女','1983-2-1','机电') insert student values('106','刘明耀','男','1982-4-16','计算机') select* from student insert course values('1011','C语言','6') insert course values('1012','数据结构','4') insert course values('1013','微机原理','6') insert course values('1014','数字电路','5') insert course values('1015','高等数学','6') select* from course insert teacher values('0511','张大维','男','副教授') insert teacher values('0512','林楠','女','讲师') insert teacher values('0513','韩晓颖','女','副教授') insert teacher values('0514','李辉','男','讲师') insert teacher values('0515','孙丽','女','助教') select* from teacher insert choice values('101','1011','82.5') insert choice values('101','1012','79') insert choice values('102','1012','92.5') insert choice

数据库原理实验报告(3)实验三数据表的创建与管理实验

数据库原理实验报告(3)实验三数据表的创建与 管理实验 南京晓庄学院 《数据库原理与应用》 课程实验报告 实验三数据表的创建与管理实验 所在院(系): 数学与信息技术学院班级: 学号: 姓名: 1.实验目的 (1) 理解SQL Server 20xx常用数据类型和表结构的设计方法。理解主键、外键含义,掌握 建立各表相关属性间参照关系的方法。 (2) 熟练掌握使用SQL Server Management Studio图形工具创建表,删除表,修改表结构,插入及更新数据的方法。 (3) 熟练掌握使用Transact-SQL语句创建表,删除表,修改表结构,插入及更新数据的方 法。 2.实验要求 基本实验:

(1) 在实验二所创建的“TM”数据库中合理设计以下各表逻辑结构: 学生信息(学号,姓名,性别,籍贯,出生日期,民族,学院/系别号,班级号) 课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时) 学习信息(学号,课程号,考试成绩,平时成绩) 院系信息(院系号,院系名称) 要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。 (2) 依据你所设计的表结构,使用SQL Server Management Studio图形工具在“TM”数据 库中创建学生信息表和课程信息表,并试验在图形界面中修改表结构,删除数据表,输入并更新数据的方法。 (3) 依据你所设计表结构,使用Transact-SQL语句创建学习信息表和院系信息表,并试验 使用T-SQL语句修改表结构,删除数据表,插入和更新数据的方法。 (4) 找出已创建各表之间相关属性的参照关系,并在相关表中增加引用完整性约束。 (5) 按要求完成实验报告。 扩展实验: (1) 在“TM”数据库中补充设计以下各表结构:

数据库实验报告1

1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分) exec sp_rename v_spj, v_spj_三建; 2.针对SPJ数据库,创建并执行如下的存储过程:(共计35分) (1)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意输入一个工 程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME) 以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10 分) create proc jsearch @jno char(2) as select sname, pname, jname from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and spj.jno=@jno; 执行: exec jsearch 'J1'

(2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执 行该存储过程时,将返回北京供应商的所有信息。(10分) 创建加密存储过程: create proc jmsearch with encryption as select * from s where s.city='北京'; sp_helptext jmsearch; (3)使用系统存储过程sp_helptext查看jsearch, jmsearch的文本信息。(5分) 用系统存储过程sp_helptext查看jsearch: exec sp_help jsearch; exec sp_helptext jsearch;

数据库原理实验报告分析

2013级数据库原理实验报告 专业:_______计算机___ 班级:________________ 学号:______________ 姓名:_______________ 2015年5月

实验一 SQL Server 2005基本操作 一、实验目的 了解SQL Server 2005组件; 了解SQL Server数据库组成; 掌握SQL Server 2005界面基本操作。 二、实验内容 (1)开始->程序->Microsoft SQL Server 2005-> SQL Server Management Studio,打开后进入到SQL Server 2005主体界面 (2)点击?数据库?前面的?+?,可以展开查看数据库,并且可以继续展开下级目录,查看数据库中的表、视图等。 (3)了解SQL Server 2005菜单栏的一些主要工具的使用。 (4)学生动手操作SQL Server 2005,打开数据库,打开表,打开查询界面;查看数据库的属性、表的属性等。 三、实验总结 进行这次实验有遇到什么问题?怎么解决的? 答:此次实验我们一步一步按照实验内容操作的,基本上没有遇到问题。

实验二数据定义 一、实验目的 掌握SQL Server 2005的数据库创建; 掌握SQL Server数据定义语言; 掌握SQL Server 2005数据定义的SQL语言定义与管理器定义两种方式。 二、实验内容 (1)创建、修改、删除数据库。 创建要求:数据库Employee中包含一个数据库文件Empdat1.mdf和一个日志文件Emplog.ldf。其中,数据文件大小为10MB,最大为50MB,以5MB速度增长;日志文件大小为5MB,最大为25MB,以5%速度增长。 修改要求:增加第二个数据库文件Empdat2.ndf,其中,数据文件大小为5MB,最 大为25MB,以2MB速度增长。 (2)利用SQL创建人员表person、月薪表salary及部门表dept。 见上页图 要求:按表2-1、表2-2及表2-3中的字段说明创建。

数据库实验报告

实验内容与要求 请有选择地实践以下各题。 (1)基于“教学管理”数据库 jxgl,使用SQL的查询语句表达下列查询: ①检索年龄大于23岁的男学生的学号和姓名; SELECT Sn o,S name FROM Stude nt WHERE Ssex=男’AND Sage>23; ②检索至少选修一门课程的女生姓名; SELECT Sn ame FROM Stude nt WHERE Ssex=女’AND Sno IN ( SELECT Sno FROM SC GROUP BY Sno HAVING cou nt(*)>=1; ); ③检索王同学不学的课程的课程号; SELECT Cno; FROM Course WHERE Cno NOT IN ( SELECT Cno FROM Stude nt,SC WHERE Sname like '王 % AND Student.Sno=SC.Sno ); ④检索至少选修两门课程的学生学号; SELECT DISTINCT Sno FROM SC GROUP BY Sno HAVING cou nt(*)>=2; ⑤检索全部学生都选修的课程的课程号与课程名; SELECT Cn o,C name FROM Course WHERE NOT EXISTS ( SELECT * FROM Stude nt WHERE NOT EXISTS ( SELECT * FROM SC WHERE SC.S no=Stude nt.S no AND SC.C no=Course.C no

) ); ⑥检索选修了所有 3学分课程的学生学号; SELECT DISTINCT Sno FROM SC X WHERE NOT EXISTS ( SELECT * FROM Course WHERE Ccredit=3 AND NOT EXISTS ( SELECT * FROM SC Y WHERE X.S no=Y.S no AND Course.C no=Y.C no ) ); (2)基于“教学管理”数据库 jxgl,使用SQL的查询语句表达下列查询: ①统计有学生选修的课程门数; SELECT coun t(DISTINCT Cno) FROM SC; ②求选修4号课程的学生的平均年龄; SELECT AVG(Sage) FROM Stude nt,SC WHERE Cn o=4 AND Stude nt.S no=SC.S no; ③求学分为3的每门课程的学生平均成绩; SELECT AVG(Grade) FROM Course,SC WHERE Ccredit=3 AND Course.C no=SC.C no GROUP BY SC.C no; ④统计每门课程的学生选修人数,要求超过3人的课程才统计,要求输出课程号和选修人数查询结果按人数降序排列,若人数相同,按课程号升序排列; SELECT Cn o,cou nt(S no) FROM SC GROUP BY Cno HAVING cou nt(S no )>3 ORDER BY cou nt(S no) DESC,C no ASC; ⑤检索学号比“王菲”同学大而年龄比他小的学生姓名; SELECT Sn ame FROM Stude nt X WHERE Sno>

北邮大三下数据库实验报告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.删除教师表中的所有数据,验证参照完整性约束;

数据库实验报告

实验一创建数据库及关系表 一、实验目的 1. 掌握SQL Server数据库管理系统的使用,能够中该环境中进行日常数据库操作; 2. 掌握在SQL Server中使用图形化工具创建数据库的方法; 3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句; 4.掌握修改表结构的语句。 二、实验要求 1.了解SQL Server数据库的组成,会使用图形化工具创建数据库。 2.编写建立表及主、外码约束的T-SQL语句,并执行这些语句,在数据库中建立符合要求的关系表。 3.编写修改表结构的语句。 三、实验内容和步骤 1.创建符合如下条件的数据库: 数据库的名字为:Students 数据文件的逻辑文件名为:Students_dat,存放在D:\Test录下(若D:盘中无此子目录,可先建立此目录,然后再创建数据库。); 文件的初始大小为:5MB;

增长方式为自动增长,每次增加1MB。 日志文件的逻辑文件名字为:Students_log,也存放在D:\Test目录下; 日志文件的初始大小为:2MB; 日志文件的增长方式为自动增长,每次增加10%。 2.在已建立的Students数据库中,写出创建满足下述条件的四张表的SQL 语句,并查看执行结果。 Teacher表结构

Create table student ( Sno char(7)primary key, Sname nchar(10)not null, Ssex nchar(2), Sage tinyint, Sdept nvarchar(20), Spec char(10) ) create table course( Cno char(10), Cname nvarchar(20)not null, Credit int, Semester tinyint, Primary key(Cno) ) create table sc( Sno char(7)not null, Cno char(10)not null, Grade tinyint, primary key(Sno,Cno), foreign key(Sno )references Student(Sno), foreign key(Cno )references Course(Cno), ) create table teacher( Tno char(8)not null, Tname char(10)not null, Dept nvarchar(20), Salary numeric(6,2), Birthery smalldatetime ) 执行结果:

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

实验内容、步骤以及结果 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 昙否否否二

数据库原理实验报告(1)

实验一SQL Server2005常用服务与实用工具实验 所在院(系):信息工程学院 班级:13软件工程转本1班 学号:13131151 姓名:薛伟

1.实验目的 (1)了解Microsoft关系数据库管理系统SQL Server的发展历史及其特性。 (2)了解SQL Server2005的主要组件、常用服务和系统配置。 (3)掌握Microsoft SQL Server Management Studio图形环境的基本操作方法。了解使用“SQL Server2005联机从书”获取帮助信息的方法;了解“查询编辑器”的使用方法;了解模板的使用方法。 2.实验要求 (1)收集整理Microsoft关系数据库管理系统SQL Server的相关资料,总结其发展历史及SQL Server2005主要版本类别和主要功能特性。 (2)使用SQL Server配置管理器查看和管理SQL Server2005服务。 (3)使用Microsoft SQL Server Management Studio连接数据库;使用SQL Server帮助系统获 得所感兴趣的相关产品主题/技术文档。 (4)使用Microsoft SQL Server Management Studio“查询编辑器”编辑并执行Transact-SQL 查询语句。 (5)查看Microsoft SQL Server2005模板,了解模板的使用方法。 (6)按要求完成实验报告。 3.实验步骤、结果和总结实验步骤/结果 (1)简要总结SQL Server系统发展历史及SQL Server2005主要版本类别与主要功能特性。SQL Server系统发展历史 1988SQL Server由微软与Sybase共同开发,运行于OS/2平台。 1993SQL Server4.2桌面数据库系统,功能较少。与Windows集成并提供了易于使用界面。1994Microsoft与Sybase在数据库开发方面的合作中止。 1995SQL Server6.05重写了核心数据库系统。提供低价小型商业应用数据库方案。 1996SQL Server6.5 1998SQL Server7.0重写了核心数据库系统,提供中小型商业应用数据库方案,包含了初始的Web支持。SQL Server从这一版本起得到了广泛应用。 2000SQL Server2000企业级数据库系统,其包含了三个组件(DB,OLAP,English,Query)。丰富前端工具,完善开发工具,以及对XML的支持等,促进了该版本的推广和应用。2005SQL Server2005最新版本,历时5年的重大变革。 2007SQL Server2008(Katmi)即将发布。 2008SQL Server2008发布。 -SQL Server2005主要版本类别及功能特性 SQL Server2005Enterprise Edition(32位和64位) Enterprise Edition是最全面的SQL Server版本,是超大型企业的理想选择,能够满足最复杂的要求。 注:没有任何限制,包含所有功能和特性。 SQL Server2005Standard Edition(32位和64位) SQL Server2005Standard Edition是适合中小型企业的数据管理和分析平台。 它包括电子商务、数据仓库和业务流解决方案所需的基本功能。

相关文档
最新文档