千家信息网

mysql视图是什么?怎么实现?

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,mysql视图概念视图本身是一张虚拟表,不存放任何数据。在使用SQL语句访问视图的时候,获取的数据是MySQL从其它表中生成的,视图和表在同一个命名空间。视图查询数据相对安全,可以隐藏一些数据和结构,
千家信息网最后更新 2026年11月01日mysql视图是什么?怎么实现?

mysql视图概念

视图本身是一张虚拟表,不存放任何数据。在使用SQL语句访问视图的时候,获取的数据是MySQL从其它表中生成的,视图和表在同一个命名空间。视图查询数据相对安全,可以隐藏一些数据和结构,只让用户看见权限内的数据,使复杂的查询易于理解和使用。

视图用法

如下基于用户和订单管理演示视图的基本用法。(在线学习视频教程分享:mysql视频教程)

基础表结构

CREATE TABLE v01_user (    id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',  user_name VARCHAR(20) DEFAULT NULL COMMENT '用户名',    phone VARCHAR(20) DEFAULT NULL COMMENT '手机号',    pass_word VARCHAR(64) DEFAULT NULL COMMENT '密码',    card_id VARCHAR(18) DEFAULT NULL COMMENT '身份证ID',    pay_card VARCHAR(25) DEFAULT NULL COMMENT '卡号',  PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '用户表';CREATE TABLE v02_order (    id INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',    user_id INT(11) NOT NULL COMMENT '用户ID',    order_no VARCHAR(32) DEFAULT NULL COMMENT '订单编号',    good_name VARCHAR(60) DEFAULT NULL COMMENT '商品名称',    good_id INT(11) DEFAULT NULL COMMENT '商品ID',        num INT(11) DEFAULT NULL COMMENT '购买数量',    total_price DECIMAL(10,2) DEFAULT NULL COMMENT '总价格',  PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '订单表';

基本语法

CREATE OR REPLACE VIEW view_name AS select_statement

注意事项:表和视图共享数据库中相同的名称空间,因此,数据库不能包含具有相同名称的表和视图。

用户订单视图

CREATE OR REPLACE VIEW user_order_view AS SELECT    t1.id,t1.user_name,t2.order_no,t2.good_id,    t2.good_name,t2.num,t2.total_priceFROM v01_user t1LEFT JOIN v02_order t2 ON t2.user_id = t1.id;

视图调用

这里和MySQL的表查询基本一致,可以使用各种查询条件。

SELECT * FROM user_order_view WHERE user_name='Cicada';查看视图SHOW CREATE VIEW user_order_view ;修改视图ALTER VIEW view_name AS select_statement ;删除视图DROP VIEW [IF EXISTS] view_name ;

视图更新

在指定条件允许的情况下,可以通过在视图上操作更新,删除,甚至写入数据,进而更新视图所涉及的相关表。

UPDATE user_order_view SET user_name='smile' WHERE id='1';

这里就通过对视图执行更新操作,进而更新v01_user表数据。如果视图定义时使用聚合函数,分组等特殊操作,则无法更新。MySQL不支持在视图上创建触发器。

视图实现

1、临时表算法

服务器会把视图查询SQL的数据保存在临时表中,临时表的结构和视图字段结构一致,这样是SQL查询优化中最忌讳的操作,数据量稍微偏大,就会严重影响性能。如果视图无法和原有表产生一对一的映射关系,就会产生临时表,由此也可见视图并不是很简单,甚至是非常复杂的功能。

2、合并算法

服务器基于视图中使用的表执行查询,最后把查询结构合并后返回给客户端。

3、区别方法

执行如下查询语句,可以分析执行的性能参数。

EXPLAIN SELECT * FROM user_order_view ;

观察查询结果中select_type字段,如果是DERIVED则说明使用临时表。这里SQL执行分析的语法后面优化部分再详解。

注意事项

1、性能问题

MySQL并不支持在视图中创建索引,使用视图的时候可能会引发很多查询性能问题,所以建议使用的时候要慎重,多角度审视和测试。

2、特殊用法

基于视图的查询,可以修改部分表结构,只要不是在视图中使用的字段,就不会影响视图的查询。

以上就是一文详解mysql视图的详细内容,更多请关注其它相关文章!

视图 查询 数据 用户 结构 更新 性能 订单 名称 字段 时候 复杂 特殊 相同 一致 事项 商品 教程 数据库 服务器 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 上海互联网科技有限公司 奇酷互联网科技公司 华中科技大学互联网 万达互联网科技 金融科技和互联网金融 博兴的互联网电子科技公司 深圳国际航运科技和互联网 世界互联网科技公司市值排名 荆州市昕露互联网络科技有限公司 崇明区互联网教育科技诚信经营 青海科技产业互联网发展 银川新华互联网科技学校联系电话 卓翼科技产业互联网合作 互联网科技实习生岗位 湖北辰鑫科技互联网 长沙渺峰互联网科技有限公司 互联网科技收购价值 银川新华互联网科技学校原画 颐高云石互联网科技 期待互联网科技 贷财互联网科技 互联网 科技服务平台 科技与互联网的利与弊 湖北码尼互联网科技有限公司电话 岳阳华臻互联网科技有限公司 浙南科技城互联网大厦建设工程 广州新华互联网科技学校电竞方面 科技和互联网行业的特点 恒生科技指数 中概互联网
0