mysql数据库实验8

- 这一次实验讲的是视图及简单的操作。

  • 视图一经定义以后,就可以像表一样被查询、修改、删除和更新。所以我们也可以来进行增改删查操作。
  • select语句:用来创建视图的,可在SELECT语句中查询多个表或视图。
  • WITH CHECK OPTION:指出在可更新视图上所进行的修改都要符合select_statement所指定的限制条件,这样可以确保数据修改后,仍可通过视图看到修改的数据。
  • OR REPLACE:给定了OR REPLACE子句,语句能够替换已有的同名视图。

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';

你可能感兴趣的:(mysql数据库实验8)