Mysql 数据库视图
什么是视图?
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。
通过视图,可以展现基表(用来创建视图的表)的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成,基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。
视图的作用:
1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。
视图的简单使用:
1、创建表并添加数据:
--创建表1: mysql> create table tab_01(id int(11) not null auto_increment,Code varchar(10) null,name char(16) not null,primary key(id)); Query OK, 0 rows affected (0.06 sec) --添加数据-- mysql> insert into tab_01(Code,Name) values('001','张三'); mysql> insert into tab_01(Code,Name) values('002','李四'); mysql> select * from tab_01; +----+------+--------+ | id | Code | name | +----+------+--------+ | 1 | 001 | 张三 | | 2 | 002 | 李四 | +----+------+--------+ 2 rows in set (0.00 sec) mysql> --创建表2; mysql> create table tab_02(id int(11) not null auto_increment,Code varchar(10) null,name char(16) not null,primary key(id)); Query OK, 0 rows affected (0.08 sec) --添加数据-- mysql> insert into tab_02(Code,Name) values('001','王五'); mysql> insert into tab_02(Code,Name) values('002','赵六'); --查询数据-- mysql> select * from tab_02; +----+------+--------+ | id | Code | name | +----+------+--------+ | 1 | 001 | 王五 | | 2 | 002 | 赵六 | +----+------+--------+ 2 rows in set (0.00 sec)
2、创建视图
create view v_eds AS SELECT Code, Name FROM tab_01;
3、查询视图:
mysql> select * from v_eds; +------+--------+ | Code | Name | +------+--------+ | 001 | 张三 | | 002 | 李四 | +------+--------+ 2 rows in set (0.00 sec)
对于视图的查询也可以加上过滤条件:
mysql> SELECT * FROM v_eds WHERE Code = 001; +------+--------+ | Code | Name | +------+--------+ | 001 | 张三 | +------+--------+ 1 row in set (0.01 sec)
查看当前库下所有的视图;
mysql> show full tables where table_type like 'VIEW'; +-------------------+------------+ | Tables_in_db_name | Table_type | +-------------------+------------+ | View_Eds | VIEW | | v_eds | VIEW | +-------------------+------------+ 2 rows in set (0.00 sec)
修改视图:
mysql> alter view v_eds as SELECT Code, Name FROM tab_01 where Code=001; Query OK, 0 rows affected (0.00 sec) mysql> select * from v_eds; +------+--------+ | Code | Name | +------+--------+ | 001 | 张三 | +------+--------+ 1 row in set (0.00 sec)
删除视图:
mysql> drop view v_Eds;
总结:
使用视图,需要把它看着为一张表,建立步骤和建立一张实体表步骤相同,
视图查出来的数据只能进行查看,不能增删改。
隐藏了复杂的sql语句,只显示最简单的查询操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2020-04-07 CentOS7 FastDFS安装教程