MYSQL视图解析

本文优化并补充了大佬的文章:https://www.cnblogs.com/chenpi/p/5133648.html

https://blog.csdn.net/moxigandashu/article/details/63254901

1.视图的定义

①视图是一条SELECT语句执行后返回的结果集

②视图是虚拟表,在物理意义上不存在的,即MYSQL没有专门的位置为视图存储数据,视图的数据都来源于查询语句。

③视图的作用是封装了复杂的查询语句。

2.视图的操作

#创建视图

CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;

#查看数据库已有视图

USE DB_NAME ;

SHOW TABLES [like...];(可以使用模糊查找);

#查看视图详情

①SHOW TABLE STATUS [FROM DB] [LIKE ....]

②USE DB_NAME;

SHOW CREATE VIEW VIEW_NAME;

③DESCRIBE/DESC VIEW_NAME

#删除视图

DROP VIEW VIEW_NAME;

#修改视图的查询语句

①CREATE OR REPLACE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;

ALTER VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;

#查看视图数据

SELECT 列名 FROM VIEW_NAME;

#利用视图操作基本表

添加数据:INSERT INTO VIEW_NAME(列1,列2...) VALUE (数据1,数据2....);

删除数据:DELECT FROM VIEW_NAME WHERE ....;

修改数据:UPDATE VIEW_NAME SET XXX=... WHERE ....;

#确保视图一致性

创建视图时在最后加WITH CHECK OPTION;

WITH CHECK OPTION可以这么解释:通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如你insert,那么加的这条记录在刷新视图后必须可以看到;如果修改,修改完的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。   


3.视图的特点

①方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性。

②更加安全,数据库授权命令不能限定到特定行和特定列,但是通过合理创建视图,可以把权限限定到行列级别,通俗点讲,就是说我们可以隐藏某些字段,只给用户看特定的字段,用户就无法知道基本表的完整结构了。

③视图与基本表的数据是同步的,不管对哪一方进行数据操作,都会影响另一方。

④如果视图和基本表是一对一的关系,那我们可以通过视图对表数据进行增删改操作。

⑤视图的列可以来自不同的基本表,但如果来自不同的基本表时,不允许增删数据,只能修改数据。

⑥从视图对基本表进行增改操作时,要注意基本表的约束,举个例子,假设有个基本表(name,age),其中name有非空约束,现在有个对应的视图(age),用户想通过视图往基本表里添加一行记录age=11,这时MYSQL就会报错,因为用户往基本表里插入的是name=null,age=11,不符合非空约束。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值