国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Oracle?Database?23c新特性之關聯更新和刪除示例詳解

瀏覽:29日期:2023-09-22 20:54:42
目錄示例表關聯更新關聯刪除

Oracle database 23c 開始支持在 UPDATE 和 DELETE 語句中使用 JOIN 連接,獲取更新和刪除的數據源。

示例表

本文使用示例表可以通過 GitHub 下載,然后基于 employee 表創建一個 emp_devp:

CREATE TABLE emp_devp AS SELECT * FROM employee e WHERE dept_id = 4; UPDATE emp_devp SET salary = 0;COMMIT;

emp_devp 中的 salary 字段全部設置為 0,用于驗證關聯更新。

關聯更新

我們首先查看一下 emp_devp 中的數據:

SELECT emp_id, emp_name, salary, bonus, emailFROM emp_devpORDER BY emp_id;emp_id|emp_name|salary|bonus |email |------+--------+------+-------+-------------------+ 9|趙云 | 0.00|6000.00|[email protected] | 10|廖化 | 0.00| |[email protected] | 11|關平 | 0.00| |[email protected]| 12|趙氏 | 0.00| |[email protected] | 13|關興 | 0.00| |[email protected]| 14|張苞 | 0.00| |[email protected]| 15|趙統 | 0.00| |[email protected]| 16|周倉 | 0.00| |[email protected]| 17|馬岱 | 0.00| |[email protected] |

然后我們通過 emp_id 字段關聯 employee 表更新 emp_devp 中的數據,包括 salary、bonus 以及 email,數據來自 employee。

UPDATE emp_devp edSET ed.salary = e.salary, ed.bonus = e.bonus, ed.email = e.emailFROM employee e WHERE e.emp_id = ed.emp_id;

Oracle 使用了 UPDATE FROM 語法實現關聯更新,其他數據庫可能使用 UPDATE JOIN 語法。

現在我們查看一下更新后的 emp_devp 數據:

SELECT emp_id, emp_name, salary, bonus, emailFROM emp_devpORDER BY emp_id;emp_id|emp_name|salary |bonus |email |------+--------+--------+-------+-------------------+ 9|趙云 |15000.00|6000.00|[email protected] | 10|廖化 | 6500.00| |[email protected] | 11|關平 | 6800.00| |[email protected]| 12|趙氏 | 6600.00| |[email protected] | 13|關興 | 7000.00| |[email protected]| 14|張苞 | 6500.00| |[email protected]| 15|趙統 | 6000.00| |[email protected]| 16|周倉 | 8000.00| |[email protected]| 17|馬岱 | 5800.00| |[email protected] |

在此之前的版本中,我們可以使用子查詢或者 MERGE 語句實現相同的效果:

UPDATE emp_devp edSET (salary, bonus, email) = (SELECT salary, bonus, email FROM employee e WHERE e.emp_id = ed.emp_id)WHERE EXISTS (SELECT 1 FROM employee e WHERE e.emp_id = ed.emp_id);MERGE INTO emp_devp edUSING employee eON (e.emp_id = ed.emp_id)WHEN MATCHED THEN UPDATE SET ed.salary = e.salary, ed.bonus = e.bonus, ed.email = e.email;

如果更新操作的數據源來自多個表,可以通過 JOIN 將它們進行連接。以下示例增加了 job 表作為數據更新的來源:

UPDATE emp_devp edSET ed.salary = e.salary, ed.bonus = e.bonus, ed.email = e.emailFROM employee e JOIN job j ON (e.job_id = j.job_id AND j.job_title = '程序員')WHERE e.emp_id = ed.emp_id;

以上語句只會更新 emp_devp 中職位名稱為“程序員”的員工信息。

關聯刪除

我們同樣可以基于 employee 中的數據刪除 emp_devp 中的員工。以下示例使用 emp_id 作為兩個表的關聯字段,同時還增加了一個額外的過濾條件:

DELETE emp_devp edFROM employee eWHERE ed.emp_id = e.emp_idAND e.salary < 10000;

查看 emp_devp 中的數據:

SELECT emp_id, emp_name, salary, bonus, emailFROM emp_devpORDER BY emp_id;EMP_ID|EMP_NAME|SALARY|BONUS|EMAIL |------+--------+------+-----+------------------+ 9|趙云 | 15000| 6000|[email protected]|

如果刪除操作的數據源來自多個表,可以通過 JOIN 將它們進行連接。以下示例增加了 job 表作為數據刪除的來源:

DELETE emp_devp edFROM employee eJOIN job j ON j.job_id = e.job_idWHERE ed.emp_id = e.emp_idAND j.job_title = '開發經理';

到此這篇關于Oracle Database 23c新特性之關聯更新和刪除的文章就介紹到這了,更多相關Oracle Database 23c內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Oracle 數據庫
主站蜘蛛池模板: 国产一区亚洲二区三区毛片 | 色三级大全高清视频在线观看 | 国产一区二区三区四区在线观看 | 美女张开双腿让男人桶视频免费 | 男女免费观看在线爽爽爽视频 | 女人张开腿给男人桶爽免费 | 久久免费视频精品 | 亚洲在线观看免费视频 | 韩国本免费一级毛片免费 | 视频一区二区三区在线 | 亚洲一区二区三 | 国产成人毛片亚洲精品不卡 | 成人性生免费视频 | 久久国产精品1区2区3区网页 | 亚洲资源在线 | 欧美白人猛性xxxxx交69 | 特级av毛片免费观看 | 亚洲一区 中文字幕 久久 | 日韩欧美精品在线观看 | 亚洲精品欧美 | 日韩一区国产二区欧美三 | 中文字幕福利 | 欧美a一 | 国产亚洲欧美在线人成aaaa | 国产成人精品永久免费视频 | 日韩三级在线 | 99r精品在线 | 国产欧美久久久另类精品 | 亚洲精品日韩中文字幕久久久 | 成人毛片免费视频 | 女初高中福利视频在线观看 | 欧美日韩 在线播放 | 美女张开腿给人网站 | 久久精品亚洲精品一区 | 国产成人综合精品一区 | 久草资源福利 | 国产人做人爱视频精品 | 欧美一级毛片免费看 | 亚洲最黄视频 | 久艹在线视频 | 成人午夜亚洲影视在线观看 |