本篇內容包括:DML 的簡介、INSERT 命令、UPDATE 命令、DELETE 命令以及 TRUNCATE 命令的使用。
一、DML 簡介
DML(Data Manipulation Language)語句,即數據操作語句,用于操作數據庫對象中所包含的數據。
常用關鍵字包括:INSERT(添加數據語句)、UPDATE(更新數據語句)、DELETE(刪除數據語句)
二、INSERT 命令
INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES ('值1','值2','值3',...)
字段或值之間用英文逗號隔開
"字段1,字段2…"該部分可省略(省略代表所有字段都加),但添加的值必須與表結構數據列順序相對應,且數量一致
可同時插入多條數據,VALUES后面用英文逗號隔開,每個()代表一條數據
三、UPDATE 命令
UPDATE 表名 SET column_name =value[,column_name2 =value2,......] [WHERE condition];
- column_name 為要更改的數據列
- value 為修改后的數據,可以為變量、具體值、表達式或者嵌套的SELECT結果
- condition 為篩選條件,如不指定則修改該表的所有列數據
- WHERE 條件子包:簡單理解為有條件地從表中篩選數據
四、DELETE 命令
DELETE FROM 表名 [WHERE condition];
-
condition為篩選條件,如不指定則刪除該表的所有列數據
-
當使用不帶WHERE條件的DELETE刪除表全部數據,重新添加新數據時,自增的當前值依然從原來基礎上進行
(原因:DELETE刪除數據時,一行一行刪除,并記錄日志) -
同樣使用DELETE清空表數據,重啟mySQL服務后,InnoDB的表自增列從初始值重新計算,而MyISAM類型的表,自增列從上一個自增數據基礎上繼續。
(原因:InnoDB主鍵自增量當前最大值存在內存中,而MyISAM是存在文件里的)
五、TRUNCATE 命令
TRUNCATE [TABLE] table_name
- 用于完全清空表數據,但表結構、索引、約束等不變
- 用TRUNCATE刪除表全部數據,重新增加新數據時,自增值恢復到初始值重新開始
(原因:TRUNCATE刪除數據一下全刪,不記錄日志)
RUNCATE 和DELETE 相同點:
- 都能刪除數據,不刪除表結構,但truncate速度更快
RUNCATE 和DELETE 不同點:
- 使用TRUNCATE TABLE 重新設置AUTO_INCREMENT計數器
- 使用TRUNCATE TABLE 不會對事務有影響