摘要:

这是一篇关于MySQL的文章,主要介绍MySQL视图

MySQL视图

##1. 基本概念

视图里存储的内容和原始表一样,但是里面存储的是SQL查询语句的定义,存储的是SQL的定义

视图的优点

  1. 安全:可以隐藏一些数据
  2. 一些复杂的数据可以便于理解与使用

##2. 创建视图

1
2
3
4
5
6
CREATE [ALGORITHM = {UNDEFINED|MERGE|TEMPTABLE}]
  view 视图名[(字段1,字段2)]
  as select 语句
  [with [CASCADED|LOCAL|] CHECK OPTION]

  --CHECK OPTION约束虚表的操作
1
2
create view 视图名
  as select 语句

建议用一个单独的数据库来存放视图

##3. 查看视图

查看某个数据库中的视图或者表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
show table status from 数据库名字\G

*************************** 1. row ***************************
           Name: view_user
         Engine: NULL
        Version: NULL
     Row_format: NULL
           Rows: NULL
 Avg_row_length: NULL
    Data_length: NULL
Max_data_length: NULL
   Index_length: NULL
      Data_free: NULL
 Auto_increment: NULL
    Create_time: NULL
    Update_time: NULL
     Check_time: NULL
      Collation: NULL
       Checksum: NULL
 Create_options: NULL
        Comment: VIEW  --这里表示是视图
1 row in set (0.01 sec)

查看某一个具体视图

1
show table status from view like 'view_user'\G

查看某个视图的具体信息

1
show create view view_user\G

##4. 修改视图

###4.1 替换原有视图

1
2
mysql> create or replace view view_user as select
    -> Host, User, Password from mysql.user;

###4.2 利用alter修改视图

1
alter view view_user as select Host, User from mysql.user;

##5. 删除视图

1
DROP VIEW view_name;

##6. 通过视图操作基表

SELECT, INSERT, UPDATE都可以

INSERT只能应用于存在于一个表上的视图(多表连接的视图不行),而且如果省略的值没有默认值也回有警告。