mysql之视图

1.什么是视图

视图其实也是一种表,就是一种虚拟存在的表。在实际的数据库中并不存在。

在开发中,我经常使用视图来进行多表的查询,使用触发器来进行多表的增、删、改。使用视图直观的感受就是简化了多表查询,省得嵌套查询一层又一层的select。

2.创建视图

准备的表:

CREATE TABLE goods(  
    gid int primary key,  
    name varchar(20),  
    num smallint  
);  
CREATE TABLE orders(  
    oid int primary key,  
    gid int,  
    much smallint  
);  
insert into goods(gid,name,num) values(1,"dog",10),(2,"cat",20),(3,"pig",30); 
insert into orders values(110,3,10);
创建单表查询的视图:

create view goods_view as select * from goods where gid=1
操作:

select * from goods_view$$

结果:


创建多表关联查询的视图:

create view goods_view2 as select g.gid,g.gname,g.gnum,o.oid,o.onum from goods as g,orders as o where g.gid=o.gid$$
操作:
select * from goods_view2$$
结果:


3.mysql的视图常用命令

删除视图:

drop view 视图名称
查看视图:

show tables;
或者:

show table status like '视图名称';
更新视图:

alter view 视图名 as .....

4.注意

mysql对视图的定义还是有一些限制的。首先from关键字后面不能玩子查询了。

以下是玩alter更新视图时不可更新的操作:

包含关键字的SQL语句:聚合函数(count、max...),DISTINCT,GROUP BY,HAVING,UNION,UNION ALL。

常量视图

SELECT中包含子查询

JOIN

FROM一个不能更新的视图

WHERE的子查询用了from,前面提到过了。。

5.使用视图好处

简单方便:可以简化我们查询的条件等过滤条件的编写。

安全:使用视图的用户只能访问他们被允许查询的结果集。

数据无变化:一旦我们将视图的结构确定了,就可以屏蔽掉表结构的变化对用户的影响了。即使原表发生了变化,只需修改视图来解决。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值