08-MySQL视图

本文介绍了MySQL视图的基本概念,强调其简化查询、增强安全性及逻辑数据独立性的作用。内容涵盖视图的创建、查看、修改和删除,以及与表的区别和联系,帮助读者深入理解视图的使用。
摘要由CSDN通过智能技术生成

08-MySQL视图



1 视图基本概念

​ 视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,视图还可以从已经存在的视图的基础上定义。视图的行为与表非常相似,单视图是一个虚拟表。在视图中用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE、DELETE修改记录。

​ 视图一经定义遍存储在数据库中,通过视图看到的数据就是存放在基本表中的数据。对视图操作和对表操作一样。

2 视图作用

2.1 简单化

​ 简化用户对数据的理解,简化用户对数据的操作。

2.2 安全性

​ 通过视图用户只能查询和修改他们所能看到的数据。数据库中的其他数据则看不到、无法修改。

2.3 逻辑数据独立性

​ 视图帮助用户评比真实表结构变化带来的影响

3 创建视图

create [ or replace] [algorithm = { undefined | merge | temptable}]
view view_name [(column_list)]
as select_statement
[with [cascaded | local] check option ]
参数 备注
create 创建新的视图
replace 替换已经创建的视图
algorithm 视图选择算法
view_name 视图的名称
column_list 属性列
select_statement select语句
with[ cascaded | local] check option 参数表示视图在更新时保证在视图的权限范围之内

algorithm:

algorithm取值 备注
undefined 未定义
merge 表示将使用的视图语句与视图定义合并起来,是的视图定义的某一部分取代语句对应的部分
temptable 表示将视图的结果存入临时表,然后用临时表来执行语句

​ cascaded与local为可选参数,cascaded为默认值,表示更新视图时要满足所有相关视图和表的条件;local表示更新视图时满足该视图本身定义的条件即可。

​ 创建视图需要的权限:

  1. 具有针对视图的create view 权限
  2. 对于select语句中其他地方使用的列,必须具有select权限。如果还有 or replace子句,必须在视图上具有drop权限。

3.1 在单表上创建视图

测试表结构与数据创建

-- 创建测试表结构
mysql> create table t (quantity int, price int);
Query OK, 0 rows affected (0.03 sec)

-- 插入测试数据
mysql> insert into t values(3, 50);
Query OK, 1 row affected (0.02 sec)

-- 查看测试数据
mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
|        3 |    50 |
+----------+-------+
1 row in set (0.00 sec)

创建一个视图,共有三个字段,quantity,price , quantity* price

-- 创建一个视图view_t
mysql> create view view_t as select quantity,price,quantity * price from t;
Query OK, 0 rows affected (0.00 sec)

-- 查询视图
mysql> select * from view_t;
+----------+-------+------------------+
| quantity | price | quantity * price |
+----------+-------+------------------+
|        3 |    50 |              150 |
+----------+-------+------------------+
1 row in set (0.00 sec)

​ 默认情况下视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图:

-- 新建视图
mysql> create view view_2 (qty, price, total) as select quantity, price, quantit
y*price from t;
Query OK, 0 rows affected (0.00 sec)

-- 查看视图
mysql> select * from view_2;
+------+-------+-------+
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值