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

【数据库差异研究】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语句示例OracleSQLitePostgreSQLMYSQL & 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语句示例OracleSQLitePostgreSQLMYSQL & 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;

修改前表内容如下:

nameage
Alice25
Bob30
Charlie35
Alice40

1 ORACLE

执行报错

ORA-00971: missing SET keyword 

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

2 sqlite

执行报错

Error: near line 12: near ".": syntax error

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

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';

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

4 MYSQL & mariadb

执行正常

后表内容已经更新,如下:

nameage
Alice111
Bob30
Charlie35
Alice111

♏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;

修改前表内容如下:

nameage
Alice25
Bob30
Charlie35
Alice40

1 ORACLE

执行报错

ORA-00971: missing SET keyword 

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

2 sqlite

 执行报错

Error: near line 12: near ".": syntax error

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

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';

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

4 MYSQL & mariadb

执行正常

后表内容已经更新,如下:

nameage
Alice111
Bob30
Charlie35
Alice111

♐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;

修改前表内容如下:

nameage
Alice25
Bob30
Charlie35
Alice40

1 ORACLE

 执行报错

ORA-00971: missing SET keyword 

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

2 sqlite

执行正常

后表内容已经更新,如下:

nameage
Alice111
Bob30
Charlie35
Alice111

3 PG

执行正常

后表内容已经更新,如下:

nameage
Bob30
Charlie35
Alice111
Alice111

4 MYSQL & mariadb

执行正常

后表内容已经更新,如下:

nameage
Alice111
Bob30
Charlie35
Alice111

♑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;

修改前表内容如下:

nameage
Alice25
Bob30
Charlie35
Alice40

1 ORACLE

 执行报错

ORA-00971: missing SET keyword 

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

2 sqlite

执行正常

后表内容已经更新,如下:

nameage
Alice111
Bob30
Charlie35
Alice111

3 PG

执行正常

后表内容已经更新,如下:

nameage
Bob30
Charlie35
Alice111
Alice111

4 MYSQL & mariadb

执行正常

后表内容已经更新,如下:

nameage
Alice111
Bob30
Charlie35
Alice111

☪️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;

修改前表内容如下:

nameage
Alice25
Bob30
Charlie35
Alice40

1 ORACLE

 执行报错

ORA-03048: SQL reserved word 'AS' is not syntactically valid following 'delete
users '

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

2 sqlite

 执行报错

Error: near line 12: near "users": syntax error

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

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';

 之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

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

 之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

♈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;

修改前表内容如下:

nameage
Alice25
Bob30
Charlie35
Alice40

1 ORACLE

 执行报错

ORA-03048: SQL reserved word 'AS' is not syntactically valid following 'delete
users '

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

2 sqlite

 执行报错

Error: near line 12: near "users": syntax error

之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

3 PG

 执行报错

psql:commands.sql:12: ERROR:  syntax error at or near "users"
LINE 1: delete users as a from a WHERE name = 'Alice';

 之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40

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

 之后查询表内容未发生变化,如下:

nameage
Alice25
Bob30
Charlie35
Alice40


相关文章:

【数据库差异研究】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当作一个普通的对象&#xff0…...

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)无疑是开发者的得力助手。 脚手架 后台脚…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层&#xf…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...