当前位置:文档之家› 数据库实验六

数据库实验六

数据库上机实验六
实验名称:视图的建立与使用(续)和数据库的安全性控制
一、实验目的
1.加深掌握视图的定义与工作原理。

2.理解SQL SERVER 2000登录账户、数据库用户、角色、权限的概念及管理方法。

二、实验内容与步骤
1.对视图的操作
(1)创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址。

create view cus_SH as
select cust_id, cust_name, addr
from customer
where addr = '上海'
(2)删除题1建立的视图中所有姓“王”的客户数据。

delete
from cus_SH
where cust_name like '王%'
(3)对题(1)建立的视图添加一条记录数据(注意:分别查看customer表和该视图的结果)。

insert into cus_SH
values ('10010','叶秀玲','武汉')
/*
无法将 NULL 值插入列 'tel_no',表 'Sale_Manage.dbo.customer';该列不允许空值。

INSERT 失败。

语句已终止。

*/
(4)通过题(1)建立的视图修改表内某一客户的姓名。

update cus_SH
set cust_name = '王子'
where cust_name = '王'
(5)有两个基本表employee和sales,创建一个视图,该视图包含相同业务员的编号、姓名、订单号、销售总金额。

create view emp_sale as
select emp_no, emp_name, order_no, tot_amt
from employee, sales
where emp_no = sale_id
(6)给题(5)建立的视图添加一条记录数据。

insert into emp_sale
values ('E1000', '肖萧', '1009', '900.00')
--视图或函数 'emp_sale' 不可更新,因为修改会影响多个基表。

(7)将题(5)建立的视图中订单号为1001的记录的销售总金额改为60000。

update emp_sale
set tot_amt = 60000
where order_no = '1001'
(8)删除题5建立的视图。

drop view emp_sale;
2.数据库的安全性控制
(1)创建两个新的SQL SERVER登录账户,其中一个登录账户名为Sale,密码为123456,使用的默认数据库为Sale_Manage;另一个登录账户名为Human,密码为654321,使用的默认数据库为Sale_Manage;
--查看登录账号:EXEC sp_helplogins
--exec sp_addlogin '登陆账号名', '密码', '默认数据库名', '使用的语言' exec sp_addlogin 'Sale', '123456', 'Sale_Manage', NULL
exec sp_addlogin 'Human', '654321', 'Sale_Manage', NULL
/* 运行结果:已创建新登录
已创建新登录
*/
(2)将Sale加入到securityadmin服务器角色中。

--EXEC sp_addsrvrolemember '登录帐号', '服务器角色名称'
EXEC sp_addsrvrolemember 'Sale', 'securityadmin'
--运行结果:'Sale' 已添加到角色 'securityadmin' 中。

(3)为数据库Sale_Manage的登录账户Sale创建一个数据库用户Person_Manage,为登录账户Human创建一个数据库用户human_Manage。

/*
查看数据库用户 use Sale_Manage
EXEC sp_helpuser
*/
--USE 数据库名
--EXEC sp_adduser ‘登录帐号’, ‘用户帐号’, ‘所属的数据库角色’
use Sale_Manage
exec sp_adduser 'Sale', 'Person_Manage', 'db_owner'
use Sale_Manage
exec sp_adduser 'Human', 'human_Manage', 'db_owner'
/*
运行结果:已向 'Sale' 授予数据库访问权。

'Person_Manage' 已添加到角色 'db_owner' 中。

已向 'Human' 授予数据库访问权。

'human_Manage' 已添加到角色 'db_owner' 中。

*/
(4)为数据库Sale_Manage创建一个数据库角色Managers,该角色拥有对数据库中的表employee查询和修改的权限。

/*查看数据库角色:use Sale_Manage
EXEC sp_helprole
查看自定义数据库角色的权限: EXEC sp_helprotect NULL, 'Managers'
创建数据库角色:USE 数据库名
EXEC sp_addrole ‘角色名’, ‘拥有者’
*/
USE Sale_Manage
EXEC sp_addrole 'Managers' , 'dbo'
--运行结果:新角色已添加
-- 授权: Grant 权限 on 表名 to 角色
Grant select,update on employee to Managers
Grant update on employee to Managers
--运行结果:命令已成功完成
(5)将数据库用户Person_Manage添加到数据库角色Managers和db_backupoperator 中。

--在当前数据库中添加数据库角色新成员:
--EXEC sp_addrolemember 数据库角色数据库用户
exec sp_addrolemember 'Managers', 'Person_Manage'
exec sp_addrolemember 'db_backupoperator', 'Person_Manage'
/*
运行结果:'Person_Manage' 已添加到角色 'Managers' 中。

'Person_Manage' 已添加到角色 'db_backupoperator' 中。

*/
(6)将对表employee中emp_name列的select操作权限授予角色public。

--Grant 权限(列名) on 表名 to 角色
grant select(emp_name) on employee to public
(7)将创建表和创建视图的权限授予数据库用户Person_Manage。

--Grant 权限 to 数据库用户
grant create table, create view to Person_Manage
(8)拒绝给数据库用户human_Manage授予创建表和创建视图的权限。

--deny 权限 to 数据库用户
deny create table, create view to Human_Manage
(9)用T-SQL完成下列功能:数据库用户human_Manage拥有表customer;human_Manage 将表customer的select权限授予角色Managers,并使该角色具有将指定的对象权限授予其他安全账户的能力。

--拥有表即具有对该表操作的所有权限
grant all on customer to Human_Manage
--给角色授权查询
grant select on customer to Managers
with grant option
三、实验报告
按实验名称、实验目的、实验内容、实验结果的顺序在作业本上写出。

相关主题