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 将被覆盖
视图可以和表一起使用

总结

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

相关推荐
先做个垃圾出来………30 分钟前
SQL的底层逻辑解析
数据库·sql
码不停蹄的玄黓42 分钟前
深入拆解MySQL InnoDB可重复读(RR)隔离级别:MVCC+临键锁如何「锁」住一致性?
数据库·mysql·可重复读
paopaokaka_luck1 小时前
基于SpringBoot+Vue的酒类仓储管理系统
数据库·vue.js·spring boot·后端·小程序
用户91453633083911 小时前
MySQL查询执行顺序:一张图看懂SQL是如何工作的
mysql
Lx3521 小时前
MySQL物化视图:预计算查询结果的定期刷新
sql·mysql·性能优化
Lx3521 小时前
Mysql死锁日志分析:事务逻辑冲突的排查技巧
sql·mysql·性能优化
薛晓刚2 小时前
哪个领域数据库最难替换?
数据库
RainbowSea2 小时前
14. MySQL 锁的详细说明
java·sql·mysql
芷栀夏2 小时前
基于Anything LLM的本地知识库系统远程访问实现路径
数据库·人工智能
RainbowSea2 小时前
12 MySQL 数据库其它调优策略
java·sql·mysql