一 实验目的
- 掌握视图的概念和作用;
- 掌握创建视图的语句;
- 掌握查看视图的方法;
- 掌握修改和删除视图的操作;
二 实验平台
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;