【MySQL】08.视图

**视图就是一个由查询到的内容定义的虚拟表。**它和真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

1. 基本使用

sql 复制代码
mysql> select * from user;
+----+-----+-----------+
| id | age | name      |
+----+-----+-----------+
|  1 |  56 | 欧阳锋    |
|  2 |  26 | 黄蓉      |
|  3 |  18 | 杨过      |
|  4 |  16 | 小龙女    |
|  5 |  36 | 郭靖      |
+----+-----+-----------+
5 rows in set (0.00 sec)

-- 创建视图
mysql> create view myview as select id,name from user;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from myview;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | 欧阳锋    |
|  2 | 黄蓉      |
|  3 | 杨过      |
|  4 | 小龙女    |
|  5 | 郭靖      |
+----+-----------+
5 rows in set (0.00 sec)

-- 更改视图
mysql> update myview set name = 'aaa' where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from myview;
+----+-----------+
| id | name      |
+----+-----------+
|  1 | aaa       |
|  2 | 黄蓉      |
|  3 | 杨过      |
|  4 | 小龙女    |
|  5 | 郭靖      |
+----+-----------+
5 rows in set (0.00 sec)

mysql> select * from user;
+----+-----+-----------+
| id | age | name      |
+----+-----+-----------+
|  1 |  56 | aaa       |
|  2 |  26 | 黄蓉      |
|  3 |  18 | 杨过      |
|  4 |  16 | 小龙女    |
|  5 |  36 | 郭靖      |
+----+-----+-----------+
5 rows in set (0.00 sec)

-- 删除视图
mysql> drop view myview;
Query OK, 0 rows affected (0.01 sec)

2. 视图的映射规则和限制

视图与表一样,必须唯一命名。
创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响视图不能添加索引,也不能有关联的触发器或者默认值
视图可以提高安全性,必须具有足够的访问权限 order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图 中的 order by 将被覆盖
**•**视图可以和表一起使用

相关推荐
驰羽2 分钟前
NAT模式下VMware的虚拟机DNS解析失败的问题解决
linux·网络·dns
Coder_Boy_4 分钟前
Spring 核心思想与企业级最佳特性(实践级)事务相关
java·数据库·spring
小智RE0-走在路上16 分钟前
Python学习笔记(11) --数据可视化
笔记·python·学习
+VX:Fegn089516 分钟前
计算机毕业设计|基于springboot + vue宠物寄养系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计·宠物
一 乐38 分钟前
校园实验室|基于springboot + vue校园实验室管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
菜鸡000144 分钟前
安装G2O
linux
坚定信念,勇往无前1 小时前
mongodb备份的脚本
数据库·mongodb
誰能久伴不乏1 小时前
epoll 学习踩坑:`fcntl` 设置非阻塞到底用 `F_SETFL` 还是 `F_SETFD`?
linux·服务器·网络·c++·tcp/ip
杨忆2 小时前
构建自己的开发工作台MFC
数据库·c++·mfc
阿巴~阿巴~2 小时前
告别命令行:Navicat可视化操作数据库(附安装使用教程)
服务器·数据库·mysql·navicat·可视化操作数据库