当前位置: 首页 > 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)无疑是开发者的得力助手。 脚手架 后台脚…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...