数据库上机实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验7视图的使用
目的与要求:
掌握视图的使用方法.
实验内容:(用create view命令创建视图)
创建v_employees11视图,包括每个职工的职工号,姓名,性别,出生日期与部门编号;
create view v_employees11
(employeeid,name,sex,birthday,departmentid)
as
select employeeid,name,sex,birthday,departmentid
from employees
用insert语句向视图 v_employees11中插入一条记录insert
into v_employees11
values ('00036','聂应好','1','1991-12-07','4')
并使用select查询基本表employees;
select*
from employees
在v_employees11上的
update v_employees11
set birthday=’1989-12-12’
where employeeid=’00003’
更新允许执行吗?能为什么?因为基表中含有这
个项
创建v_employees12视图,包括财务部各职工的职工号,姓名及收入;
create view v_employees12(employeeid,name,income)
as
select a.employeeid,,b.income
from employees a,salary b
where a.employeeid=b.employeeid
and departmentid='1'
在v_employees12上的
update v_employees12
set income=5678
where employeeid=’00003’
更新允许执行吗?允许为什么?因为基表中含有这个项
在v_employees12上的
Delete v_employees12
where employeeid=’00003’
删除允许执行吗?不允许为什么?视图或函数
'v_employees12' 不可更新,因为修改会影响多个基表。
创建v_employees13视图,包括部门名称与实际收入,并加密;
create view v_employees13(bmmc,sjsr)
with encryption
as
select DepartmentName,SUM(income-outcome)
from departments,salary,employees
where employees.employeeid=salary.employeeid
and departments.departmentID=employees.departmentid GROUP by DepartmentName
修改该视图让其不再加密,并改名为v_sjsr.
alter view v_employees13(bmmc,sjsr)
as
select DepartmentName,income-outcome
from departments,salary,employees
where employees.employeeid=salary.employeeid
and departments.departmentID=employees.departmentid
sp_rename v_employees13,v_sjsr已经更改过名字
创建v_employees14视图,包括姓”王”职工的职工号,姓名,性别,出生日期与部门编号,并要保证对该视图的修改都要符合姓王这个条件;
create view v_employees14
with encryption
as
select employeeid,name,sex,birthday,departmentid
from employees
where name like'王%'
向视图 v_employees14中插入两条记录(一个姓王,一个
姓李)
insert
into v_employees14
values ('00039','王云','true','1988-01-01','4')
insert
into v_employees14
values ('00038','李峰','true','1990-02-02','3')
注意观察两次执行不同的反应搞明白原因,并使用select查询基本表employees.没有姓李的在表中
创建v_employees15视图,包括每个职工的职工姓名,性别,收入;
create view v_employees15
as
select name,sex,income
from employees,salary
where employees.employeeid=salary.employeeid
将v_employees15视图中所有职工的收入增加500元并查询基表salary;
update v_employees15
set income=income+500
请将v_employees15中的第三列改为实际收入,
alter view v_employees15
as
select name,sex,(income-outcome)as sjsr
from employees,salary
where employees.employeeid=salary.employeeid