当前位置: 首页 > news >正文

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' 的员工信息。

http://www.lryc.cn/news/147623.html

相关文章:

  • Python正则表达式中re.sub自定义替换方法正确使用方法
  • hyperf 十五 验证器
  • ssh访问远程宿主机的VMWare中NAT模式下的虚拟机
  • 【一等奖方案】大规模金融图数据中异常风险行为模式挖掘赛题「NUFE」解题思路
  • npm install 报错
  • 专业人士使用的3个好用的ChatGPT提示
  • doris系列2: doris分析英国房产数据集
  • 精准运营,智能决策!解锁天翼物联水利水务感知云
  • CleanMyMac最新版4.14Mac清理软件下载安装使用教程
  • String.Format方法详解
  • 【Mysql】关联查询1对多处理
  • vue 入门案例模版
  • el-select实现懒加载
  • Java泛型机制
  • Linux CentOS安装抓包解包工具Wireshark图形化界面
  • 虹科分享 | 温度边缘效应对冻干成品含水量的影响(下)——优化和总结
  • ATF(TF-A)安全通告 TFV-1 (CVE-2016-10319)
  • 说说我最近筛简历和面试的感受。。
  • Mysql /etc/my.cnf参数详解(一)
  • 用最少数量的箭引爆气球【贪心算法】
  • Matlab论文插图绘制模板第109期—特征渲染的标签气泡散点图
  • 音视频 ffplay命令播放媒体
  • 使用Fiddler模拟网络
  • 【Axure高保真原型】多图表动态切换
  • 笔试题-访问控制修饰符范围
  • 基于飞腾芯片的设计与调试入门指导
  • 了解 HarmonyOS
  • 【校招VIP】产品面试之面试官的真实意图
  • 实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理
  • Go 1.21新增的 maps 包详解