MySQL视图

目录

前言

1.视图的概念

2.基本使用

2.1创建视图

2.2修改视图

2.3删除视图

3.视图的规则和限制

总结


前言

哈喽,大家好!今天博主将为大家介绍MySQL中的视图,在上一篇文章MySQL事务中最后也介绍一个东西叫做视图,可能有小伙伴会好奇,这两个是不是同一个东西呢?答案是这二者没有任何的关系,下面我们来看看今天要讲的视图是什么呢。

1.视图的概念

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

2.基本使用

2.1创建视图

sql 复制代码
create view 视图名 as select语句;

案例:

sql 复制代码
mysql> create view my_view as select ename,dname from emp,dept where emp.deptno=dept.deptno;

使用创建的视图查询:

sql 复制代码
mysql> select* from my_view;
+--------+------------+
| ename  | dname      |
+--------+------------+
| SMITH  | RESEARCH   |
| ALLEN  | SALES      |
| WARD   | SALES      |
| JONES  | RESEARCH   |
| MARTIN | SALES      |
| BLAKE  | SALES      |
| CLARK  | ACCOUNTING |
| SCOTT  | RESEARCH   |
| KING   | ACCOUNTING |
| TURNER | SALES      |
| ADAMS  | RESEARCH   |
| JAMES  | SALES      |
| FORD   | RESEARCH   |
| MILLER | ACCOUNTING |
+--------+------------+
14 rows in set (0.00 sec)

2.2修改视图

sql 复制代码
mysql> update my_view set ename='smith' where ename='SMITH';
sql 复制代码
mysql> select* from my_view;
+--------+------------+
| ename  | dname      |
+--------+------------+
| smith  | RESEARCH   |
| ALLEN  | SALES      |
| WARD   | SALES      |
| JONES  | RESEARCH   |
| MARTIN | SALES      |
| BLAKE  | SALES      |
| CLARK  | ACCOUNTING |
| SCOTT  | RESEARCH   |
| KING   | ACCOUNTING |
| TURNER | SALES      |
| ADAMS  | RESEARCH   |
| JAMES  | SALES      |
| FORD   | RESEARCH   |
| MILLER | ACCOUNTING |
+--------+------------+

修改视图对基表产生影响:

sql 复制代码
mysql> select ename,dname from emp,dept where emp.deptno=dept.deptno;
+--------+------------+
| ename  | dname      |
+--------+------------+
| smith  | RESEARCH   |
| ALLEN  | SALES      |
| WARD   | SALES      |
| JONES  | RESEARCH   |
| MARTIN | SALES      |
| BLAKE  | SALES      |
| CLARK  | ACCOUNTING |
| SCOTT  | RESEARCH   |
| KING   | ACCOUNTING |
| TURNER | SALES      |
| ADAMS  | RESEARCH   |
| JAMES  | SALES      |
| FORD   | RESEARCH   |
| MILLER | ACCOUNTING |
+--------+------------+
14 rows in set (0.00 sec)

修改了基表,对视图有影响

sql 复制代码
mysql> update emp set deptno=10 where ename='JAMES'; -- 修改基表
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from v_ename_dname where ename='JAMES';
+-------+----------+
| ename | dname  |
+-------+----------+
| JAMES | RESEARCH | <== 视图中的数据也发生了变化
+-------+----------+

2.3删除视图

sql 复制代码
drop view 视图名;
sql 复制代码
mysql> drop view my_view;
Query OK, 0 rows affected (0.00 sec)

3.视图的规则和限制

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

总结

以上就是今天我们要介绍的关于视图的相关内容,希望对大家有所帮助,谢谢大家!

相关推荐
weixin_376934639 分钟前
mysql学习笔记-MySql事务日志
笔记·学习·mysql
小林熬夜学编程1 小时前
【MySQL】第一弹---MySQL 在 Centos 7环境安装
linux·开发语言·数据库·mysql·算法
好记性+烂笔头2 小时前
4 HBase 的高级 shell 管理命令
大数据·数据库·hbase
左灯右行的爱情2 小时前
深度整理总结MySQL——Order By的工作原理
android·数据库·mysql
V+zmm101343 小时前
高校校园交友微信小程序springboot+论文源码调试讲解
java·数据库·微信小程序·小程序·毕业设计
林涧泣3 小时前
【Uniapp-Vue3】从uniCloud中获取数据
数据库·uni-app
ChinaRainbowSea4 小时前
十. Redis 事务和 “锁机制”——> 并发秒杀处理的详细说明
android·java·数据库·redis·后端·bootstrap·nosql
茂桑4 小时前
Redis缓存穿透、击穿、雪崩介绍以及解决方案
数据库·redis·缓存
醒了就刷牙4 小时前
整理:熟悉MySQL的使用和运行原理,掌握索引、事务、锁等机制。了解存储引擎、读写分离、分库分表。
android·数据库·mysql
lusklusklusk4 小时前
Sqlserver DBCC Check 遇到Msg 3853报错涉及sys.columns和sys.objects信息不匹配的解决方法
数据库·sqlserver