mysql中的view(虚拟表)

视图是从一个或多个表/视图中导出来的虚拟表。mysql支持可更新的视图。

1 创建
    CREATE
    [OR REPLACE]  ##使用这个选项,若视图已存在,则等图create,若视图不存在,则等同alter
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]

注意事项:
a 在同一个数据库中,视图和表拥有同一个namespace,因此不能有相同的名字。
b select语句中不能含有子查询
c select语句中不能涉及系统变量和用户自定义变量
d 如果有存储过程,函数,定时器等等,select语句中不能有他们的参数
e select中不能有prepared语句的参数
f 创建时所涉及的表和列必须存在,如果后来某些表或者列被删除,使用这个视图时会报错
g 创建时不能涉及临时表,也不能创建‘临时视图’
h 不能关联触发器。 因此information_schema和performance_schema中的表都不能与触发器关联。
i select语句中的别名不能超过列的最大长度(64个字母),而非一般别名最大长度(256字母)。
j 创建时允许在select中添加order by语句,不过如果是从含有order by语句的视图中选取的列,此时添加的order by语句会被自动忽略。
示例:

    CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;
2 查看
    DESCRIBE 视图名;
    或者:
    SHOW TABLE STATUS LIKE '视图名';
    或者:
    SHOW CREATE VIEW 视图名;
    或者:
    SELECT * FROM information_schema.views;
3 修改
    create or replace语句(如1中所言)
    或者alter语句:
    ALTER
        [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
        [DEFINER = { user | CURRENT_USER }]
        [SQL SECURITY { DEFINER | INVOKER }]
        VIEW view_name [(column_list)]
        AS select_statement
        [WITH [CASCADED | LOCAL] CHECK OPTION]
4 更新

视图为虚拟表,没有数据。在视图中添加,修改,删除数据实际上是在其原始表中进行的。因此视图并不会对性能有太大影响。但是在某些情形下,视图是不能更新的:
a 含有聚合函数
b distinct
c group by
d having
e union 或者union all
f 含有子查询
g 有join等语句(联表查询)
h 涉及其他不可更新视图
i 只含有不含表信息的参数
j ALGORITHM = TEMPTABLE
k 对表中的某行多次引用

5 删除
    DROP VIEW [IF EXISTS]
        view_name [, view_name] ...
        [RESTRICT | CASCADE]

转载于:https://www.cnblogs.com/noway-neway/p/5218791.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值