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

总结

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

相关推荐
lambo mercy2 小时前
AI智能租房助手
数据库
浮生若城3 小时前
MySQL:库与表的操作
数据库·mysql
薛定谔的悦3 小时前
光储充一体机从主控到执行单元的双层架构
数据库·mongodb·架构
数字新视界3 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
csdn_aspnet4 小时前
Redis 入门:Windows、Mac安装指南
数据库·windows·redis·缓存·mac
山甫aa4 小时前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web
Nturmoils16 小时前
集中式与分布式怎么选:从订单读写看 KingbaseES 的架构边界
数据库
xiaomuzuirenzhen16 小时前
大专电子商务从事电商运营分析师需要考证吗?
大数据·数据库
翔云12345618 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
DevOpenClub18 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考