MySQL 视图

数据库还有一种虚拟表,它的结构跟真实表一样,都是二维表,但是不存放数据,数据从真实表中获取,这种表被称为视图

简而言之,视图就是一张虚拟表 ,本身不存真实数据,只存一条查询语句

查视图 = 自动执行提前写好的 SELECT 查询

  • 没有真实数据,数据都来自原数据表

  • 如果真实表里的数据变了,视图里的数据会实时跟着变

  • 每次你查询视图时,MySQL 都会在后台重新执行 定义它的那条 SELECT 语句,从而获取主表中的最新数据

  • 视图的数据不会持久化到磁盘上,而是基于查询结果动态生成

为什么需要视图?

  • 隐藏敏感字段(密码、手机号、薪资),只开放允许查看的字段,做到字段级别权限控制

  • 把多表联查、子查询、统计语句固定成视图,以后直接查视图,不用重复写长 SQL

  • 后端修改原表结构,只需修改视图,前端查询语句不用改动,降低维护成本

创建视图

复制代码
CREATE [on replace] VIEW 视图名称 AS
SELECT 字段1, 字段2, ...
FROM 表名
WHERE 条件;
  • create:创建视图的关键字

  • on replace:可选,表示替换已有视图

  • algorithm:在关键字view前定义,表示视图算法

  • as:表示视图要进行的操作

  • select语句:一个完整的查询语句,表示从某些表或视图中查出某些满足条件的记录,将这些记录导入进视图中。

查询视图

全局查询:

复制代码
SELECT * FROM view_goods;

条件查询:

复制代码
SELECT product_name, service_name 
FROM view_goods 
WHERE price > 100 
ORDER BY price DESC;

查看字段结构:

复制代码
DESC view_goods;

删除视图

复制代码
DROP VIEW view_goods;

视图的本质就是保存查询语句,让程序员可以不需要每次查询都重写一大段查询语句。

修改视图

修改视图是指修改数据库中存在的视图的定义,当基本表中某些字段发生改变时,视图必须修改才能使用。

修改视图的本质,就是用一段新的查询语句去覆盖掉旧的语句

通过create or replace view语句在创建视图时替换已有的同名视图。

复制代码
create or replace view view_goods as
select id,name from goods;

视图数据操作

视图数据操作就是通过视图来查询、添加、修改或删除基本表的数据,因为视图是一个虚拟表,不保存数据;当通过视图操作数据时,实际操作的是基本表的数据。

添加数据

复制代码
insert into view_goods values(17,'图书');

修改数据

使用update语句可以修改基本表的数据

复制代码
update view_goods set name='家电' where id=7;

删除数据

使用delete可以删除基本表的数据

复制代码
delete from view_goods where id=7;
相关推荐
无小道1 小时前
Mysql——用C语言链接数据库
数据库·mysql
Achou.Wang2 小时前
Selecting channels:Go 并发里的“多路开关”
服务器·数据库·golang
m0_609160492 小时前
Go语言Beego框架如何用_Go语言Beego框架入门教程【高效】
jvm·数据库·python
未若君雅裁4 小时前
MySQL-MVCC核心原理-版本链ReadView与可见性判断
数据库·mysql
KaMeidebaby8 小时前
卡梅德生物技术快报|骆驼纳米抗体:从原核表达、高通量测序到分子对接全流程实现
前端·数据库·其他·百度·新浪微博
2301_7838486510 小时前
优化文本分类中堆叠模型的网格搜索性能:避免训练卡顿的实战指南
jvm·数据库·python
拾贰_C11 小时前
【Ubuntu | 公共工作站 | mysql 】 MySQL残留物残留数据
linux·mysql·ubuntu
TE-茶叶蛋11 小时前
DBeaver 的Explain 执行计划,分析sql的性能
数据库·sql
CLX050511 小时前
如何安装Oracle 12c Cloud Control_OMS服务端组件与Agent部署
jvm·数据库·python