8.视图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39588027/article/details/80587373
1.视图的引入
1.视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。
2.数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在
    原来的表中。
3.使用视图查询数据时,数据库系统会从原来的表中取出相应的数据。
2.视图的作用
1.使操作简便化;
2.增加数据的安全性;
3.提高表的逻辑独立性;
3.创建视图
 CREATE 【ALGORITHM ={UNDEFIEND| MERGE |TEMPTABLE }】
         VIEW 视图名 【(属性清单)】
         AS SELECT 语句
         【WITHCASCADED | LOCALCHECK OPTION】;

ALGORITHM 是可选参数,表示视图选择算法;
ALGORITHM 包括3个选项UNDEFINED、MERGE和TEMPTABLE。
其中,UNDEFINED选项表示Mysql自动选择使用的算法;
MERGE选项表示将使用视图的语句与视图定义合并起来,使得视图定义的
某一部分取代语句的对应部分;
TEMPTABLE选项表示将视图的结果存入临时表,然后使用临时表执行语句;

“视图名”参数表示要创建的视图的名称;

“属性清单”是可选参数,其指定了视图中各种属性的名词,默认情况下与SELECT
语句中查询的属性相同;

SELECT 语句参数是一个完整的查询语句,标识从某个表查出某些满足条件的
记录,将这些记录导入视图中;

WITH CHECK OPTION 是可选参数,表似乎更新视图时要保证在该视图的
权限范围内;

CASCADED是可选参数,表示更新视图时要满足所有相关视图和表的条件,
该参数为默认值;
LOCAL表示更新视图时,要满足该视图本身的定义条件即可;



3.1在单表上创建视图
例子:
create view v1 as select * from stationery;

create view v2 as select name, account from stationery;

create view v3 (Name, Account) as select name, account
                                         from stationery;
3.2在多表上创建视图
例子:
create view v4 as select user2.id, user2.userName from user2, 
                            user3 where user2.id =user3.id;

create view v7 as select user2.id, user2.userName, 
user3.userName user3Name from user2, user3 where user2.id
                                             > user3.id;

4.查看视图
4.1 DESCRIBE 语句查看视图基本信息
desc v1;

4.2 SHOW TABLE STATUS 语句查看视图基本信息
show table status like 'v1';

4.3 SHOW CREATE VIEW 语句查看视图详细信息
show create view v1;

4.4 在views表中查看视图详细信息

5.修改视图
5.1 create or replace view 语句修改视图
 CREATE OR REPLACE 【ALGORITHM ={UNDEFIEND| MERGE |TEMPTABLE }】
         VIEW 视图名 【(属性清单)】
         AS SELECT 语句
         【WITHCASCADED | LOCALCHECK OPTION】;
例子:      
create or replace view v1 (Name, Account) as select 
                        name, account from stationery;      

5.2 alter 语句修改视图
 ALTER 【ALGORITHM ={UNDEFIEND| MERGE |TEMPTABLE }】
         VIEW 视图名 【(属性清单)】
         AS SELECT 语句
         【WITHCASCADED | LOCALCHECK OPTION】;

例子:
alter view v1 as select * from stationery;
6.更新视图
更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)
表中的数据。因为视图是一个虚拟的表,其中没有数据。通过视图更新时,都是
转换基本表来更新。更新视图时,只能更新权限范围内的数据。超出了范围,
就不能更新。

6.1 插入(INSERTinsert into v1 values('aaaaooooo', 100, 200);

6.2更新(UPDATEupdate v1 set name='徐子峰是个好人哈哈哈' where account = 100;

6.3删除(DELETEdelete from v1 where name = '徐子峰是个好人哈哈哈';
7.删除视图
删除视图是指删除数据库中已经存在的视图。删除视图时,只删除视图的定义,
不会删除数据;

drop viewif exists】 视图名列表【RESTRICT | CASCADEdrop view  if exists v6;

猜你喜欢

转载自blog.csdn.net/qq_39588027/article/details/80587373