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;
相关推荐
w-w0w-w6 小时前
SQL注入
网络·数据库·sql
tianyuanwo6 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼6 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
IvorySQL7 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
幽灵诶8 小时前
Mysql(基于测试的学习)
数据库·mysql
砚底藏山河8 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
宇宙无敌暴龙战士6669 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊9 小时前
MySQL 的四种隔离级别
java·数据库·mysql
say_fall9 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
共享家952710 小时前
408 操作系统第一章
服务器·数据库·windows