【数据库差异研究】update与delete使用表别名的研究
目录
⚛️总结
☪️1 Update
♋1.1 测试用例UPDATE users as a SET a.age = 111 WHERE a.name = 'Alice';
♏1.2 测试用例UPDATE users as a SET a.age = 111 WHERE name = 'Alice';
♐1.3 测试用例UPDATE users as a SET age = 111 WHERE a.name = 'Alice';
♑1.4 测试用例UPDATE users as a SET age = 111 WHERE name = 'Alice';
☪️2 delete
♉2.1 测试用例delete users as a from a WHERE a.name = 'Alice';
♈2.2 测试用例delete users as a from a WHERE name = 'Alice';
⚛️总结
Update
SQL语句示例 | Oracle | SQLite | PostgreSQL | MYSQL & mariadb |
---|---|---|---|---|
UPDATE users as a SET a.age = 111 WHERE a.name = 'Alice'; | 报错 | 报错 | 报错 | 正常执行 |
UPDATE users as a SET a.age = 111 WHERE name = 'Alice'; | 报错 | 报错 | 报错 | 正常执行 |
UPDATE users as a SET age = 111 WHERE a.name = 'Alice'; | 报错 | 正常执行 | 正常执行 | 正常执行 |
UPDATE users as a SET age = 111 WHERE name = 'Alice'; | 报错 | 正常执行 | 正常执行 | 正常执行 |
Delete
SQL语句示例 | Oracle | SQLite | PostgreSQL | MYSQL & mariadb |
---|---|---|---|---|
delete from users as a WHERE a.name = 'Alice'; | 报错 | 报错 | 报错 | 报错 |
delete from users as a WHERE name = 'Alice'; | 报错 | 报错 | 报错 | 报错 |
☪️1 Update
♋1.1 测试用例UPDATE users as a SET a.age = 111 WHERE a.name = 'Alice';
UPDATE users as a SET a.age = 111 WHERE a.name = 'Alice';
CREATE TABLE users (name VARCHAR(255) NOT NULL,age INT
);INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);
INSERT INTO users (name, age) VALUES ('Charlie', 35);
INSERT INTO users (name, age) VALUES ('Alice', 40);SELECT * FROM users;
UPDATE users as a SET a.age = 111 WHERE a.name = 'Alice';
SELECT * FROM users;
修改前表内容如下:
name | age |
---|---|
Alice | 25 |
Bob | 30 |
Charlie | 35 |
Alice | 40 |
1 ORACLE
执行报错
ORA-00971: missing SET keyword
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
2 sqlite
执行报错
Error: near line 12: near ".": syntax error
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
3 PG
执行报错
psql:commands.sql:12: ERROR: column "a" of relation "users" does not exist LINE 1: UPDATE users as a SET a.age = 111 WHERE a.name = 'Alice';
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
4 MYSQL & mariadb
执行正常
后表内容已经更新,如下:
name age Alice 111 Bob 30 Charlie 35 Alice 111
♏1.2 测试用例UPDATE users as a SET a.age = 111 WHERE name = 'Alice';
UPDATE users as a SET a.age = 111 WHERE name = 'Alice';
CREATE TABLE users (name VARCHAR(255) NOT NULL,age INT
);INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);
INSERT INTO users (name, age) VALUES ('Charlie', 35);
INSERT INTO users (name, age) VALUES ('Alice', 40);SELECT * FROM users;
UPDATE users as a SET a.age = 111 WHERE name = 'Alice';
SELECT * FROM users;
修改前表内容如下:
name | age |
---|---|
Alice | 25 |
Bob | 30 |
Charlie | 35 |
Alice | 40 |
1 ORACLE
执行报错
ORA-00971: missing SET keyword
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
2 sqlite
执行报错
Error: near line 12: near ".": syntax error
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
3 PG
执行报错
psql:commands.sql:12: ERROR: column "a" of relation "users" does not exist LINE 1: UPDATE users as a SET a.age = 111 WHERE name = 'Alice';
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
4 MYSQL & mariadb
执行正常
后表内容已经更新,如下:
name age Alice 111 Bob 30 Charlie 35 Alice 111
♐1.3 测试用例UPDATE users as a SET age = 111 WHERE a.name = 'Alice';
UPDATE users as a SET age = 111 WHERE a.name = 'Alice';
CREATE TABLE users (name VARCHAR(255) NOT NULL,age INT
);INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);
INSERT INTO users (name, age) VALUES ('Charlie', 35);
INSERT INTO users (name, age) VALUES ('Alice', 40);SELECT * FROM users;
UPDATE users as a SET age = 111 WHERE a.name = 'Alice';
SELECT * FROM users;
修改前表内容如下:
name | age |
---|---|
Alice | 25 |
Bob | 30 |
Charlie | 35 |
Alice | 40 |
1 ORACLE
执行报错
ORA-00971: missing SET keyword
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
2 sqlite
执行正常
后表内容已经更新,如下:
name age Alice 111 Bob 30 Charlie 35 Alice 111
3 PG
执行正常
后表内容已经更新,如下:
name age Bob 30 Charlie 35 Alice 111 Alice 111
4 MYSQL & mariadb
执行正常
后表内容已经更新,如下:
name age Alice 111 Bob 30 Charlie 35 Alice 111
♑1.4 测试用例UPDATE users as a SET age = 111 WHERE name = 'Alice';
UPDATE users as a SET age = 111 WHERE name = 'Alice';
CREATE TABLE users (name VARCHAR(255) NOT NULL,age INT
);INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);
INSERT INTO users (name, age) VALUES ('Charlie', 35);
INSERT INTO users (name, age) VALUES ('Alice', 40);SELECT * FROM users;
UPDATE users as a SET age = 111 WHERE name = 'Alice';
SELECT * FROM users;
修改前表内容如下:
name | age |
---|---|
Alice | 25 |
Bob | 30 |
Charlie | 35 |
Alice | 40 |
1 ORACLE
执行报错
ORA-00971: missing SET keyword
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
2 sqlite
执行正常
后表内容已经更新,如下:
name age Alice 111 Bob 30 Charlie 35 Alice 111
3 PG
执行正常
后表内容已经更新,如下:
name age Bob 30 Charlie 35 Alice 111 Alice 111
4 MYSQL & mariadb
执行正常
后表内容已经更新,如下:
name age Alice 111 Bob 30 Charlie 35 Alice 111
☪️2 delete
♉2.1 测试用例delete users as a from a WHERE a.name = 'Alice';
delete users as a from a WHERE a.name = 'Alice';
CREATE TABLE users (name VARCHAR(255) NOT NULL,age INT
);INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);
INSERT INTO users (name, age) VALUES ('Charlie', 35);
INSERT INTO users (name, age) VALUES ('Alice', 40);SELECT * FROM users;
delete users as a from a WHERE a.name = 'Alice';
SELECT * FROM users;
修改前表内容如下:
name | age |
---|---|
Alice | 25 |
Bob | 30 |
Charlie | 35 |
Alice | 40 |
1 ORACLE
执行报错
ORA-03048: SQL reserved word 'AS' is not syntactically valid following 'delete users '
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
2 sqlite
执行报错
Error: near line 12: near "users": syntax error
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
3 PG
执行报错
psql:commands.sql:12: ERROR: syntax error at or near "users" LINE 1: delete users as a from a WHERE a.name = 'Alice';
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
4 MYSQL & mariadb
执行报错
ERROR 1064 (42000) at line 12: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as a from a WHERE a.name = 'Alice'' at line 1
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
♈2.2 测试用例delete users as a from a WHERE name = 'Alice';
delete users as a from a WHERE name = 'Alice';
CREATE TABLE users (name VARCHAR(255) NOT NULL,age INT
);INSERT INTO users (name, age) VALUES ('Alice', 25);
INSERT INTO users (name, age) VALUES ('Bob', 30);
INSERT INTO users (name, age) VALUES ('Charlie', 35);
INSERT INTO users (name, age) VALUES ('Alice', 40);SELECT * FROM users;
delete users as a from a WHERE name = 'Alice';
SELECT * FROM users;
修改前表内容如下:
name | age |
---|---|
Alice | 25 |
Bob | 30 |
Charlie | 35 |
Alice | 40 |
1 ORACLE
执行报错
ORA-03048: SQL reserved word 'AS' is not syntactically valid following 'delete users '
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
2 sqlite
执行报错
Error: near line 12: near "users": syntax error
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
3 PG
执行报错
psql:commands.sql:12: ERROR: syntax error at or near "users" LINE 1: delete users as a from a WHERE name = 'Alice';
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
4 MYSQL & mariadb
执行报错
ERROR 1064 (42000) at line 12: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as a from a WHERE name = 'Alice'' at line 1
之后查询表内容未发生变化,如下:
name age Alice 25 Bob 30 Charlie 35 Alice 40
相关文章:
【数据库差异研究】update与delete使用表别名的研究
目录 ⚛️总结 ☪️1 Update ♋1.1 测试用例UPDATE users as a SET a.age 111 WHERE a.name Alice; ♏1.2 测试用例UPDATE users as a SET a.age 111 WHERE name Alice; ♐1.3 测试用例UPDATE users as a SET age 111 WHERE a.name Alice; ♑1.4 测试用例UPDATE us…...
idea远程连接docker
idea远程连接docker docker、ubuntu、linux、远程连接、IntelliJ idea注意!本文中开启docker远程连接的方法只能在确定环境安全的内网中使用,不可在公网服务器设置,有极大安全风险! 注意!本文中开启docker远程连接的…...
Docker 安装 ClickHouse 教程
Docker 安装 ClickHouse 教程 创建目录 首先,创建必要的目录用于存放 ClickHouse 的配置、数据和日志文件。 mkdir -p /home/clickhouse/conf mkdir -p /home/clickhouse/data mkdir -p /home/clickhouse/log chmod -R 777 /home/clickhouse/conf chmod -R 777 /…...
过渡到内存安全语言:挑战和注意事项
开放源代码安全基金会 ( OpenSSF )总经理 Omkhar Arasaratnam 讨论了内存安全编程语言的演变及其为应对 C 和 C 等语言的局限性而出现的现象。 内存安全问题已存在五十多年,它要求程序员从内存管理任务中抽离出来。 Java、Rust、Python 和 JavaScript 等现代语言通…...
在Pycharm中安装Cv2
安装OpenCV: 在Terminal中,输入以下pip命令来安装OpenCV: pip install opencv-python pip install opencv-contrib-python 如果下载速度较慢,可以考虑使用国内的pip镜像源,如清华大学源: pip install openc…...
减少重复的请求之promise缓存池(构造器版) —— 缓存promise,多次promise等待并返回第一个promise的结果
减少重复的请求之promise缓存池 —— 缓存promise,多次promise等待并返回第一个promise的结果 背景简介 当一个业务组件初始化调用了接口,统一个页面多吃使用同一个组件,将会请求大量重复的接口 如果将promise当作一个普通的对象࿰…...
cdq+bitset处理高维偏序
高维偏序 CDQ分治 假设处理的区间为 [ l , r ] [l,r] [l,r] ,CDQ分治的过程: 如果 l ≥ r l\geq r l≥r ,返回。设区间中点为 m i d mid mid ,递归处理 [ l , m i d ] [l,mid] [l,mid] 和 [ m i d 1 , r ] [mid1,r] [mid…...
敏捷开发和传统开发,你更适合哪种?
时间:2024年 10月 03日 作者:小蒋聊技术 邮箱:wei_wei10163.com 微信:wei_wei10 音频:喜马拉雅 大家好,欢迎来到“小蒋聊技术”,我是小蒋!今天我们来聊聊两个开发模式的“对决”…...
python之with
with上下文管理是什么呢? 一般都是使用系统提供的一些with语句,列如我要去读取一些数据进行分析,就可以使用with open去读取某些数据,或者我要把一些图片给他保存到某些地方,可以用with给他写入。 上下午管理器with是…...
vue3 升级实战笔记
最近要将公司项目的移动端进行 vue3 的升级工作,就顺便记录下升级过程。 项目迁移的思路 我的想法是最小改动原则。 从 vue2.x 升级到 vue3,且使用 vue3 的 选项式 API。构建工具要从 vue-cli(webpack)升级到 vite。路由需要升级到…...
利用函数模块化代码实操 ← Python
【知识点】 ● 模块化可以使代码易于维护和调试,并且提高代码的重用性。 ● 函数可以用来减少冗余的代码并提高代码的可重用性。函数也可以用来模块化代码并提高程序的质量。 ● 在 Python 中,可以将函数的定义放在一个被称为模块的文件中,这种文件的后缀…...
Java高效编程(12):重写toString方法
解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 尽管 Object 类提供了 toString 方法的默认实现,但它返回的字符串通常不是类的使用者想要看到的。默认返回的字符串格式是类名加上“”符号和哈希码的十六进制表示,例如 PhoneNu…...
谷歌给到的185个使用生成式AI的案例
很多公司从利用AI回答问题,进而使用AI进行预测,向使用生成式AI Agent转变。AI Agent的独特之处在于它们可以采取行动以实现特定目标,比如引导购物者找到合适的鞋子,帮助员工寻找合适的健康福利,或在护理人员交接班期间…...
程序员如何通过专业与软技能提升核心竞争力
一、引言 随着AIGC的兴起,AI辅助编程工具如chatgpt、midjourney、claude等接二连三地涌现,编程领域的变革正逐步深化。面对这一变革,程序员们对于未来工作的前景有着种种不同的担忧和期待。他们担心AI可能取代部分编程工作,同时…...
基于YOLOv8的智能植物监测机器人
摘要:针对传统的植物病害检测方法依赖专家的经验,耗时耗力,并且准确性受限于个人的水平等问题。文中提出无线通信模块采用HTTP协议来传输数据图片,采用SoC核心处理器实现了便携化,采用对射式红外避障传感器实现自动避障功能。以YOLOv8算法为控制核心,并添加注意力机制以提…...
2024年OpenAI DevDay发布实时 API、提示缓存等新功能
就在几天前,一些重要人物如前 CTO Mira Murati 离开了 OpenAI。因此,看到 Sam Altman 在 DevDay 上登台,讨论开发者的新产品,感觉有点奇怪。 随着公司内部的这些变化,你不禁会想:我们还应该信任他吗&#…...
Raspberry Pi3B+之安装bookworm+Rpanion系统
Raspberry Pi3B之安装bookwormRpanion系统 1. 源由2. 系统安装3. 系统安装3.1 烧录系统3.2 设备接线3.3 配置无线3.4 更新系统3.5 安装git3.6 克隆Rpanion3.7 安装Rpanion 4. 系统管理5. 附录问题1:error: externally-managed-environment问题2:bookworm…...
无人机专业除理论外,飞手执照、组装、调试实操技术详解
无人机专业的学习除了丰富的理论知识外,飞手执照的获取、无人机的组装与调试等实操技术也是至关重要的。以下是对这些方面的详细解析: 一、无人机飞手执照 1. 必要性 法规要求:根据《民用无人驾驶航空器系统驾驶员管理暂行规定》等相关法规…...
【网路通信基础与实践番外二】TCP协议的流量控制和拥塞控制以及二者区别和例题
TCP协议是端对端的协议,因此在数据进行传输的过程受发送方,数据通道,接收方三方状态的影响。我们用水龙头来比喻数据发送方,水管来比喻数据通道,水桶来表示数据接收方。 图(a)表示水桶太小,来不及接受注入…...
SpringBoot3+Vue3开发后台管理系统脚手架
后台管理系统脚手架 介绍 在快速迭代的软件开发世界里,时间就是生产力,效率决定成败。对于构建复杂而庞大的后台系统而言,一个高效、可定制的后台脚手架(Backend Scaffold)无疑是开发者的得力助手。 脚手架 后台脚…...
OpenFeign微服务部署
一.开启nacos 和redis 1.查看nacos和redis是否启动 docker ps2.查看是否安装nacos和redis docker ps -a3.启动nacos和redis docker start nacos docker start redis-6379 docker ps 二.使用SpringSession共享例子 这里的两个例子在我的一个博客有创建过程,…...
【C语言】数组(下)
【C语言】数组(下) 6、二维数组的创建6.1二维数组的概念6.2二维数组的创建 7、二维数组的初始化7.1不完全初始化7.2完全初始化7.3按照行初始化7.4初始化时可以省略行,但是不能省略列 8、二维数组的使用8.1 二维数组的下标8.2二维数组的输入和…...
cGANs with Projection Discriminator
基于映射鉴别器的CGAN 模型中,判别器(Discriminator)不是通过将条件信息简单地与特征向量拼接(concatenate)来使用条件信息,而是采用一种基于投影的方式,这种方式更加尊重条件信息在底层概率模…...
mysql学习教程,从入门到精通,SQL HAVING 子句(32)
1、SQL HAVING 子句 当然!HAVING 子句在 SQL 中用于对分组后的结果进行过滤。它通常与 GROUP BY 子句一起使用,以便对聚合函数(如 SUM(), COUNT(), AVG(), MAX(), MIN() 等)的结果进行条件筛选。 以下是一个示例,假设…...
JavaScript while循环语句
While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。 while(条件){语句;} var i0;while(i<100){console.log(i);i1;} 注意:所有的for循环都可以改写为while循环...
49天精通Java(Day 2):Java的基本语法
上期内容回顾 在上一期的内容中,我们介绍了Java的基本概念、历史背景,并完成了JDK 1.8的安装与环境配置。你还编写并运行了第一个简单的Java程序“Hello, World!”。今天,我们将深入探讨Java的基本语法,包括变量、数据类型、运算…...
uni-app之旅-day01-home页
首页 3.0 创建 home 分支 🍕🍕🍕运行如下的命令,基于 master 分支在本地创建 home 子分支,用来开发和 home 首页相关的功能git branch(查看分支)git checkout -b home(创建home分支) 3.1 配置网络请求 ἲ…...
Vue3轻松实现导出Excel文件功能
文章目录 1.前言2.安装插件3.案例3.1 定义表格数据,设置 id 选择器3.2 据所选 dom 对象生成 sheetbook3.3 写入文件3.4 生成 xlsx文件4.完整代码1.前言 前端常用的导出 Excel的 js 库是 xlsx,但是 xlsx不能设置样式。要想设置样式,必要要结合 xlsx-style 插件一起使用,但是…...
在Kali Linux中使用VNC和iptables配置xrdp以实现远程连接
在Kali Linux中,使用VNC和iptables配置xrdp以实现远程连接涉及几个步骤。不过,值得注意的是,VNC和xrdp是两种不同的远程桌面协议,它们通常不会在同一配置中同时使用(除非有特殊的网络架构需求)。然而&#…...
小徐影院:Spring Boot技术下的影院革新
第四章 系统设计 4.1 系统的功能结构图 通过系统需求分析,本小徐影城管理系统的功能结构设计如图4-1所示: 图4-1 系统功能图 4.2 系统数据库设计 4.2.1 数据库E-R图 在该系统的信息中,由于数据库的支持,我们可以对数据库进行收集…...
淘宝入驻网站建设/服务器
RabbitMQ小结(五)java整合之简单模式 简单模式架构图 1.环境 2.生产者 package com.jbp.mq;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory;import java.io.IOException;…...
html做网站项目案例/汕头网站建设平台
2019独角兽企业重金招聘Python工程师标准>>> 在一个锁中使用多个条件(Using multiple conditions in a Lock) 一个Lock可能关联着一个或者多个条件,这些条件表现在Condition接口。这些条件(conditions)的目的是允许多个线程控制一个锁对象并且…...
具体的网站建设/抖音权重查询工具
input输入和监听输入和查询 案例如下: 监听输入框的文字,并且进行switch判断: 代码如下:...
做网站收录真的假的/百度极速版客服人工在线咨询
MHA高可用架构用一个管理节点监控后端数据库主库可用性提供VIP漂移接口,不提供具体方法提供补全从库日志的脚本MHA监控主库,提供自动主从切换;提供VIP漂移接口提供补全从库日志的脚本MHA的安装步骤规划配置服务器间域名和ssh互信访问在manage…...
做外贸推广的网站/磁力搜索引擎下载
三、登录例子后期实践 1、 创建应用对象 (1)选择file\new,或者快捷键CtrlN,新建Workspace工作空间,如下图,点击OK,然后命名为testSpace. (2)同以上方法一样, 新建Traget\…...
清远市建设局官方网站/实体店营销方案
最近我的雷柏1800键鼠的接收器坏了 换了个小的接收器, 但是需要对码,不然不能用。 在之前下的是官方的v3.2版本的对码器,脑子有病的,总是不行。 后来试了3.1 3.0. 2.1 还是强制绑定不行。 最终发现了它 2.7版本。 这个版本是兼容雷…...