- 这一次实验讲的是视图及简单的操作。
3.假设当前数据库是YGGL,创建xscj数据库上的cs_kc视图,包括通信工程专业的学生的学号、姓名、其选修的课程号及成绩。要保证对该视图的修改都符合专业名为“通信工程”这个条件。使用show语句查询所创建的视图,并使用select语句查询该视图内容。
create or replace view xscj.cs_kc
as
select xs.学号,姓名,课程号,成绩
from xscj.xs,xscj.xs_kc
where xs.学号=xs_kc.学号 and xs.专业名='通信工程'
with check option;
show tables from xscj;
select * from cs_kc;
4. 在视图cs_kc中查找学生学号和平均成绩。
select 学号,avg(成绩)
from cs_kc
group by 学号;
5. 创建xscj数据库上的通信工程专业学生的选修课程门数视图cs_kc_c,包括学号(在视图中列名为num)和课程门数(在视图中列名为kc_c),并通过查询视图验证结果。
use xscj
create view cs_kc_c(num,kc_c)
as
select 学号,count(课程号)
from cs_kc
group by 学号;
select * from cs_kc_c;
6. 创建视图cs_xs,视图中包含出生日期是1994的学生信息,并向cs_xs视图中插入一条记录:(‘081256’,‘张三’,‘通信工程’,1,‘1994-10-21’,50,NULL,NULL)。使用select语句查询视图和原表的内容。
create or replace view cs_xs
as
select *
from xs
where 出生日期 regexp '^1994'
with check option;
insert into cs_xs
values('081256','张三','通信工程',1,'1994-10-21',50,NULL,NULL);
select * from cs_xs;
select * from xs;
7. 查找平均成绩在85分以上的学生的学号和平均成绩。
create view xs_kc_avg ( num,score_avg )
as
select 学号, avg(成绩)
from xs_kc
group by 学号;
8. 将cs_kc视图中学号为081220同学的成绩修改为90,姓名为王五,并使用select语句验证结果。
update cs_kc
set 成绩=90
where 学号='081220' ;
update cs_kc
set 姓名='王五'
where 学号='081220' ;
select * from cs_kc;
9. 删除cs_xs中张三同学(学号’081256’)的记录。
delete from cs_xs
where 学号 = '081256';
10. 将cs_xs视图修改为只包含通信工程专业学生的学号、姓名和总学分三列。
alter view cs_xs
as
select 学号,姓名,总学分
from xs
where 专业名 = '通信工程';
11. 删除视图cs_xs。
drop view cs_xs;
12. 创建YGGL数据库上的视图ds_view,视图包含departments表的全部列。
create or replace view yggl.ds_view
as
select *
from yggl.departments
with check option;
13. 创建视图employees_view,视图包含员工的号码、姓名和实际收入。
create view employees_view(员工号码,姓名,实际收入)
as
select employees.employeeid,name,(inCome-outCome)
from employees,salary
where employees.employeeid=salary.employeeid;
14. 创建视图employees_all_view,包含员工的号码、姓名、所在的部门名称和实际收入。
create view employees_all_view(员工号码,姓名,所在部门,实际收入)
as
select employees.employeeID,name,departmentName,(inCome-outCome)
from employees,salary,departments
where employees.employeeID=salary.employeeID
and employees.departmentID=departments.departmentID;
15. 从视图ds_view中查询出部门号为4的部门名称。
select departmentname from ds_view
where departmentid='4';
16. 从视图employees_view中查询出姓名为“李丽”的员工的实际收入。
select 实际收入 from employees_view
where 姓名='李丽';
17. 向视图ds_view中插入一行数据:6,财务部,财务管理。
.insert into ds_view values('6','财务部','财务管理');
18. 修改视图ds_view,将部门5的部门名称修改为“生产部”
update ds_view set departmentname='生产部'
where departmentid='5';
19. 修改视图employees_view中号码为000001的员工的姓名为“王五”。
update employees_view
set 姓名 ='王五'
where 员工号码='000001';