资讯动态

什么是视图,大白话说清楚

发布时间:2026/9/30 0:14:33 来源:尧图企业网站定制
数据库视图大白话彻底讲明白一、视图到底是什么一句话视图就是一条「保存好的查询SQL」本身不存真实数据只是一张「虚拟表」。举个超好懂的例子你仓库里有一堆原始大表好比一堆原始Excel源文件字段超多、数据很乱、内容很杂你每次查数据都要写长长一串筛选、合并、隐藏列的SQL写得麻烦还容易写错你把这串常用的查询语句保存起来起个名字这个保存好的东西就是视图。• 真实数据还在原来的原始表里视图不复制、不占额外存储空间• 你查视图等价于自动执行你提前存好的那段SQL实时从原表捞数据• 外观上视图和普通表一模一样可以直接 select * from 视图名 拿来用。二、为什么要发明视图存在的意义原始表直接用有很多痛点视图就是用来解决这些问题的。三、视图核心5大作用全是实战用处简化复杂查询少写重复代码场景一张订单表、用户表、商品表三张表要联表查询还要过滤时间、筛选状态、计算金额SQL超级长。• 不用视图每个人用都要复制一大段长SQL写错一处全错• 用视图把联表筛选逻辑做成视图别人直接 查视图 就行一行代码搞定复杂查询。隐藏敏感字段做数据安全场景员工原始表有姓名、部门、手机号、工资、身份证号 等隐私字段。• 普通员工只能看姓名和部门• 不能让所有人都查到工资、隐私• 做法建一个视图只展示允许看的字段隐藏敏感列权限直接控制。屏蔽表结构变更解耦开发场景后端开发改了原始表的字段名、拆分了一张大表成两张表。• 没有视图所有用到这张表的代码、报表、系统全部要改SQL工作量爆炸• 有视图只需要修改视图内部的查询逻辑外面业务代码完全不用动照常查视图无感过渡。统一数据口径避免所有人查的数据不一样场景「有效订单」每个人理解不一样有人算已付款、有人算未取消、有人排除测试单。• 没视图每个人自己写筛选条件最后统计数据对不上吵架扯皮• 有视图统一写好「有效订单」的筛选规则所有人统一查这张视图全员口径一致数据不出错。限制数据范围只给你看该看的数据场景销售A只能看自己区域的客户销售B只能看自己片区。建视图时提前加好条件 where 区域‘华南区’销售只能查这个视图天然看不到别的区域数据。四、关键区别视图 vs 普通表对象 存不存数据 占用空间 修改数据普通表 存真实数据 占硬盘空间 直接增删改视图 不存数据只是SQL逻辑 几乎不占空间 一般只查不建议改五、极简总结背诵版视图虚拟表存好的查询语句数据都在原表核心目的偷懒、安全、统一标准、方便维护日常用法复杂查询封装、隐藏隐私数据、报表专用、多系统统一口径。一、大白话视图存在数据库哪里视图不存业务数据学生、订单、工资这些真实数据只存在原始数据表里。2. 视图只存一段写死的SQL查询语句• 存储位置数据库的系统元数据系统字典表里• 本质数据库把你写好的select xxx语句起个名字存起来• 你查视图时数据库自动跑一遍这段保存的SQL临时从原表拿数据3. 类比表 实实在在的Excel表格有内容视图 保存好的「筛选合并公式」点开公式自动算出结果本身没有内容二、创建视图 标准语法超简单基础语法CREATE VIEW 视图名 AS-- 这里写你平时用来查数据的正常SQLSELECT 字段1,字段2,字段3 FROM 原表WHERE 条件;1. 最简单示例单表有一张员工表 emp隐藏工资、身份证只给普通员工看基础信息-- 创建视图员工简易信息视图CREATE VIEW v_emp_simple ASSELECT id,name,dept,sex FROM emp;规范习惯视图名一般加前缀 v_一眼分清是视图还是普通表2. 复杂示例多表联查、统计订单表 用户表联查做成报表视图CREATE VIEW v_order_user ASSELECT o.order_id,o.order_time,u.name,u.phone,o.moneyFROMorderoLEFT JOIN user u ON o.user_id u.idWHERE o.status 1;三、怎么使用视图和普通表完全一模一样-- 直接查询视图SELECT * FROM v_emp_simple;四、修改 / 删除视图 语句1. 修改视图重新覆盖里面的SQLALTER VIEW 视图名 ASSELECT 新字段 FROM 原表 WHERE 新条件;2. 删除视图DROP VIEW IF EXISTS 视图名;五、关键补充必记1. 视图没有独立数据原表改了数据视图查出来自动跟着变2. 简单视图可以增删改工作中绝对不建议用视图只用来查询3. 视图占用存储空间极小只存一段SQL文本不占数据空间

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑