分享於

簡介

新增和刪除資料是相當基礎的操作,可讓您控制資料庫維護的資料。 若要插入,您需針對每個新的指定符合表格每個需求的項目。 若要移除,您需為表格中您想要刪除的列提供比對條件。

在本文中,我們將看看如何使用 INSERTDELETE 命令,以從 MySQL 表格新增或移除資料。 我們將涵蓋語法以及稍微進階的變體,例如在單一陳述式中操作多列。

檢閱表格結構

在使用 INSERT 命令之前,您必須了解表格的結構,以便能夠符合表格欄、資料類型約束所加諸的需求。

若要尋找名為 employee 的表格結構,您可以使用 MySQL DESCRIBE 命令

DESCRIBE employee;
+-------------+-----------------+------+-----+-------------------+-------------------+
Field | Type | Null | Key | Default | Extra |
+-------------+-----------------+------+-----+-------------------+-------------------+
employee_id | bigint unsigned | NO | PRI | NULL | auto_increment |
first_name | varchar(45) | NO | | NULL | |
last_name | varchar(45) | NO | | NULL | |
last_update | timestamp | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+-------------+-----------------+------+-----+-------------------+-------------------+
4 rows in set (0.00 sec)

輸出會顯示表格的欄名稱、資料類型和預設值,以及其他資訊。

另一種方法是顯示可用於重新建立表格的資訊。 您可以使用 SHOW CREATE TABLE 命令找到此資訊

SHOW CREATE TABLE employee\G
*************************** 1. row ***************************
Table: employee
Create Table: CREATE TABLE `employee` (
`employee_id` bigint unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY `employee_id` (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

在這裡,我們使用 \G 終止符來垂直顯示輸出,以提高可讀性。 除了在表格建立期間手動設定的屬性外,輸出還會顯示由於 MySQL 預設值而設定的任何值。

這些應讓您對表格的結構有很好的了解,以便您可以正確地插入值。

使用 INSERT 新增記錄到表格

SQL INSERT 命令用於將資料列新增至現有表格。 一旦您了解表格的結構,您就可以建構一個命令,將表格的欄與您希望為新記錄插入的對應值進行比對。

命令的基本語法如下所示

INSERT INTO my_table(column1, column2)
VALUES ('value1', 'value2');

欄清單中的欄直接對應到值清單中提供的值。

例如,若要將新員工插入上述的 employee 表格中,我們可以輸入

INSERT INTO employee(first_name, last_name)
VALUES ('Bob', 'Smith');

在這裡,我們為 first_namelast_name 欄提供值,同時讓其他欄使用其預設值填入。 如果您查詢表格,您可以看到已新增新記錄

SELECT * FROM employee;
+-------------+------------+-----------+---------------------+
employee_id | first_name | last_name | last_update |
+-------------+------------+-----------+---------------------+
1 | Bob | Smith | 2021-01-26 09:56:42 |
+-------------+------------+-----------+---------------------+
1 row in set (0.00 sec)

使用 INSERT 一次新增多列

一次一個陳述式地插入記錄,比一次插入多列更耗時且效率更低。 MySQL 允許您指定多列以新增到同一個表格。 每個新列都封裝在括號中,每組括號以逗號分隔。

多記錄插入的基本語法如下所示

INSERT INTO my_table(column_name, column_name_2)
VALUES
('value', 'value2'),
('value3', 'value4'),
('value5', 'value6');

對於我們一直參考的 employee 表格,您可以透過輸入以下內容,在單一陳述式中新增四名新員工

INSERT INTO employee(first_name, last_name)
VALUES
('Abigail', 'Spencer'),
('Tamal', 'Wayne'),
('Katie', 'Singh'),
('Felipe', 'Espinosa');
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0

使用 DELETE 從表格中移除列

SQL DELETE 命令用於從表格中移除列,作為 INSERT 的互補動作。 為了從表格中移除列,您必須在 WHERE 子句中提供比對條件,以識別您希望鎖定的列。

基本語法如下所示

DELETE FROM <table>
WHERE <condition>;

例如,若要移除 employee 表格中 first_name 設定為 Abigail 的每一列,我們可以輸入以下內容

DELETE FROM employee
WHERE first_name = 'Abigail';
Query OK, 1 row affected (0.01 sec)

此處的回傳值表示 DELETE 命令已處理,並移除單一列。

使用 DELETE 一次移除多列

您可以透過操作 WHERE 子句中指定的選取條件,使用 DELETE 一次移除多個項目。

例如,若要依 ID 移除多列,您可以輸入類似以下的內容

DELETE FROM employee
WHERE employee_id in (3,4);
Query OK, 2 rows affected (0.00 sec)

您甚至可以省略 WHERE 子句,以移除給定表格中的所有列

DELETE FROM employee;
Query OK, 2 rows affected (0.00 sec)

但是請注意,使用 DELETE 清空表格資料可能不如 TRUNCATE 命令有效率,後者可以在不掃描表格的情況下移除資料,但有一些注意事項。

結論

在本文中,我們討論了如何從 MySQL 表格中插入和移除資料。 首先,我們說明如何尋找表格的結構,以協助建構有效的資料插入查詢。 然後,我們使用 INSERT 命令一次插入一筆資料,以及成批插入資料。 最後,我們說明了 DELETE 命令,以根據查詢條件從表格中移除記錄。

雖然相當基本,但 INSERTDELETE 命令是一些最有用的命令,可用於管理表格實際維護的資料。 了解其基本語法和操作,將使您能夠快速有效地從資料庫結構新增或移除記錄。

關於作者
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以來一直撰寫關於資料庫、Linux、基礎架構和開發人員工具的文章。 他目前與妻子和兩隻兔子住在柏林。 他通常不必以第三人稱寫作,這對所有相關方來說都是一種解脫。