mysql 视图初解

什么是视图view?        

        视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。简单的来说视图是由其定义结果组成的表。也就是说视图是由sql语句查询出来的结果组合成的一个表。

创建视图

create view 视图名 as select(...);

例如:

create view v_demoview as  SELECT UserName,d.DepartName,r.RoleName,m.title,m.content,m.tousername,m.flag 

from userinfo u

LEFT JOIN (
SELECT DepartId,DepartName from departinfo 
) d on u.DepartId = d.DepartId
LEFT JOIN(
SELECT RoleId,RoleName from roleinfo
)r on u.RoleId = r.RoleId
LEFT JOIN (
select m1.title,m1.content,m1.fromuserid,(SELECT UserName from userinfo where userid = r1.userid) as tousername,r1.flag from message m1 LEFT JOIN readcommonmessage r1
 on m1.messageid = r1.messageid

)m on m.fromuserid = u.UserId


这就是一个创建好的视图。


这就是这个视图里面的内容,也是一个表结构,跟表差不多,但是跟真正的表又有所差别,具体什么差别请自行百度。

从里面的内容可以看出,这个视图里面存储的就是我们select查询出来的结果。

修改视图

create or REPLACE view v_demoview as  

SELECT UserName,d.DepartName,r.RoleName,m.title,m.content,m.tousername,m.flag from userinfo u

LEFT JOIN (
SELECT DepartId,DepartName from departinfo 
) d on u.DepartId = d.DepartId
LEFT JOIN(
SELECT RoleId,RoleName from roleinfo
)r on u.RoleId = r.RoleId
LEFT JOIN (
select m1.title,m1.content,m1.fromuserid,(SELECT UserName from userinfo where userid = r1.userid) as tousername,r1.flag from message m1 LEFT JOIN readcommonmessage r1
 on m1.messageid = r1.messageid
)m on m.fromuserid = u.UserId

where u.UserId = 1

内容:


视图的使用:

    视图在结构上跟表是一样的,所以在使用上跟表示差不多的。

    select * from v_demoview 

    结果:


select * from v_usermessage where UserName = 'admin'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值