mysql 创建视图顺序_MySQL视图详解

本文详细介绍了MySQL视图的概念、意义、创建、查看、修改、删除等操作,强调了视图在数据安全、权限控制及简化查询方面的优势。同时,探讨了视图的数据操作限制,包括新增、删除和更新,并提到了视图算法的选择策略。
摘要由CSDN通过智能技术生成

视图的简介

视图:view 是一种有结构(有行有列)但是没有结果(结构中不真实存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生的(视图的数据来源)

视图的意义

1.     视图可以节省SQL语句: 将一条复杂的查询语句使用视图进行保存: 以后可以直接对视图进行操作

2.     数据安全: 视图操作是主要针对查询的, 如果对视图结构进行处理(删除), 不会影响基表数据(相对安全).

3.     视图往往是在大项目中使用, 而且是多系统使用: 可以对外提供有用的数据, 但是隐藏关键(无用)的数据: 数据安全

4.    视图可以对外提供友好型: 不同的视图提供不同的数据, 对外好像专门设计

5.    视图可以更好(容易)的进行权限控制

创建视图

基本语法 create view 视图名字 as select 语句,select语句可以是普通查询,可以是连接查询,可以是联合查询,也可以是子查询

创建单表视图:基表只有一个

8251e0f75261

单表视图

创建多表视图:基表至少得有2个以上

8251e0f75261

多表视图

查看视图

视图相当于一张虚拟表,适用于表的所有查看方式都适用于视图:show    tables    like/desc    视图名字

8251e0f75261

查看视图

查看视图的创建语句 show create table/view 视图名字;

8251e0f75261

show table查看方法

8251e0f75261

show view查看方法

视图创建成功后会再对应的数据库文件夹下创建一个对应的结构文件:frm文件

8251e0f75261

目录中对应的frm文件

视图的使用

使用视图主要是为了查询:将视图当做表一样查询即可

8251e0f75261

查询my_v1结果

8251e0f75261

查询多表视图my_v2结果

视图的执行:其实本质就是封装的select语句

修改视图

视图本身不可以修改,但是视图的来源可以修改

修改视图:修改视图本身的来源语句(select语句)

Alter view 视图名字 as 新的 select 语句

8251e0f75261

视图修改之前

8251e0f75261

视图修改之后少了一个`number`字段

删除视图

8251e0f75261

删除视图

视图的数据操作

视图可以进行数据写操作:但是有很多限制

将数据直接在视图上进行操作

新增数据

数据新增就是直接对视图进行数据新增

1:多表视图不能新增数据

8251e0f75261

多表视图的新增数据

2:可以向单表视图插入数据:但是视图中包含的字段必须有,基表中所有不能为空的字段(或者没有默认值)字段

8251e0f75261

视图新增数据:单表

需注意我这里相对于基表中少了一个`number`字段但是能插入成功的原因是我默认了基表中的`number`允许为空,否则是插入不进去会报错的

8251e0f75261

单表视图的查询结果

8251e0f75261

单表视图基表的查询结果,注意number为NULL

删除数据

多表视图不能删除数据

8251e0f75261

视图多表删除报错

单表视图可以删除数据

8251e0f75261

单表视图删除数据成功

8251e0f75261

单表视图删除结果查看

更新数据

理论上不论是单表视图还是多表视图都可以更新数据

8251e0f75261

多表视图更新数据前

8251e0f75261

多表视图更新数据后的结果

8251e0f75261

单表视图更新数据前

8251e0f75261

单表视图更新数据后

更新限制:

with    check     option, 如果对视图在新增的时候,限定了某个字段有限制: 那么在对视图进行数据更新操作时,系统会进行验证: 要保证更新之后,数据依然可以被实体查询出来,否则不让更新.

创建一个更新字段限制的视图

8251e0f75261

表视视图的数据来源都是年龄大于30岁:where age > 30 决定

8251e0f75261

不能将已经得到的数据改成小于30 的

8251e0f75261

将已经得到的数据改成小于30的会报错

修改合格数据

8251e0f75261

数据修改之前

8251e0f75261

数据修改之后

视图算法

视图算法: 系统对视图以及外部查询视图的Select语句的一种解析方式.

视图算法分为三种

Undefined: 未定义(默认的), 这不是一种实际使用算法, 是一种推卸责任的算法: 告诉系统,视图没有定义算法, 系统自己看着办

Temptable: 临时表算法: 系统应该先执行视图的select语句,后执行外部查询语句

Merge: 合并算法: 系统应该先将视图对应的select语句与外部查询视图的select语句进行合并,然后执行(效率高: 常态)

算法指定: 在创建视图的时候

Create algorithm = 指定算法 view 视图名字 as select语句;

8251e0f75261

查询所有,升高降序排列

8251e0f75261

视图算法选择:

如果视图的select语句中会包含一个查询子句(五子句), 而且很有可能顺序比外部的查询语句要靠后, 一定要使用算法temptable,其他情况可以不用指定(默认即可).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值