mysql视图的创建和选项配置详解

在 MySQL 中,可以使用 CREATE VIEW 语句来创建视图。基本的语法如下:

CREATE
    [OR REPLACE]
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = {user | CURRENT_USER}]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement;
1、ALGORITHM 选项用于确定MySQL如何处理视图。
  • UNDEFINED:MySQL 会自动选择算法。默认情况下,它首先考虑 MERGE 算法,如果不能使用 MERGE,那么它会选择 TEMPTABLE

  • MERGE:这种策略下,MySQL 将试图将视图定义(即创建视图时的 SELECT 语句)与包含视图的查询一起执行。也就是说,视图的内容将被直接合并到主查询中。这通常提供了更好的性能,因为它避免了创建和填充临时表的开销。但需要注意的是,不是所有视图都能使用此策略,比如视图定义中包含 UNIONGROUP BY 的语句,或者是某些聚合函数等。

  • TEMPTABLE:在此策略下,MySQL 会根据视图的定义创建一个临时表,并将查询结果存储在临时表中。然后对于引用该视图的查询,MySQL 则从临时表中检索数据。这适用于所有类型的视图,包括那些不能使用 MERGE 的视图,但创建临时表会消耗更多的资源,所以相对来说性能较低。

2、DEFINER 选项指定视图的定义者(拥有者)。这是一个用户账号,当查询执行到该视图时,将使用该账号的权限来执行。
3、SQL SECURITY 选项定义视图的安全模式。
  • DEFINER:当视图被引用时,它会以定义视图的用户身份来运行。换句话说,无论谁调用此视图,都将使用定义者的权限来执行。这是默认值。

  • INVOKER:当视图被引用时,它会以调用者(也就是执行查询的用户)的身份来运行。即视图将使用当前认证的用户的权利来执行。

以下是一个创建视图的示例:

CREATE VIEW employee_view AS
SELECT employeeNumber, lastName, firstName, jobTitle
FROM employees
WHERE jobTitle ='Sales Rep';

这个语句创建了一个名为 employee_view 的视图,包含所有职位为 'Sales Rep' 的员工信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值