九、视图

View Overview(含义,应用场景)

  1. 含义:虚拟表,和普通表一样使用。mysql5.1版本出现的新特性,是通过表动态生成的数据。只保存了sql逻辑,不保存查询结果。比如:舞蹈班级和普通班级的对比。
  2. 应用场景:多个地方用到同样的查询结果;该查询结果使用的sql语句较复杂
  3. 栗子
    # 查询姓zhang的学生名和专业名
    
    SELECT stuname, majorname
    FROM stuinfo s
    INNER JOIN major m ON s.`majorid`=m.`id`
    WHERE s.`stuname` LIKE 'zhang%';
    
    # 比如以上语句的join部分我经常使用,我就封装成view
    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 'zhang%';
    
  4. 视图的好处
    1. 提高了sql重用性
    2. 简化复杂的sql操作,不必知道它的查询细节
    3. 保护数据,提高安全性

1. 创建视图View

  1. 语法:CREATE VIEW 视图名 AS 查询语句;
  2. 栗子:看Overview部分

2. 修改视图

  1. 方式一:CREATE OR REPLACE VIEW 视图名 AS 查询语句;
  2. 方式二:ALTER VIEW 视图名 AS 查询语句

3. 删除View

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

4. 查看视图

  1. 查看field之类,DESC myv3;
  2. 查看完整语句,在sql客户端:SHOW CREATE VIEW myv3;
  3. 在命令行查看:SHOW CREATE VIEW myv3[\G]; \G格式

5. 视图的更新

视图一般用于查询,而不是用于更新!
一般不更新视图里面的语句。

1. 插入

  1. 会对原始表生成更新,不止view更新!
INSERT INTO myv1 VALUES('zhangfei', 1000);

2. 更改

UPDATE myv1 SET xx=yy;

3. delete

DELETE FROM myv1 WHERE last_name = 'zhangfei';

4. 不允许更新的view

不允许更新的view
常量视图:CREATE OR REPLACE VIEW myv2 AS SELECT 'john' NAME;
where子句的子查询引用了from子句中的表:employees表在FROM和子查询也有在这里插入图片描述

6. 视图和表的对比

视图和表的对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值