Mysql之数据库视图
发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,Mysql之数据库视图数据库中的视图是一个虚拟表。同真实表一样,包含行和列数据,行和列的数据来自 定义视图查询所引用的表,并且在引用视图时动态生成。可以隔离用户与数据保持安全,且快速查询数据。Mysq
千家信息网最后更新 2025年02月09日Mysql之数据库视图
Mysql之数据库视图
数据库中的视图是一个虚拟表。同真实表一样,包含行和列数据,行和列的数据来自 定义视图查询所引用的表,并且在引用视图时动态生成。可以隔离用户与数据保持安全,且快速查询数据。
Mysql5.0后版本支持视图,可以使用select、insert into、update、delete等。无论修改基本表还是视图都对应发生变化。
视图的作用:
比直接从数据表中读取相比:
1、简化了:看到的就是需要的。
2、安全性:通过视图用户只能查询和修改他们所能看到的数据。其他数据看不到也取不到。
3、逻辑数据独立性:视图可以帮助用户屏蔽真实表结构变化带来的影响。
创建视图:
视图包含了select查询的结果,因此视图的创建基于select语句和已存在的数据表,视图可以建立在一张表上,也可以建立在多张表上。
语法:
create [or replace] [algorithm = {undefined | merge | temptable }]view view_name [(column_list)]as select_statment[with [cascaded | local] check option]create # 创建视图replace # 替换视图algorithm # 视图算法:undefined系统自己选择算法;merge表示视图语句与视图定义合并,使视图定义部分替代语句对应部分;temptable表示将视图结果存入临时表,用临时表来执行语句。view_name # 视图名称column_list # 属性列select_statment # select语句[with [cascaded | local] check option] # 表示权限范围之内:cascaded表示满足所有条件。local表示更新时满足视图本身条件即可。
单表创建视图:
mysql> create database view;mysql> use view;mysql> create table t (quantity INT,price INT);mysql> insert into t values(3,50);mysql> create view view_t as select quantity,price,quantity * price from t;mysql> select * from view_t;
# 默认情况下创建的视图和基本表的字段一样,也可以通过指定视图字段的名称来创建视图。
mysql> create view view_t2(qty,price,total) as select quantity,price,quantity * price from t;mysql> select * from view_t2;
# view_t和view_t2两个视图中的字段名称不同,但是数据却是相同的。因此在使用视图的时候,可能用户根本就不需要了解表的机构,更接触不到实际表中的数据,从而保证了数据库的安全。
在多表上创建视图:
mysql> create database stud;mysql> use stud;mysql> create table student (id int,name char(20));mysql> create table stu_info (id int,name char(20),addr char(20));mysql> show tables;mysql> insert into student values(1,'zhouyi'),(2,'zhaoer'),(3,'zhangsan');mysql> insert into student values(1,'zhouyi','beijing'),(2,'zhaoer','shanghai'),(3,'zhangsan','chengdu');mysql> select * from stu_info;mysql> select * from student;mysql> create view stu_glass(id,name,glass) as select student.id,student.name,stu_info.addr from student,stu_info where student.id=stu_info.id;mysql> select * from stu_glass;
# 可以看出视图id是student.id
# name是student.name
# glass是stu_info.addr
查看视图:
mysql> show table status like 'stu_glass'\G; # 全是NULL,Comment: VIEW表示虚表mysql> desc stu_glass; # 查看视图基本信息mysql> show create view stu_glass\G; # 查看视图创建信息mysql> select * from information_schema.views\G; # 查看详细信息
修改视图:
mysql> use view;mysql> desc view_t;mysql> alter view view_t as select quantity from t;或者:mysql> create or replace view view_t as select * from t;mysql> desc view_t;
更新视图:
mysql> alter view view_t as select quantity from t; # 修改视图和元数据不同mysql> select * from view_t;mysql> select * from t;mysql> update view_t set quantity=5;mysql> select * from view_t;mysql> select * from view_t2;mysql> select * from t;# 全部更新
插入数据:
mysql> insert into t values (3,5); # 插入数据mysql> select * from view_t;mysql> select * from view_t2;mysql> select * from t; # 全部插入mysql> delete from view_t2 where price=5; # 删除view_t2视图中price=5的数据;mysql> select * from view_t2;mysql> select * from t;# 在view_t2中删除price=5的操作最终是通过基本表中的相关记录实现的。注意:当视图中包含有如下内容时,视图的更新操作将不被执行:1、视图中不包含基本表中被定义为非空的列;2、在定义视图的select语句后的字段列表中使用数学表达式;3、在定义视图的select语句后的字段列表中使用了聚合函数;4、在定义视图的select语句中使用了distinct、union、top、group、having子句。
删除视图:
mysql> drop view if exists view_t2;mysql> show create view view_t2; ERROR 1146 (42S02): Table 'view.view_t2' doesn't exist
视图
数据
语句
字段
用户
更新
查询
数据库
安全
信息
名称
不同
数据表
条件
算法
结果
部分
变化
相同
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳的宏腾网络技术有限公司
网络安全威胁90%来自人
服务器T40用的是哪款内存条
阿里免费服务器
火山软件开发平台官网下载
网络安全密码学课程设计
服务器巡检管理制度
用户信息安全管理软件开发
关于教师节和网络安全的手抄报
好用的tftp服务器
数据库socket连接错误
辽宁省暨沈阳市网络安全宣传周
电厂网络安全检测评估
怎么自学ios软件开发
请求有线网络技术支持的函
pacs服务器软件
未来已来互联网科技有限公司
网络技术管理是干嘛的
2018 429网络安全日
小学网络安全讲座主词稿
交易所软件开发价格
泗县租房软件开发
服务器如何搭建数据库
网络安全宣传图片封面
服务器屏幕需要多少钱
数据库管理文件的模式
传奇私服服务器怎么连接
加拿大天然药物数据库
京云悦共享网络技术
戴尔服务器亮黄灯一闪一闪