数据库实验六
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库上机实验六
实验名称:视图的建立与使用(续)和数据库的安全性控制
一、实验目的
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'
--运行结果:新角色已添加