一 实验目的

  1. 掌握视图的概念和作用;
  2. 掌握创建视图的语句;
  3. 掌握查看视图的方法;
  4. 掌握修改和删除视图的操作;

二 实验平台

2.1 操作系统:

Windows XP,Windows Server 2003,Windows 7 或者 Windows 10;

2.2 数据库

MySQL Server 8.0,MySQL Workbench、phpMyAdmin、Navicat for mySQL、
MySQL 等客户端工具;

三 实验内容和要求

1.创建视图

(1) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)为员工医疗
保险系统(实验 03 创建的 7 个表)创建视图,该视图中包括医保卡信息、医保卡
所属人信息和所属人单位信息,视图名为“card_view”。
(2) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)为实现员工
持医保卡到医院消费的功能创建视图,该视图中包括员工的信息、医保卡信息、
医保信息和消费等信息,视图名为“consume_view”。
(3) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)为企业医保
缴费信息功能创建视图,该视图中包括医保缴费的企业信息,医保卡信息和企业
医保缴费费用等信息,视图名为“insurnce_view”。
(4) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)为员工信息
创建视图,视图名为“staff_view”,视图中包含员工编号、姓名、性别、出生日期、
年龄、住址、联系电话、医保卡号、医保类型、医保余额、企业编号、企业名称、
企业类型、企业地址等信息

2.查看视图

(1) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)查看
“card_view”视图的属性信息。
(2) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)查看
“consume_view”视图的信息。
(3) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)查看
MySQL 数据库教学资料
北京理工大学珠海学院张申勇 2 “insurnce_view”视图的子查询语句。
(4) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)显示
“ staff_view”视图的信息。
3.视图数据的查询
(1) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)查询视图
“staff_view”的数据,观察显示的数据是否正确。
4.删除视图
(1) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)删除
“staff_view”视图。
(2) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)删除
“card_view”视图。
(3) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)删除
“consume_view”视图。
(4) 使用 MySQL 命令行或者 workbench(或者 Navicat for MySQL)删除
“insurnce_view”视图。

常见问题分析

1.视图中常见的问题

创建一个视图之后,查看视图发现视图中有重复出现的列值,这时,请查看
视图连接中 WHERE 条件是否正确。

-- 一、创建视图
-- 1
create view card_view as 
select card.cno,ctype,cmoney,sno,sname,ssex,sbirthday,sadress,stel,bussiness.bno,bname,btype,baddress,btel
from card,staff,bussiness
where card.cno=staff.cno and staff.bno=bussiness.bno;

-- 2
 create view consume_view as
 select card.cno,ctype,cmoney,sno,sname,ssex,sbirthday,sadress,stel,staff.bno,idate,imone,hno,csdate,mname,mnum,csmoney
 from card,staff,insurance,consume
 where card.cno=staff.cno=insurance.cno=consume.cno;
 
 -- 3
 create view insurance_view as
 select insurance.bno,bname,btype,baddress,btel,card.cno,ctype,cmoney,csmoney
 from insurance,bussiness,card,consume
 where insurance.bno=bussiness.bno and consume.cno=card.cno=insurance.cno;
 
 -- 4
 create view staff_view as
 select sno,sname,ssex,sbirthday,sadress,stel,staff.cno,ctype,cmoney,staff.bno,bname,btype,baddress,btel
 from staff,card,bussiness
 where staff.cno=card.cno and staff.bno=bussiness.bno;
 
 -- 二、查看视图
DESC card_view;
DESC consume_view;
DESC insurance_view;
DESC staff_view;
-- 查询其他详细信息
SHOW CREATE VIEW card_view;
SHOW CREATE VIEW consume_view;
SHOW CREATE VIEW insurance_view;
SHOW CREATE VIEW staff_view;

-- 三、视图数据的查询
 select * from staff_view;
 
 -- 四、删除视图
 DROP VIEW IF EXISTS card_view,consume_view,insurance_view,staff_view;