MYSQL中视图的用法介绍(代码示例)


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于MYSQL中视图的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、什么是视图

执行一条SQL,将结果集保存在一张虚拟表中

(相关推荐:MySQL教程)

2、为什么要使用视图

  1. 重复利用SQL语句

  2. 简化SQL查询,快速取数据

  3. 只用知道表的部分结构

  4. 保护数据,根据特定授权

  5. 更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。

注意事项
? 在视图创建后,可以用与表基本相同的方式使用(查询、过滤、排序数据、与其他视图或连结、(添加、更新))
? 视图只是用来查看存储在别处的数据的设施,本身不包含数据,返回的数据也是从其他表检索出来的。
? 因为视图本身不包含数据,索引多个表连结或嵌套可能存在性能问题,需测试

3、规则和限制

  1. 表名必须唯一(与其他视图和表)

  2. 创建视图没有限制

  3. 足够权限

  4. 视图可以嵌套,可以从其他视图查询来构造一个视图

  5. 如果视图和从视图中查询都有order by,视图中的order by将被覆盖

  6. 视图不能索引

  7. 视图可以和表一起使用

4、使用视图

  1. 创建视图 create view

  2. 查看创建视图的语句。Show create view viewname

  3. 删除视图 drop view viewname

  4. 更新视图,1?? 先drop后create 2?? 直接用create or replace view

  5. 利用视图简化复杂的联结查询

5、利用视图简化复杂的联结查询

创建视图

1

2

3

4

5

CREATE VIEW productcustomers AS

SELECT cust_name, cust_contact, prod_id

FROM customers, orders, orderitems

WHERE customers.cust_id = orders.cust_id

AND   orderitems.order_num = orders.order_num

使用视图

1

2

3

SELECT cust_name, cust_contact

FROM productcustomers

WHERE prod_id = 'TNT2';

6、用视图重新格式化检索出的数据

1

select concat (rtrim(vend_name) , '(',rtrim(vend_country),')') as vend_title   from vendors order by vend_name;

如果经常用到这个格式的话,可以创建一个视图

1

2

3

4

5

6

7

CREATE VIEW vendorlocations AS

SELECT

    concat ( rtrim( vend_name ), '(', rtrim( vend_country ), ')' ) AS vend_title

FROM

    vendors

ORDER BY

    vend_name;

可以直接通过视图查询得出结果

1

SELECT * FROM vendorlocations;

7、用视图过滤不想要的数据

1

2

3

4

create view custmeremaillist AS

SELECT cust_id ,cust_name,cust_email

from customers

where cust_email is not NULL;

直接使用视图

1

SELECT * from custmeremaillist ;

8、使用视图与计算字段

mysql查询

1

2

3

4

5

6

7

8

SELECT

    prod_id,

    quantity,

    item_price,

    quantity * item_price AS expanded_price

FROM

    orderitems

WHERE order_num=20005;

创建视图

1

2

3

4

5

6

7

8

9

10

CREATE VIEW orderitemsexpanded AS

SELECT

    order_num,

    prod_id,

    quantity,

    item_price,

    quantity * item_price AS expanded_price

FROM

    orderitems

WHERE order_num=20005;

使用视图

1

2

3

4

5

SELECT

    *

FROM

    orderitemsexpanded

WHERE order_num=20005;

9、更新视图

通常,视图是可以更新的(insert、update、delete)。更新视图将更新基表。如果视图中有以下定义将不能被更新。

1

2

3

4

5

6

7

1. 分组(group by 和 having)

2. 联结

3. 自查询

4. 并

5. 聚合函数(min()、count()、sum()等)

6. Distinct

7. 导出(计算)列

所以视图最好直接使用select查询。

以上就是MYSQL中视图的用法介绍(代码示例)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql 8.0.20 安装配置详细教程

mysql如何改变主键属性

mysql触发器在php项目中用来做信息备份、恢复和清空

mysql并列排名和顺序排名查询

mysql分组后,如何统计记录条数

计算机二级mysql考什么内容?

mysql"军规"

db2和mysql语法的区别是什么

如何修改mysql的用户名和密码

mysql数据库添加新用户详解

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...