mysql视图

视图

视图:视图是由查询结果形成的一张虚拟表或者逻辑表;也就是说数据库只存放视图的定义,而不存放视图对应的数据, 每一次执行视图都相当于重新执行一次视图的查询代码。所以这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了
优点: 简化操作,提供安全性,限制数据访问(指定能访问的列),可以设置计算列(可以进行字段的数据运算),具有逻辑独立性
缺点:查询速度会变慢,例如视图上创建视图。并且在关联的表结构修改后,视图也要做相应的修改
使用时机:当你需要经常性的查询某些数据,或者说这些数据经常需要联合多张表,内容非常多的时候,你可以使用视图建立一个虚拟表,以后这些数据就可以直接在这里查询,这样可以提高效率

语法:
简单:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

复杂的
CREATE [OR REPLACE] [ALGORITHM={UNDEFIEND | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

参数说明
1、CREATE:创建视图
2、OR REPLACE,替换已有视图 如果存在这个名字的视图就覆盖他
3、ALGORIGHM,视图选择的算法 简单说就是怎么查询,有下面三种
4、UNDEFIEND,自动选择 ,系统为你选择适合的
5、MERGE,合并查询,他不会生成临时表,只是存放了sql语句,可以和其他的进行合并查询

6、TEMPTABLE,表示将视图的结果存入临时表,然后可以作为表来查询 ,这里的临时表不会一直存在,当使用时会创建,用完就没了,一般合并查询过于复杂实现不了时,会用这个参数先 生成一个临时表,在进行复杂查询

7、View_name,表示要创建的视图名称
8、Column_list,可选参数,表示属性清单,指定了视图中各个属性的名称,默认情况下,与SELECT语句中查询的属性相同
9、AS,表示指定视图要执行的操作
10、SELECT_statement,是一个完整的查询语句,表示从某个表或视图中查出,某些满足条件的记录,将这些记录导入视图中

11、WITH CHECK OPTION,可选参数,这个参数的作用时,当你要对视图进行增删改查时加上这个参数后只能对视图里面有的数据进行修改(会改变原表),比如视图只显示年龄大于18的,所以你在通过视图插入小于18的时,不会被允许,不加这个参数就可以成功插入,这个是单表建立视图可以的,多表的视图应该不行

12、CASCADED,可选参数,该参数为默认值 ,[WITH CASCADED CHECK OPTION]在指定这个参数时,在这个视图之上建立的子视图,或者这个视图的父视图在对这个视图或者子视图进行增删改查时也会联级检查他的父视图是否符合,不符合也不能进行增删改查
13、LOCAL,可选参数,表示创建视图时,只要满足该视图本身定义的条件即可,这里便不需要考虑其他视图

假如有sales销售表,里面有price价格字段,有num数量字段,还有一个goods商品表,你经常要知道销售金额是多少
创建视图说明计算列:

mysql> create view v_money
    -> as
    -> select goods.name,sales.num*sales.price   #计算列,这里你可以用as换个名,这样下面的表显示时就不会这么长
    -> from goods inner join sales
    -> where goods.id=sales.gid
    -> group by sales.gid;

查看视图:
mysql> select * from v_money;

查看数据库下表和视图
mysql> show tables; #这个和查看表的语法一样,所以定义视图的时候前面加v_或者view_以作区分

删除视图
mysql> dorp view v_money(视图名);

注意:不要使用视图做更新、插入操作,多表时不要更新和插入,会报错,毕竟视图不是所有字段都用,
表内容修改,视图显示的内容也会更新
表结构改变,必要时视图也要进行结构修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值