數(shù)據(jù)庫中update與delete使用表別名的深入研究
總結(jié)
Update
| SQL語句示例 | Oracle | SQLite | PostgreSQL | MYSQL & mariadb |
|---|---|---|---|---|
UPDATE users as a SET a.age = 111 WHERE a.name = 'Alice'; | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 正常執(zhí)行 |
UPDATE users as a SET a.age = 111 WHERE name = 'Alice'; | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 正常執(zhí)行 |
UPDATE users as a SET age = 111 WHERE a.name = 'Alice'; | 報(bào)錯(cuò) | 正常執(zhí)行 | 正常執(zhí)行 | 正常執(zhí)行 |
UPDATE users as a SET age = 111 WHERE name = 'Alice'; | 報(bào)錯(cuò) | 正常執(zhí)行 | 正常執(zhí)行 | 正常執(zhí)行 |
Delete
| SQL語句示例 | Oracle | SQLite | PostgreSQL | MYSQL & mariadb |
|---|---|---|---|---|
delete from users as a WHERE a.name = 'Alice'; | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 報(bào)錯(cuò) |
delete from users as a WHERE name = 'Alice'; | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 報(bào)錯(cuò) | 報(bào)錯(cuò) |
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;修改前表內(nèi)容如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
1 ORACLE
執(zhí)行報(bào)錯(cuò)
ORA-00971: missing SET keyword
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
2 sqlite
執(zhí)行報(bào)錯(cuò)
Error: near line 12: near ".": syntax error
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
3 PG
執(zhí)行報(bào)錯(cuò)
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';
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
4 MYSQL & mariadb
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| 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;修改前表內(nèi)容如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
1 ORACLE
執(zhí)行報(bào)錯(cuò)
ORA-00971: missing SET keyword
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
2 sqlite
執(zhí)行報(bào)錯(cuò)
Error: near line 12: near ".": syntax error
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
3 PG
執(zhí)行報(bào)錯(cuò)
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';
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
4 MYSQL & mariadb
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| 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;修改前表內(nèi)容如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
1 ORACLE
執(zhí)行報(bào)錯(cuò)
ORA-00971: missing SET keyword
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
2 sqlite
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| name | age |
|---|---|
| Alice | 111 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 111 |
3 PG
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| name | age |
|---|---|
| Bob | 30 |
| Charlie | 35 |
| Alice | 111 |
| Alice | 111 |
4 MYSQL & mariadb
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| 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;修改前表內(nèi)容如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
1 ORACLE
執(zhí)行報(bào)錯(cuò)
ORA-00971: missing SET keyword
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
2 sqlite
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| name | age |
|---|---|
| Alice | 111 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 111 |
3 PG
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| name | age |
|---|---|
| Bob | 30 |
| Charlie | 35 |
| Alice | 111 |
| Alice | 111 |
4 MYSQL & mariadb
執(zhí)行正常
后表內(nèi)容已經(jīng)更新,如下:
| 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;修改前表內(nèi)容如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
1 ORACLE
執(zhí)行報(bào)錯(cuò)
ORA-03048: SQL reserved word 'AS' is not syntactically valid following 'delete users '
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
2 sqlite
執(zhí)行報(bào)錯(cuò)
Error: near line 12: near "users": syntax error
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
3 PG
執(zhí)行報(bào)錯(cuò)
psql:commands.sql:12: ERROR: syntax error at or near "users" LINE 1: delete users as a from a WHERE a.name = 'Alice';
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
4 MYSQL & mariadb
執(zhí)行報(bào)錯(cuò)
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
之后查詢表內(nèi)容未發(fā)生變化,如下:
| 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;修改前表內(nèi)容如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
1 ORACLE
執(zhí)行報(bào)錯(cuò)
ORA-03048: SQL reserved word 'AS' is not syntactically valid following 'delete users '
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
2 sqlite
執(zhí)行報(bào)錯(cuò)
Error: near line 12: near "users": syntax error
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
3 PG
執(zhí)行報(bào)錯(cuò)
psql:commands.sql:12: ERROR: syntax error at or near "users" LINE 1: delete users as a from a WHERE name = 'Alice';
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
4 MYSQL & mariadb
執(zhí)行報(bào)錯(cuò)
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
之后查詢表內(nèi)容未發(fā)生變化,如下:
| name | age |
|---|---|
| Alice | 25 |
| Bob | 30 |
| Charlie | 35 |
| Alice | 40 |
總結(jié)
到此這篇關(guān)于數(shù)據(jù)庫中update與delete使用表別名的文章就介紹到這了,更多相關(guān)update與delete使用表別名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL基于ibd2sql實(shí)現(xiàn)ibd文件批量轉(zhuǎn)換為SQL的完整指南
本文介紹了使用ibd2sql工具批量處理InnoDB獨(dú)立表空間文件.ibd恢復(fù)表結(jié)構(gòu)和數(shù)據(jù)的方法,提供了Windows PowerShell腳本和Linux Shell自動(dòng)化腳本,實(shí)現(xiàn)一鍵恢復(fù),對于手動(dòng)導(dǎo)入和常見問題也給出了解決方案,需要的朋友可以參考下2026-04-04
MySQL數(shù)據(jù)庫全量備份+增量備份的實(shí)現(xiàn)
本文介紹了通過全量備份和增量備份實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的安全,并通過cron定時(shí)任務(wù)自動(dòng)進(jìn)行備份,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-03-03
修改MySQL時(shí)區(qū)和最大連接數(shù)的兩種方式
文章介紹了如何修改MySQL的時(shí)區(qū)和最大連接數(shù),提供了臨時(shí)和永久兩種修改方法,時(shí)區(qū)修改需在配置文件中添加相應(yīng)設(shè)置,并在不同系統(tǒng)下的不同路徑進(jìn)行修改,最大連接數(shù)的修改同樣需要在配置文件中設(shè)置,并注意連接數(shù)不宜過大,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-10-10
mysql?8.0.28?winx64.zip安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql?8.0.28?winx64.zip安裝配置方法圖文教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
優(yōu)化mysql數(shù)據(jù)庫的經(jīng)驗(yàn)總結(jié)
本篇文章是對優(yōu)化mysql數(shù)據(jù)庫的經(jīng)驗(yàn)進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友參考下2013-06-06
不使用MySQL數(shù)據(jù)庫的五個(gè)給力理由解析
眾所周知,MySQL數(shù)據(jù)庫雖然功能未必很強(qiáng)大,但因?yàn)樗拈_源、廣泛傳播,導(dǎo)致很多人都了解到這個(gè)數(shù)據(jù)庫。2011-03-03

