Note/数据库导论/试题/综合案例4——视图应用.md
2023-08-31 12:43:36 +08:00

6.2 KiB
Raw Blame History

综合案例4——视图应用

本部分介绍了MySQL数据库中视图的含义和作用并且讲解了创建视图、修改视图和删除视图的方法。创建视图和修改视图是重点希望同学们认真学习这两部分内容并在计算机上进行操作。同学们在创建视图后一定要查看视图的结构确保创建的视图是正确的修改视图后也要查看视图的结构保证修改是正确的。

1、案例目的

掌握视图的创建、查询、更新和删除操作。

假如河南河北有三个学生参加了清华、北大的自学考试现在需要用数据对其考试结果进行查询和管理清华的分数线是40北大的分数线是41.学生表包含了学生的学号、姓名、家庭地址和电话号码报名表包含学号、姓名、所在学校和报名的学校表结构以及表中的内容分别如表1~表6所示。

表1 stu表结构

字段名 数据类型 主键 外键 非空 唯一 自增
序号 int11
姓名 varchar20
地址 varchar50
电话 varchar50

表2 sign表结构

字段名 数据类型 主键 外键 非空 唯一 自增
序号 int11
姓名 varchar20
学校 varchar50
报名学校 varchar50

表3 stu_mark表结构

字段名 数据类型 主键 外键 非空 唯一 自增
序号 int11
姓名 varchar20
分数 int11

表4 stu表内容

序号 姓名 地址 电话
1 小王 河南 0317-12345678
2 小李 河北 13889072345
3 小田 河南 0317-12345670

表5 sign表内容

序号 姓名 学校 报名学校
1 小王 中学1 北大
2 小李 中学2 清华
3 小田 中学3 清华

表6 stu_mark表中的记录

序号 姓名 分数
1 小王 80
2 小李 71
3 小田 70

2、案例操作过程

1登录MySQL数据库。

mysql -u root -p

截图:

image-20220405094500300

2创建数据库stu_exam并选择使用此数据库。

create database stu_exam;
use stu_exam;

截图:

image-20220405094539472

3按照表1、表2、表3创建表创建成功后用desc查看表结构。

create table stu(
序号 int(11) not null unique,
姓名 varchar(20) not null,
地址 varchar(50) not null,
电话 varchar(50) not null,
primary key(序号)
);
create table sign(
序号 int(11) not null unique,
姓名 varchar(20) not null,
学校 varchar(50) not null,
报名学校 varchar(50) not null,
primary key(序号)
);
create table stu_mark(
序号 int(11) not null unique,
姓名 varchar(20) not null,
分数 int(11) not null,
primary key(序号)
);

截图:

image-20220405160214782

4将表4、表5、表6的记录分别插入三个表中。

insert into stu values
(1,'小王','河南','0317-12345678'),
(2,'小李','河北','13889072345'),
(3,'小田','河南','0317-12345670');
insert into sign values
(1,'小王','中学1','北大'),
(2,'小李','中学2','清华'),
(3,'小田','中学3','清华');
insert into stu_mark values
(1,'小王',80),
(2,'小李',71),
(3,'小田',70);

截图:

image-20220405161410429

5创建考上北大的学生视图视图中包含序号、姓名、分数和报名学校

create view 北大
(序号,姓名,分数,报名学校) as
select stu_mark.序号,stu_mark.姓名,stu_mark.分数,sign.报名学校
from stu_mark,sign
where stu_mark.序号=sign.序号 and sign.报名学校='北大' and stu_mark.分数>=41;

截图:

image-20220406200815038

6创建考上清华的学生视图视图中包含序号、姓名、分数和报名学校

create view 清华
(序号,姓名,分数,报名学校) as
select stu_mark.序号,stu_mark.姓名,stu_mark.分数,sign.报名学校
from stu_mark,sign
where stu_mark.序号=sign.序号 and sign.报名学校='清华' and stu_mark.分数>=40;

截图:

image-20220406201123556

7小田的成绩在录入的时候录入错误多录了50分对其录入成绩进行更新。

update 清华 set 分数=分数-50 where 姓名='小田';

截图:

image-20220405163009861

8查询更新过后的视图和表的情况。

select * from 清华;
select * from stu_mark;

截图:

image-20220406201156824

9查看视图的创建信息。

show table status like '北大';
show table status like '清华';

截图:

image-20220405163228521

10删除创建的视图。

drop view 北大;
drop view if exists 清华;

截图:

image-20220405163346868