MySQL-视图

一、介绍

MySQL 视图(View)可以理解为是一种虚拟存在的表,表面上看起来和真实表一样。视图是数据库对象之一。

数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中,本质是来自于一个 select子句。

使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。

为什么需要视图?
答:
1.假设一张表中有些字段不希望某些用户看见,那么就可以使用视图进行筛选,仅展示可查看的字段,进而保护了表结构。
2.可以使用视图返回多张表的关联查询结构,对于使用者而言他并不知道这些数据来自多张表,进而简化查询操作。

二、创建视图

2.1 基础操作

创建语法:

create [or replace] view 视图名 as select .... ;

1.准备测试数据

DROP TABLE IF EXISTS emp;
CREATE TABLE emp (
  id int(11) PRIMARY KEY AUTO_INCREMENT,
  age int(11) DEFAULT NULL,
  name varchar(50) DEFAULT NULL
)DEFAULT CHARSET=utf8;

INSERT INTO `emp` VALUES (1, 18, '张三');
INSERT INTO `emp` VALUES (2, 20, '李四');
INSERT INTO `emp` VALUES (3, 25, '王五');
INSERT INTO `emp` VALUES (4, 22, '赵六');

2.创建一个简单视图

create view v_emp1 as select * from emp;

3.创建一个有别名的视图

create view v_emp2 as select age+10 as my_age from emp;

2.2 视图注意事项

视图本身不存储数据,操作视图就相当于操作视图对应的基表中的数据。

查询:select * from v_emp1;
删除:delete from v_emp1 where id=1;            -- 视图和原表数据都会被删除
修改:update v_emp1 set name='wwb' where id=2;   -- 视图和原表数据都会被修改
增加:insert into v_emp1 values (5, 11, '666'); -- 视图和原表数据都会增加(一般视图是不建议插入的,会造成原表数据污染)

可以为视图加限定条件,从而约束使用者行为:with check option

create view v_emp3 as select * from emp where age<200 with check option;

测试:

测试插入:
mysql> insert into v_emp3(age) values(300);
ERROR 1369 (HY000): CHECK OPTION failed 'v_test.v_emp3'  -- 失败

mysql> insert into v_emp3(age) values(100);   -- 成功
Query OK, 1 row affected (0.08 sec)

三、查看视图

DESC 视图名;               -- 查看视图的字段信息

SHOW CREATE VIEW 视图名;   -- 查看视图的创建信息

四、删除视图

DROP VIEW <视图名1> [ , <视图名2>]

五、修改视图

ALTER VIEW <视图名> AS <SELECT语句>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值