簡介
新增和刪除資料是相當基礎的操作,可讓您控制資料庫維護的資料。 若要插入,您需針對每個新的列指定符合表格每個欄需求的項目。 若要移除,您需為表格中您想要刪除的列提供比對條件。
在本文中,我們將看看如何使用 INSERT
和 DELETE
命令,以從 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: employeeCreate 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_ci1 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_name
和 last_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)
您也可以使用 Prisma Client,透過發出 create 查詢將資料新增至表格。
使用 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 employeeWHERE first_name = 'Abigail';
Query OK, 1 row affected (0.01 sec)
此處的回傳值表示 DELETE
命令已處理,並移除單一列。
若要使用 Prisma Client 從表格中移除資料,請使用 delete 查詢。
使用 DELETE
一次移除多列
您可以透過操作 WHERE
子句中指定的選取條件,使用 DELETE
一次移除多個項目。
例如,若要依 ID 移除多列,您可以輸入類似以下的內容
DELETE FROM employeeWHERE 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
命令有效率,後者可以在不掃描表格的情況下移除資料,但有一些注意事項。
Prisma Client 使用稱為 deleteMany 的個別查詢,一次刪除多列資料。
結論
在本文中,我們討論了如何從 MySQL 表格中插入和移除資料。 首先,我們說明如何尋找表格的結構,以協助建構有效的資料插入查詢。 然後,我們使用 INSERT
命令一次插入一筆資料,以及成批插入資料。 最後,我們說明了 DELETE
命令,以根據查詢條件從表格中移除記錄。
雖然相當基本,但 INSERT
和 DELETE
命令是一些最有用的命令,可用於管理表格實際維護的資料。 了解其基本語法和操作,將使您能夠快速有效地從資料庫結構新增或移除記錄。