MySQL学习之视图

一、视图的理解

1、视图是一张虚拟表,它依赖数据库中的表存在,并且在引用视图动态生成,是从一个或多个表导出来的表,视图行为和表相似。

2、当对通过视图看到的数据进行修改时,相应的基本表的数据也会发生变化,若基本表发生变化视图也会发生变化。

3、创建视图的信息来自表的部分信息,能够查询表中的信息也无需破坏原来表的结构。

4、作用:

简单化(视图可以简化用户对数据的影响,简化他们的操作)

安全性(通过视图用户可以被限制在数据的不同子集上,权限

逻辑独立性(视图可以屏蔽表结构变化带来的影响)

 

一、创建视图(建立在一张/多张表上)

Create [or replace] [algorithm=[undefined|merge|temptable]

View view_name [column_list]

As select_statement

[with [cascaded|local] check option]

 

解释:algorithm是视图选择的算法:undefined表示mysql自动选择算法,merge表示将使用的视图语句与视图定义合并起来,temptable表示将视图结果存入临时表,然后用临时表来执行语句。

Cascaded|local为可选参数,cascaded为默认值,表示更新视图要满足所有相关视图和表的条件,local表示更新视图只需满足视图本身定义的条件即可。

Create/replace view都需要满足相应的权限才行。

 

1、在单表上创建视图

Create table t(quantity int,price int);

Insert into t values(3,50);

Create view view_t as select  quantity,price,quantity*price from t;

Create view view_t2(qyt,price,total) as select  quantity,price,quantity*price from t;

2、在多表上创建视图

 

二、查看视图

1、使用describe语句查看视图基本信息

Describe viewname;

2、使用show table status查看视图基本信息

Show table status like’viewname’;

3、使用show crate view语句查看视图详细信息

Show create view viename;

4、views查看详细信息

MySQL中,information_schema数据库表下的views表中存储了所有视图的定义,对views表的查询,可以查看数据库中所有视图的详细信息

Select * from information_schema.views;

 

三、修改视图

修改视图是修改数据库表中存在的视图,当基本表的某些字段发生变化时,可以通过修改视图来保持与基本表的一致性。

1、使用create or replace view语句修改视图

Create [or replace] [algorithm=[undefined|merge|temptable]

View view_name [column_list]

As select_statement

[with [cascaded|local] check option]

 

实例:create or replace view view_t as select * from t;

2、使用alter语句修改视图

Alter [algorithm=[undefined|merge|temptable]

View view_name [column_list]

As select_statement

[with [cascaded|local] check option]

实例:alter view view_t as select quantity from t;

 

四、更新视图

更新视图是通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。通过视图更新的时候都是通过表进行更新的。有三种视图更新方法:insert/update/delete

实例:

Update view_t set quantity=5;

Insert into t values(3,5);

Delete from view_t where price=5;

 

视图中包含如下内容是,更新操作不能执行:

1)视图中不包含基表中被定义非空的列

2)在定义视图的select语句后的字段列表中使用了数学表达式/聚合函数

3)在定义视图的select语句中使用了distince,union,top,groupby/having

 

五、删除视图

Drop view [if exists]

View_name[,view_name]……

[restrict|cascade]

实例:drop view if exists view_t;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值