mysql倍增表的内容_MySQL入门(7)——表数据的增、删、改
MySQL入門(7)——表數(shù)據(jù)的增、刪、改
插入數(shù)據(jù)
使用INSERT···VALUES語句插入數(shù)據(jù)
INSERT語句最常用的格式是INSERT···VALUES:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] 數(shù)據(jù)表名 [(字段名,...)]
VALUES ({值 | DEFAULT},...),(...),...
[ON DUPLICATE KEY UPDATE 字段名=表達式,...]
參數(shù)說明如下:
[LOW_PRIORITY | DELAYED | HIGH_PRIORITY]:可選項,其中LOW_PRIORITY是INSERT、UPDATE和DELETE都支持的可選修飾符,通常應用在多用戶訪問數(shù)據(jù)庫的情況下,用于指示MySQL降低INSERT、DELETE或UPDATE的執(zhí)行優(yōu)先級;DELAYED是INSERT語句支持的可選修飾符,用于指定MySQL將待插入的行數(shù)據(jù)放到一個緩沖器中,直到待插入數(shù)據(jù)的表空閑時,才會真正執(zhí)行插入;HIGH_PRIORITY是INSERT和SELECT語句支持的可選修飾符,用于指定INSERT和SELECT操作優(yōu)先執(zhí)行。
[IGNORE]:可選項,表示執(zhí)行INSERT語句時,所出現(xiàn)的錯誤都會被作為警告處理。
[INTO] 數(shù)據(jù)表名:可選項,用于指定被操作的數(shù)據(jù)表。
[(字段名,...)]:可選項,當不指定該項時,表示要向表中所有列插入數(shù)據(jù),否則表示向表的指定列插入數(shù)據(jù)。
VALUES({值 | DEFAULT},...),(...),...:必選項,用于指定需要插入的數(shù)據(jù)清單,其順序必須與字段的順序相對應。其中每一列的數(shù)據(jù)可以是常量、變量、表達式或NULL,但是數(shù)據(jù)類型必須和字段類型匹配;也可以直接使用DEFAULT關鍵字,表示該列插入默認值,但是使用的前提是已經(jīng)明確默認值,否則會出錯。
ON DUPLICATE KEY UPDATE子句:可選項,用于指定向表中插入行時,如果導致UNIQUE KEY或PRIMARY KEY出現(xiàn)重復值,系統(tǒng)會根據(jù)UPDATE后的語句修改表中原有行的數(shù)據(jù)。
使用INSERT···SET語句插入數(shù)據(jù)
這種語法格式用于通過直接給表中的某些字段指定對應的值來實現(xiàn)插入指定數(shù)據(jù),對于未指定的字段將采用默認值進行添加。語法格式如下:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] 數(shù)據(jù)表名
SET 字段名={值 | DEFAULT},...
[ON DUPLICATE KEY UPDATE 字段名=表達式,...]
參數(shù)說明如下:
[LOW_PRIORITY | DELAYED | HIGH_PRIORITY] :可選項,其作用與INSERT···VALUES語句相同。
[INTO]數(shù)據(jù)表名:用于指定被操作的數(shù)據(jù)表,其中[INTO]為可選項,可省略。
SET 字段名={值 | DEFAULT}:用于給數(shù)據(jù)表中的某些字段設置要插入的值。
ON DUPLICATE KEY UPDATE子句:可選項,其作用與INSERT···VALUES語句相同。
插入查詢結(jié)果
MySQL支持將查詢結(jié)果插入到指定的數(shù)據(jù)表中,通過INSERT···SELECT語句實現(xiàn):
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] 數(shù)據(jù)表名 [(字段名,...)]
SELECT ...
[ON DUPLICATE KEY UPDATE 字段名=表達式,...]
參數(shù)說明:
[LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]:可選項,其作用與INSERT···VALUE語句相同。
[INTO] 數(shù)據(jù)表名:用于指定被操作的數(shù)據(jù)表,其中[INTO]為可選項,可省略。
[(字段名,...)]:可選項,當不指定該項時,表示要向表中所有列插入數(shù)據(jù),否則表示向表的指定列插入數(shù)據(jù)。
SELECT子句:用于快速地從一個或多個表中取出數(shù)據(jù),并將這些數(shù)據(jù)作為行數(shù)據(jù)插入到目標數(shù)據(jù)表中。SELECT子句返回結(jié)果集中的字段數(shù)、字段類型必須與目標數(shù)據(jù)表完全一致。
ON DUPICATE KEY UPDATE子句:可選項,其作用與INSERT···VALUES語句相同。
修改數(shù)據(jù)
使用UPDATE語句:
UPDATE [LOW_PRIORITY] [IGNORE] 數(shù)據(jù)表名
SET 字段1=值1[,字段2=值2...]
[WHERE 條件表達式]
[ORDER BY...]
[LIMIT 行數(shù)]
參數(shù)說明:
[LOW_PRIORITY]:可選項,表示多用戶訪問數(shù)據(jù)庫的情況下可用于延遲UPDATE操作,知道沒有別的用戶再從表中讀取數(shù)據(jù)為止。該過程僅適用于表級鎖的存儲引擎(如IyISAM、MEMORY和MERGE)。
[IGNORE]:MySQL中,通過UPDATE語句更新表中多行數(shù)據(jù)時,如果出現(xiàn)錯誤,則整個UPDATE語句操作都會被取消,錯誤發(fā)生前更新的所有行將被恢復到原先的值。若需要在發(fā)生錯誤后繼續(xù)更新,需要IGNORE關鍵詞。
SET子句:必選項,用于指定表中要修改的字段名及其字段值。其中的值可以是表達式,也可以是該字段所對應的默認值。若指定默認值,則使用關鍵詞DEFAULT指定。
WHERE子句:可選項,用于限定表中要修改的行,若不指定該子句,則UPDATE語句會更新所有行。
ORDER BY子句:可選項,用于限定表中的行被修改的次序。
LIMIT子句:可選項,用于限定被修改的行數(shù)。
刪除數(shù)據(jù)
MySQL可以使用DELETE語句或TRUNCATE TABLE語句刪除表中的一行或多行數(shù)據(jù)。
通過DELETE語句刪除數(shù)據(jù)
語法格式如下:
DELETE [LOW_PRIOITY] [QUICK] [IGNORE] FROM 數(shù)據(jù)表名
[WHERE 條件表達式]
[ORDER BY ...]
[LIMIT 行數(shù)]
參數(shù)說明如下:
[LOW_PRIOITY]:可選項,表示多用戶訪問數(shù)據(jù)庫的情況下可用于延遲UPDATE操作,知道沒有別的用戶再從表中讀取數(shù)據(jù)為止。該過程僅適用于表級鎖的存儲引擎(如IyISAM、MEMORY和MERGE)。
[QUICK]:可選項,用于加快部分種類的刪除操作速度。
[IGNORE]:MySQL中,通過DELETE語句刪除表中多行數(shù)據(jù)時,如果出現(xiàn)錯誤,則整個DELETE語句操作都會被取消,錯誤發(fā)生前更新的所有行將被恢復到原先的值。若需要在發(fā)生錯誤后繼續(xù)刪除,需要IGNORE關鍵詞。
數(shù)據(jù)表名:用于指定要刪除的數(shù)據(jù)表的表名。
WHERE子句:可選項,用于限定表中要刪除的行,若不指定該子句,則DELETE語句會刪除表的所有行。
ORDER BY子句:可選項,用于限定表中的行被刪除的次序。
LIMIT子句:可選項,用于限定被刪除的行數(shù)。
通過TRUNCATE TABLE語句刪除數(shù)據(jù)
若需要從表中刪除所有行,可使用TRUNCATE TABLE語句:
TRUNCATE [TABLE] 數(shù)據(jù)表名
由于TRUNCATE TABLE語句會刪除數(shù)據(jù)表中的所有數(shù)據(jù),并且無法恢復,因此使用TRUNCATE TABLE語句時需謹慎。
DELETE語句和TRUNCATE TABLE語句的區(qū)別
DELETE語句與TRUNCATE TABLE語句具有如下區(qū)別:
使用TRUNCATE TABLE語句后,表中的AUTO_INCREMENT計數(shù)器會被重新置為該列的初始值。
對于參與了索引和試圖的表,不能使用TRUNCATE TABLE語句來刪除數(shù)據(jù),應當使用DELETE語句。
TRUNCATE TABLE操作與DELETE操作相比,使用的系統(tǒng)和事務日志資源少。DELETE語句每刪除一行都會在事務日志中添加一條記錄,而TRUNCATE TABLE語句是通過釋放存儲表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù)的,僅在事務日志中記錄頁的釋放。
總結(jié)
以上是生活随笔為你收集整理的mysql倍增表的内容_MySQL入门(7)——表数据的增、删、改的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在屋顶发现跟卧室相同位置放竹席什么意思
- 下一篇: python列表对象相同_Python中