视图

创建视图

格式:

  1. CREATE [OR REPLACE]
  2. [ALGORITHM ={UNDEFINED | MERGE | TEMPTABLE}]
  3. [DEFINER={user|CURRENT_USER}] [SQL SECURITY {DEFINER | INVOKER}]
  4. VIEW 视图名 [(列表)]
  5. AS select_statement
  6. [WITH[CASCADED|LOCAL]CHECK OPTION]
  • OR REPLACE 给定了OR REPLACE 字句,语句能够替换已有的同名视图
  • ALGORITHM 子句:表示视图选择算法,默认算法上UNDEFINED(未定义的):自动选择算法; merge:合并 temptable:临时表
  • 列表 :由逗号隔开的列名,其名称数目必须等于SELECT 语句索引的列数。(若使用与源表或视图中相同的列名时可以省略)
  • selet_statement (select 语句) :用来创建视图,可在select语句中查询多个表或视图
  • [WITH [CASADED | LOCAL] CHECK OPTION]:表示视图在更新时都要符合select_statement 所指定的限制条件
    cascade:默认值,表示更新视图的时候,要满足视图和表的相关条件
    local: 表示更新视图的时候,要满足该视图定义的一个条件即可

    TIPS:推荐使用WITH CHECK OPTION 选项,保证数据安全

  1. create view 视图名 as select 字段名 from 表名;

Mysql视图的定义在from关键字后面不能包含子查询

修改视图->对基表数据有影响

修改基表->对视图数据也有影响

创建包含计算机专业的学生 学号 课程号 成绩 的视图

  1. create or replace view cs_kc
  2. as
  3. select xs.学号,课程号,成绩
  4. from xsqk xs,xscj cj
  5. where xs.学号=cj.学号 and xs.专业='计算机应用与维护'
  6. with check option ; #表示更新视图信息时要符合 where语句
  1. select * from cs_kc;
  2. +----------+-----------+--------+
  3. | 学号 | 课程号 | 成绩 |
  4. +----------+-----------+--------+
  5. | 02020101 | 101 | 85 |
  6. | 02020101 | 102 | 70 |
  7. | 02020102 | 101 | 90 |
  8. | 02020102 | 102 | 80 |
  9. +----------+-----------+--------+
  10. 4 rows in set (0.00 sec)

修改视图

ALTER

  1. alter view 视图名 as select 语句;
  2. alter view 视图名 as select 视图;

常用语句

显示视图创建情况

  1. show create view 视图名;

查看视图

  1. show tables;

删除视图

  1. drop view 视图名[,视图名...];

重命名视图

  1. Rename table 视图名 to 新视图名;

使用视图的好处

1.安全

  1. 视图能够只保留一部分字段,这样,用户就可以查询自己需要的字段,不能查看保密的字段

2.性能

  1. 数据库查询经常会用到链接(JOIN),这样做麻烦且效率低,建立视图可以将相关的表和字段组合在一起,就可以避免使用JOIN查询数据

3.灵活

  1. 视图可以将数据直接映射到新建的表中,可以少做对表的改动