【笔记】【MySQL5.7 从入门到精通】第11章 视图

目录

11.1 视图概述

11.2 创建视图

11.2.2 在单表上创建视图

11.2.3 在多表上创建视图

11.3 查看视图

11.4 修改视图

11.5 更新视图

11.6 删除视图


11.1 视图概述

数据库中的视图是一个虚拟表,其数据是从一个或多个实体表中导出的。视图还可以从已经存在的视图的基础上定义。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录。

视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作于对表的操作一样,可以对其进行查询、修改和删除。方队通过视图看到的数据进行修改时,相应的基本表数据也要发生裱花;同实,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

11.2 创建视图

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED|LOCAL] CHECK OPTION]

-- CREATE 创建视图
-- REPLACE 替换已经存在的视图
-- ALGORITHM 选择视图选择的算法
-- view_name 视图名称
-- column_list 属性列
-- select_statement 查询语句
-- [WITH [CASCADED|LOCAL] CHECK OPTION] 表示视图再更新时保证再视图的权限范围之内

-- ALGORITHM
--    UNDEFINED  自动选择算法
--    MERGE      将使用的视图语句与视图定义结合起来,使得视图定义的某一部分取代语句对应的部分
--    TEMPTABLE  将视图的结果存入临时表,然后用临时表来执行语句

CASCADED 与 LOCAL 为可选参数,
      CASCADED为默认值,表示更新视图时要满足所有相关视图和表的条件
      LOCAL            表示更新视图时满足该视图本身定义的条件即可

该语句要求具有 针对视图的CREATE VIEW权限,以及针对由SELECT语句选择的每一列上的某些权限。对于在SELECT语句中其他地方使用的列,必须具有SELECT权限。如果还有OR REPLACE子句,必须在视图上具有DROP权限。

11.2.2 在单表上创建视图

CREATE TABLE t (qty INT, price INT);         /*创建基本表t*/
INSERT INTO t VALUES(3, 50);                 /*插入记录*/
CREATE VIEW view_t AS SELECT quantity, price, quantity *price FROM t;    /*创建视图view_t*/
SELECT * FROM view_t;

CREATE VIEW view_t2(qty, price, total ) AS SELECT quantity, price, quantity *price FROM t;
SELECT * FROM view_t2;

11.2.3 在多表上创建视图

INSERT INTO student VALUES(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');    /*插入记录*/
INSERT INTO stu_info VALUES(1, 'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');

CREATE VIEW stu_glass (id,name, glass) AS SELECT student.s_id,student.name ,stu_info.glass FROM student ,stu_info WHERE student.s_id=stu_info.s_id;

SELECT * FROM stu_glass;

11.3 查看视图

DESCRIBE view_t;

SHOW TABLE STATUS LIKE 'view_t' \G;
SHOW TABLE STATUS LIKE 't' \G;

SHOW CREATE VIEW view_t \G;

SELECT * FROM information_schema.views \G;

11.4 修改视图

CREATE OR REPLACE VIEW view_t AS SELECT * FROM t;

ALTER VIEW view_t AS SELECT quantity FROM t; 

11.5 更新视图

SELECT * FROM view_t;          /*查看更新之前的视图*/
SELECT * FROM t;               /*查看更新之前的表*/
UPDATE view_t SET quantity=5;  /*更新视图*/
SELECT * FROM t;               /*查看更新之后的表*/
SELECT * FROM view_t;          /*查看更新之后的视图*/
SELECT * FROM view_t2;


INSERT INTO t VALUES (3,5);   /*基本表t中插入一条记录*/
SELECT * FROM t;
SELECT * FROM view_t2;

11.6 删除视图

DROP VIEW IF EXISTS stu_glass;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhy29563

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值