(十)MySQL基础——视图

一、视图的介绍

含义:虚拟表,和普通表一样使用。行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。(mysql5.1版本出现的新特性,是通过表动态生成的数据)

应用场景:多个地方用到同样的查询结果  或者  该查询结果使用的sql语句比较复杂。

类比生活中实际的例子来说,视图和普通表的区别就像临时组件的表演班和正常上课的班级之间的区别。

-- 案例:查询姓张的学生名和专业名(传统写法)
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.majorid=m.id
WHERE s.stuname LIKE '张%';


-- 添加视图
CREATE VIEW v1
AS 
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.majorid=m.id;

SELECT * FROM v1 WHERE stuname LIKE '张%';

二、视图的创建、修改、删除和查看

创建语法:CREATE   VIEW   视图名   AS   查询语句;

修改语法:

方式一: CREATE   OR   REPLACE   VIEW   视图名   AS   新的查询语句;

方式二: ALTER   VIEW   视图名   AS   新的查询语句;(类似于表修改)

删除语法: DROP   VIEW   视图名1,视图名2,...... ;

查看语法: DESC   视图名;

三、视图的好处

(1)重用sql语句

(2)简化复杂的sql操作,不必知道它的查询细节

(3)保护数据,提高安全性

四、视图的更新

CREATE OR REPLACE VIEW myv1    
AS
SELECT last_name,email
FROM employees;

SELECT * FROM myv1;

(1)插入

INSERT INTO myv1 VALUES ('张飞','zf@qq.com');

(2)修改

UPDATE myv1 SET last_name='张无忌' WHERE last_name='张飞';

(3)删除

DELETE FROM myv1 WHERE last_name='张无忌';

五、视图的权限

视图的可更新和视图中查询的定义有关系,具备以下特点的视图不允许更新:

(1)包含以下关键字的sql语句:分组函数、DISTINCT、GROUP   BY、HAVING、UNION或者UNION  ALL

(2)常量视图

(3)SELECT中包含子查询

(4)JOIN

(5)FROM一个不能更新的视图

(6)WHERE子句的子查询引用了FROM子句中的表

六、视图和表对比

 创建语法的关键字是否实际占用物理空间使用
视图CREATE   VIEW 只保存了sql逻辑增删改查,只是一般不能增删改
CREATE  TABLE保存了数据增删改查

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值