mysql的视图使用

来源:互联网 发布:mac os系统安装教程 编辑:程序博客网 时间:2024/06/05 09:42

一般 项目中很少用到视图 并不是因为视图不好 

一个 大部分web使用框架建站 查询语句不用原生的 或者很少 也就很少需要用视图来简化和管理了

2个 一般网站应用规模也比较小 也不会采用 视图来进行管理 而且视图对 技能要求也稍微一点

视图的几个优点 

1.简化操作 减少  sql的复杂性

2, 有一定的逻辑独立性 视图我们可以看做一个虚拟表  如果其他的操作是在视图上进行 如果 需要进行数据库的某些调整的话 我们只需要把视图改下 并不需要改使用视图的操作

3, 视图可以控制权限 有一定的安全性

4,视图可以更好的表达意思

首先查看用户权限

mysql> select select_priv,create_view_priv from mysql.user where user='root'
    -> ;
+-------------+------------------+
| select_priv | create_view_priv |
+-------------+------------------+
| Y           | Y                |
+-------------+------------------+
1 row in set (0.00 sec)

没有权限 就

mysql> grant create view on test.* to root@localhost;
Query OK, 0 rows affected (0.00 sec)

创建视图  视图名唯一 不可跟表名重复

mysql> create view test_test1(name) as select name from test_function;
Query OK, 0 rows affected (0.03 sec);

然后查看

mysql> select * from test_test1
    -> ;
+--------+
| name   |
+--------+
| 2321   |
| 213    |
| 321321 |
+--------+
3 rows in set (0.00 sec)

我们插入 源表


mysql> insert into test_function (name,function_name,moudle_id) value(1,2,2);
Query OK, 1 row affected (0.04 sec)、

然后再次查询 视图

mysql> select * from test_test1;
+--------+
| name   |
+--------+
| 2321   |
| 213    |
| 321321 |
| 1      |
+--------+
4 rows in set (0.00 sec)

就会新加一条  

视图的话 不可以与视图进行联结 可以与其他表联结 索引的话都是跟普通表查询一样的 会差生作用

mysql> select a.name,b.name from test_test1 a join test_admin b on a.name=b.name
;
+------+------+
| name | name |
+------+------+
| 2321 | 2321 |
+------+------+
1 row in set (0.00 sec)