需求(在什么情况下使用视图):
1.保护表中其它数据不被insert、delete、update(只能对特定的数据进行操作)
2.限制用户对表数据的访问范围(用户只能修改一部分数据)
一、视图的基本功能
CREATE
[OR REPLACE]------------------------------------------------------如果视图存在则替换它
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
1、视图是一个逻辑表,它本身并不包含数据。通过它,可以展现基表的部分数据。用来创建视图的表叫做基表BASE TABLE。视图是作为一个SELECT语句保存在数据字典中的(可以理解为视图是 select的一个别名),视图一旦创建完毕,就可以像一个普通表一样使用。视图主要用来查询
create view v_con as select a.PLAYERNO,NAME,b.TEAMNO,DIVISION,MATCHNO,WON,LOST from PLAYERS a,TEAMS b,MATCHES c where a.PLAYERNO=b.PLAYERNO and b.TEAMNO=c.TEAMNO;
Query OK, 0 rows affected (0.00 sec)
2、显式的指定视图的列名
注意:该语法要求视图后面的列的数量必须匹配select子句中的列的数量
mysql> create view v_con_1(球员编号,姓名,队号,分隔,比赛编号,赢次数,输次数) as select a.PLAYERNO,NAME,b.TEAMNO,DIVISION,MATCHNO,WON,LOST from PLAYERS a,TEAMS b,MATCHES c where a.PLAYERNO=b.PLAYERNO and b.TEAMNO=c.TEAMNO;
Query OK, 0 rows affected (0.01 sec)
3、嵌套视图:视图可以定义在另外一个视图上面
使用WITH CHECK OPTION约束时,可以使用CASCADED或者 LOCAL选项指定检查的程度:
WITH CASCADED CHECK OPTION:检查所有的视图(例如,嵌套视图及其底层的视图)
WITH LOCAL CHECK OPTION:只检查将要更新的视图本身(对嵌套视图不检查其底层的视图)
不指定选项则默认是CASCADED
4、查找视图信息:信息记录在information_schema数据库中的views表中(以下是views表的一部分数据)
查新下TENNIS数据库包含的视图的名称:
SELECT