DML數(shù)據(jù)操作語言

DML(Data Manipulation Language):數(shù)據(jù)操作語言,用來定義數(shù)據(jù)庫記錄(數(shù)據(jù)); INSERT、 UPDATE、 DELETE
DML是對表中的數(shù)據(jù)進行增、刪、改的操作。

1、INSERT語句

用于向表中插入新記錄

  • 語法:
    • INSERT INTO table_name VALUES (value1,value2,value3,...) # 無需指定列名可以插入多行VALUES
    • INSERT INTO table_name (column1,,column2,column3,...) VALUES (value1,value2,value3,...) # 需要指定插入的列名
  • 示例
# 無需指定列名
mysql> insert into user values (1,"張三",25,"男");
Query OK, 1 row affected (0.00 sec)
# 查詢數(shù)據(jù)
mysql> select * from user;
+------+--------+------+--------+
| id   | name   | age  | gender |
+------+--------+------+--------+
|    1 | 張三   |   25 | 男     |
+------+--------+------+--------+
1 row in set (0.01 sec)

# 插入多條數(shù)據(jù)
mysql> insert into user values (3,"趙武",25,"男"),(4,"小六",20,"男");
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+--------+------+--------+
| id   | name   | age  | gender |
+------+--------+------+--------+
|    1 | 張三   |   25 | 女     |
|    2 | 李四   |   30 | 女     |
|    3 | 趙武   |   25 | 男     |
|    4 | 小六   |   20 | 男     |
+------+--------+------+--------+
4 rows in set (0.00 sec)

# 指定具體列名
mysql> insert into user (id,name) values (2,"李四");
Query OK, 1 row affected (0.00 sec)
# 查詢數(shù)據(jù)
mysql> select * from user;
+------+--------+------+--------+
| id   | name   | age  | gender |
+------+--------+------+--------+
|    1 | 張三   |   25 | 男     |
|    2 | 李四   | NULL | NULL   |
+------+--------+------+--------+
2 rows in set (0.00 sec)

2、UPDATE語句

用于更新表中的記錄

  • 語法
    • UPDATE table_name SET column1=value1,column2=value2,...
    • UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value
  • 示例
# 無條件修改所有數(shù)據(jù)
mysql> update user set gender="女";
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from user;
+------+--------+------+--------+
| id   | name   | age  | gender |
+------+--------+------+--------+
|    1 | 張三   |   25 | 女     |
|    2 | 李四   | NULL | 女     |
+------+--------+------+--------+
2 rows in set (0.00 sec)

# 帶條件修改數(shù)據(jù)
mysql> update user set age=30 where id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from user;
+------+--------+------+--------+
| id   | name   | age  | gender |
+------+--------+------+--------+
|    1 | 張三   |   25 | 女     |
|    2 | 李四   |   30 | 女     |
+------+--------+------+--------+
2 rows in set (0.01 sec)

3、DELETE語句

用于刪除表中的記錄

  • 語法
    • DELETE FROM table_name # 刪除表中所有數(shù)據(jù)
    • DELETE FROM table_name WHERE column=value # 根據(jù)條件刪除
  • 示例
mysql> delete from user where name="趙武";
Query OK, 1 row affected (0.01 sec)

mysql> select * from user;
+------+--------+------+--------+
| id   | name   | age  | gender |
+------+--------+------+--------+
|    1 | 張三   |   25 | 女     |
|    2 | 李四   |   30 | 女     |
|    4 | 小六   |   20 | 男     |
+------+--------+------+--------+
3 rows in set (0.00 sec)

4、TRUNCATE語句

truncate的作用是清空表或者說是截斷表,只能作用于表

  • 語法

    • truncate table tab_name #刪除數(shù)據(jù),并保留表結構,又會自動縮減數(shù)據(jù)文件的大小
    • truncate tab_name
  • truncate與drop,delete的對比

    • truncate與drop是DDL語句,執(zhí)行后無法回滾;delete是DML語句,可回滾。
    • truncate只能作用于表;delete,drop可作用于表、視圖等。
    • truncate會清空表中的所有行,但表結構及其約束、索引等保持不變;drop會刪除表的結構及其所依賴的約束、索引等。
    • truncate會重置表的自增值;delete不會。
    • truncate不會激活與表有關的刪除觸發(fā)器;delete可以。
    • truncate后會使表和索引所占用的空間會恢復到初始大小;delete操作不會減少表或索引所占用的空間,drop語句將表所占用的空間全釋放掉。
  • truncate使用場景及注意事項

    表數(shù)據(jù)完全不需要時可以用truncate。如果想刪除部分數(shù)據(jù)用delete,注意帶上where子句;如果想刪除表,當然用drop;如果想保留表而將所有數(shù)據(jù)刪除且和事務無關,用truncate即可;如果和事務有關,或者想觸發(fā)trigger,還是用delete;如果是整理表內部的碎片,可以用truncate然后再重新插入數(shù)據(jù)。

    • truncate無法通過binlog回滾。
    • truncate會清空所有數(shù)據(jù)且執(zhí)行速度很快。
    • truncate不能對有外鍵約束引用的表使用。
    • 執(zhí)行truncate需要drop權限,不建議給賬號drop權限。
    • 執(zhí)行truncate前一定要再三檢查確認,最好提前備份下表數(shù)據(jù)。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容