您的位置:首页 > 数据库 > MySQL

MySQL视图创建view

2019-08-18 17:17 996 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Sudley/article/details/99705493

view是一张虚拟表,是表通过某种运算得到的一个投影。
如何创建视图:
查询结果命名为视图就行
create view 视图名
as
select 语句

mysql> select * from result;
+--------+--------+-------+
| name   | subect | score |
+--------+--------+-------+
| 张三   | 数学   |   120 |
| 张三   | 语文   |    12 |
| 张三   | 地理   |    20 |
| 李四   | 数学   |    44 |
| 李四   | 语文   |    33 |
| 王五   | 数学   |     5 |
+--------+--------+-------+
6 rows in set (0.06 sec)

mysql> select name,avg(score) from result group by name;
+--------+------------+
| name   | avg(score) |
+--------+------------+
| 张三   |    50.6667 |
| 李四   |    38.5000 |
| 王五   |     5.0000 |
+--------+------------+
3 rows in set (0.02 sec)

mysql> create view  avg_score as
-> select name,avg(score) from result group by name;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from avg_score;
+--------+------------+
| name   | avg(score) |
+--------+------------+
| 张三   |    50.6667 |
| 李四   |    38.5000 |
| 王五   |     5.0000 |
+--------+------------+
3 rows in set (0.00 sec)

视图作用:
1、简化查询
2、更精细的权限控制
3、数据多分表时可以用到

视图是表的映射表,当表的数据更新时视图的数据也会更新;
上述实例中的视图的数据不能直接修改。改视图数据后原表数据没法找到唯一的对应关系。
当视图数据和原表数据一一对应时可以修改,此时改视图和该原表数据效果是一样的。

删除视图:
drop view view_name;

algorithm:
merge 合并查询语句,用于简单查询
temptable 临时表,比较复杂的查询
undefined 未定义,由系统判断

create algorithm=merge view 视图名
as
select 语句

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: