内容正文:
第5章 视图与索引
本单元教学目标
了解数据库的数据库视图的概念
认识数据表索引
理解索引的实现原理
掌握数据视图创建语法
掌握索引的创建语法
能够熟练为数据表添加索引提升检索速度
3
数据视图
视图以物理数据为基础,对已经存在的数据通过一定的运算规则获得新的数据集合
视图构建在数据表的基础上
通过对关系表数据检索来形成新的数据集合
视图中的数据
视图不同于数据库的物理表
数据库环境中没有专门的视图数据存储单元
关系表数据改变时会反映在对应的视图上
视图的权限
视图提供查询、检索操作,即支持读操作
有特殊权限的视图可以进行写操作
4
视图构建
可以构建在一个或多个关系数据表上
为视图提供数据的关系表叫基表
可以构建在一个或多个视图上
可以构建在视图与数据表混合体上
5
视图构建语法
视图创建语法:
CREATE VIEW 视图名 (列名1,列名2,列名3,…) AS 子查询
CREATE VIEW first_view(aa,bb,cc) AS SELECT a,b,c FROM abc
创建语法分析:
CREATE VIEW为创建视图的关键字
CREATE VIE后面为视图的名称
视图名称后面为视图的列,需用小括号括起来
列名后面跟关键字AS
AS关键字后面为数据的检索子查询,即视图的数据来源
6
视图检索-更新-删除语法
视图数据检索语法
SELECT 列名1,列名2,列名3 FROM 视图名
SELECT aa,bb,cc FROM first_view
可以用星号“*”表示检索所有数据列
SELECT * FROM first_view
视图删除语法:
DROP VIEW 视图名
DROP VIEW first_view
视图修改语法:
ALTER VIEW 视图名 (列名1,列名2,列名3,…) AS 子查询
ALTER VIEW first_view(ee,ff,gg) AS SELECT e,f,g FROM abc
7
案例应用(视图构建)
在my_view库中存在如下数据表
Sale、Shop、User
表结构如图所示
创建如图中所示的相关视图
US_View视图
Shop_View视图
SS_View视图
检索出相关视图的数据
8
关系表与视图组成结构关系
9
数据库环境SQL脚本
CREATE DATABASE IF NOT EXISTS my_view;
USE my_view;
DROP TABLE IF EXISTS sale;
CREATE TABLE sale (
sid varchar(10) NOT NULL,
uid varchar(10) DEFAULT NULL,
cid varchar(10) DEFAULT NULL,
stime datetime DEFAULT NULL,
smoney float DEFAULT NULL,
spay char(1) DEFAULT NULL,
PRIMARY KEY (sid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO sale (sid,uid,cid,stime,smoney,spay) VALUES
('S201','U1001','C01','2019-03-06 12:24:30',318,'Y'),
('S202','U1002','C02','2019-04-08 15:28:30',215,'Y'),
('S203','U1003','C03','2019-07-12 16:30:20',156,'Y');
DROP TABLE IF EXISTS shop;
CREATE TABLE shop (
cid varchar(10) NOT NULL,
cname varchar(10) DEFAULT NULL,
ctype varchar(20) DEFAULT NULL,
csupplier varchar(45) DEFAULT NULL,
amount smallint(6) DEFAULT NULL,
saler varchar(45) DEFAULT NULL,
manager varchar(45) DEFAULT NULL,
address varchar(45) DEFAULT NULL,
PRIMARY KEY (cid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO shop (cid,cname,ctype,csupplier,amount,saler,manager,address) VALUE