sql高級語法

一、mysql

1、on DUPLICATE key update

on DUPLICATE key update completed_value=values(completed_value):這是 MySQL 中的 INSERT ... ON DUPLICATE KEY UPDATE 語法,表示如果在插入過程中遇到了唯一鍵衝突,則執行更新操作。
在這裏,如果 a_id 和 m_id 的組合鍵有重複,則更新 completed_value 字段的值爲當前插入的值。

 2、insert ignore into table;

INSERT IGNORE語句用於向數據庫表中插入數據,同時忽略重複鍵錯誤。如果插入的行造成了重複鍵違規,INSERT IGNORE語句會忽略新的重複行,並繼續插入下一行數據。

以下是INSERT IGNORE語句的一般語法:

sql
INSERT IGNORE INTO 表名 (列1, 列2, ...)
VALUES (值1, 值2, ...), (值1, 值2, ...), ...;
將表名替換爲你的表的名稱,並指定要插入的列名和對應的值。

例如:

sql
INSERT IGNORE INTO my_table (id, name) 
VALUES (1, 'John'), (2, 'Alice'), (3, 'Bob');

 3、Analyze table 表名;

ANALYZE TABLE語句用於分析數據庫表的統計信息,並更新數據庫中的數據字典,以幫助優化查詢性能。它會收集關於表中數據分佈和結構的信息,以便數據庫查詢優化器更好地選擇執行查詢的最有效方式。

通常,當數據庫中的數據分佈或數據量發生變化時,執行ANALYZE TABLE語句是有益的。這可以確保數據庫的查詢執行計劃基於最新的統計信息,從而提高查詢的執行效率。

 4、truncate table 表名

TRUNCATE TABLE 是一種 SQL 操作,用於刪除表中的所有數據,並釋放存儲空間。與 DELETE 不同,TRUNCATE TABLE 是一種快速且資源消耗較低的操作,因爲它不會逐行刪除數據,而是直接清空整個表,並重置自增長的計數器(如果有的話)。

這個操作的作用主要包括以下幾點:

清空表數據: TRUNCATE TABLE 將刪除表中的所有行,使得表不包含任何數據。

釋放存儲空間: 刪除表中的數據後,存儲在數據庫中的空間會被釋放出來,從而可以被其他數據使用。

重置自增長計數器(如果有的話): 如果表中有自增長列(例如 MySQL 中的 AUTO_INCREMENT),TRUNCATE TABLE 操作會將這些列的計數器重置爲起始值,通常爲 1。

需要注意的是,TRUNCATE TABLE 操作是一個 DDL(數據定義語言)操作,而不是 DML(數據操作語言)操作,因此它不會被數據庫的事務管理所影響,並且無法撤銷。另外,由於 TRUNCATE TABLE 是直接操作表結構而不是行數據,所以相比於 DELETE,它的執行速度更快,但是無法在刪除前執行觸發器,也不支持帶條件刪除。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章