视图
创建视图
格式:
CREATE [OR REPLACE][ALGORITHM ={UNDEFINED | MERGE | TEMPTABLE}][DEFINER={user|CURRENT_USER}] [SQL SECURITY {DEFINER | INVOKER}]VIEW 视图名 [(列表)]AS select_statement[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 选项,保证数据安全
create view 视图名 as select 字段名 from 表名;
Mysql视图的定义在from关键字后面不能包含子查询
修改视图->对基表数据有影响
修改基表->对视图数据也有影响
创建包含计算机专业的学生 学号 课程号 成绩 的视图
create or replace view cs_kcasselect xs.学号,课程号,成绩from xsqk xs,xscj cjwhere xs.学号=cj.学号 and xs.专业='计算机应用与维护'with check option ; #表示更新视图信息时要符合 where语句
select * from cs_kc;+----------+-----------+--------+| 学号 | 课程号 | 成绩 |+----------+-----------+--------+| 02020101 | 101 | 85 || 02020101 | 102 | 70 || 02020102 | 101 | 90 || 02020102 | 102 | 80 |+----------+-----------+--------+4 rows in set (0.00 sec)
修改视图
ALTER
alter view 视图名 as select 语句;alter view 视图名 as select 视图;
常用语句
显示视图创建情况
show create view 视图名;
查看视图
show tables;
删除视图
drop view 视图名[,视图名...];
重命名视图
Rename table 视图名 to 新视图名;
使用视图的好处
1.安全
视图能够只保留一部分字段,这样,用户就可以查询自己需要的字段,不能查看保密的字段
2.性能
数据库查询经常会用到链接(JOIN),这样做麻烦且效率低,建立视图可以将相关的表和字段组合在一起,就可以避免使用JOIN查询数据
3.灵活
视图可以将数据直接映射到新建的表中,可以少做对表的改动
