14_MySQL视图

1. 概述

  • 概念:视图:是一种虚拟表,但可以和普通表一样使用

    视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上

    例如可以将查询结果的虚拟集封装成视图,下次再需要查询同样数据时就不用再写查询,直接使用视图就行了,因此视图具有临时性

  • 存储:视图没有物理结构空间,只保存了SQL逻辑,类似于java中封装的函数

  • 使用:视图支持增删改查操作,但一般我们不使用(限制太多)

  • 好处:

    提高重用

    简化代码

    保护数据,提高数据库安全性

2. 视图的创建

语法:

CREATE VIEW name
AS
查询语句;

3. 视图的删除

语法与表的删除一致,只是将table改为view:

DROP VIEW [IF EXISTS] 视图名1,视图名2,...;

4. 视图的修改

对于视图的修改其实就是对创建视图的查询语句的修改,有以下俩种方式:

方式一:

CREATE OR REPLACE VIEW 视图名
AS
查询语句;
-- 意思是如果视图存在就修改,不存在则创建视图

方式二:

ALTER VIEW 视图名
AS
查询语句;

5. 视图的CRUD

5.1 查看视图

这里的查看不是查看视图数据(查看数据直接按照表的查询规则查询即可)

而是查看视图的结构,语法与查看表的结构一致:

-- 语法
-- 查看视图的结构
DESC 视图名;
-- 查看视图的创建过程
SHOW CREATE VIEW 视图名;

-- 查询结果例:
-- 创建视图a
CREATE VIEW a
AS
SELECT * FROM test;
-- 查询创建过程:
SHOW CREATE VIEW a;
-- 结果:
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `a` AS select `test`.`Sno` AS `Sno` from `test`

查看视图的结构:

从 MySQL 5.1 版本开始,使用 SHOW TABLES 命令的时候不仅显示表的名字,同时也会显示视图的名字,而不存在单独显示视图的 SHOW VIEWS 命令。

5.2 视图的更新

即增删改操作,同样与操作表一致:

-- 增
INSERT INTO 视图名(列1,列2,...) VALUES(值1,值2,..);
-- 删
DELETE FROM 视图名 WHERE ...;
-- 改
UPDATE 视图名 SET 字段=新值,... WHERE ...;

但是具有以下特点的视图不能更新

  • 包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
  • 常量视图
  • Select中包含子查询
  • join
  • from一个不能更新的视图
  • where子句的子查询引用了from子句中的表

也因此由于限制条件太多一般不对视图进行增删改操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值