
- MySQL 基礎
- MySQL - 首頁
- MySQL - 簡介
- MySQL - 特性
- MySQL - 版本
- MySQL - 變數
- MySQL - 安裝
- MySQL - 管理
- MySQL - PHP 語法
- MySQL - Node.js 語法
- MySQL - Java 語法
- MySQL - Python 語法
- MySQL - 連線
- MySQL - Workbench
- MySQL 資料庫
- MySQL - 建立資料庫
- MySQL - 刪除資料庫
- MySQL - 選擇資料庫
- MySQL - 顯示資料庫
- MySQL - 複製資料庫
- MySQL - 資料庫匯出
- MySQL - 資料庫匯入
- MySQL - 資料庫資訊
- MySQL 使用者
- MySQL - 建立使用者
- MySQL - 刪除使用者
- MySQL - 顯示使用者
- MySQL - 修改密碼
- MySQL - 授權
- MySQL - 顯示許可權
- MySQL - 收回許可權
- MySQL - 鎖定使用者帳戶
- MySQL - 解鎖使用者帳戶
- MySQL 表
- MySQL - 建立表
- MySQL - 顯示錶
- MySQL - 修改表
- MySQL - 重命名錶
- MySQL - 克隆表
- MySQL - 清空表
- MySQL - 臨時表
- MySQL - 修復表
- MySQL - 描述表
- MySQL - 新增/刪除列
- MySQL - 顯示列
- MySQL - 重新命名列
- MySQL - 表鎖
- MySQL - 刪除表
- MySQL - 派生表
- MySQL 查詢
- MySQL - 查詢
- MySQL - 約束
- MySQL - 插入查詢
- MySQL - SELECT 查詢
- MySQL - UPDATE 查詢
- MySQL - DELETE 查詢
- MySQL - REPLACE 查詢
- MySQL - INSERT IGNORE
- MySQL - INSERT ON DUPLICATE KEY UPDATE
- MySQL - INSERT INTO SELECT
- MySQL 運算子和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 運算子
- MySQL - OR 運算子
- MySQL - LIKE 運算子
- MySQL - IN 運算子
- MySQL - ANY 運算子
- MySQL - EXISTS 運算子
- MySQL - NOT 運算子
- MySQL - NOT EQUAL 運算子
- MySQL - IS NULL 運算子
- MySQL - IS NOT NULL 運算子
- MySQL - BETWEEN 運算子
- MySQL - UNION 運算子
- MySQL - UNION vs UNION ALL
- MySQL - MINUS 運算子
- MySQL - INTERSECT 運算子
- MySQL - INTERVAL 運算子
- MySQL 連線
- MySQL - 使用連線
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自連線
- MySQL - DELETE JOIN
- MySQL - UPDATE JOIN
- MySQL - UNION vs JOIN
- MySQL 觸發器
- MySQL - 觸發器
- MySQL - 建立觸發器
- MySQL - 顯示觸發器
- MySQL - 刪除觸發器
- MySQL - BEFORE INSERT 觸發器
- MySQL - AFTER INSERT 觸發器
- MySQL - BEFORE UPDATE 觸發器
- MySQL - AFTER UPDATE 觸發器
- MySQL - BEFORE DELETE 觸發器
- MySQL - AFTER DELETE 觸發器
- MySQL 資料型別
- MySQL - 資料型別
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正則表示式
- MySQL - 正則表示式
- MySQL - RLIKE 運算子
- MySQL - NOT LIKE 運算子
- MySQL - NOT REGEXP 運算子
- MySQL - regexp_instr() 函式
- MySQL - regexp_like() 函式
- MySQL - regexp_replace() 函式
- MySQL - regexp_substr() 函式
- MySQL 函式 & 運算子
- MySQL - 日期和時間函式
- MySQL - 算術運算子
- MySQL - 數值函式
- MySQL - 字串函式
- MySQL - 聚合函式
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事務
- MySQL - 使用序列
- MySQL - 處理重複項
- MySQL - SQL 注入
- MySQL - 子查詢
- MySQL - 註釋
- MySQL - 檢查約束
- MySQL - 儲存引擎
- MySQL - 將表匯出到 CSV 檔案
- MySQL - 將 CSV 檔案匯入資料庫
- MySQL - UUID
- MySQL - 公共表表達式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分割槽
- MySQL - 垂直分割槽
- MySQL - 遊標
- MySQL - 儲存函式
- MySQL - SIGNAL
- MySQL - RESIGNAL
- MySQL - 字元集
- MySQL - 校對
- MySQL - 萬用字元
- MySQL - 別名
- MySQL - ROLLUP
- MySQL - 今日日期
- MySQL - 字面量
- MySQL - 儲存過程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 標準差
- MySQL - 查詢重複記錄
- MySQL - 刪除重複記錄
- MySQL - 選擇隨機記錄
- MySQL - SHOW PROCESSLIST
- MySQL - 更改列型別
- MySQL - 重置自動遞增
- MySQL - COALESCE() 函式
- MySQL 有用資源
- MySQL - 有用函式
- MySQL - 語句參考
- MySQL - 快速指南
- MySQL - 有用資源
- MySQL - 討論
MySQL - 插入查詢
在使用 CREATE TABLE 語句在 MySQL 資料庫中建立表之後,我們將只有一個空表,只有其結構已定義。要使用資料填充它,我們需要使用單獨的查詢手動新增記錄。
MySQL INSERT 語句
要將資料插入 MySQL 表中,我們需要使用 MySQL 的 INSERT 語句。我們可以使用 'mysql>' 提示符或使用任何客戶端程式(例如 PHP、Java 等)將資料插入 MySQL 表中。
由於表的結構已定義,MySQL INSERT 語句將只接受符合表結構的資料。插入表中的資料必須具有相同的資料型別,滿足約束條件(如果有)等。如果插入的資料不滿足這些條件,則 INSERT INTO 語句將顯示錯誤。
語法
以下是 MySQL INSERT 語句的語法:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);
要插入字串值,需要將所有值放在雙引號或單引號中。例如 "value"。
從命令提示符插入資料
要從命令提示符插入資料,我們將使用 SQL INSERT INTO 語句將資料插入 MySQL 表中。
示例
首先,讓我們使用以下查詢建立一個名為 CUSTOMERS 的表:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在,我們將一條記錄插入到上面建立的表中:
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
我們還可以使用以下查詢同時插入多條記錄:
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 );
即使您沒有指定列名,也可以將記錄插入資料庫,前提是查詢中逗號分隔的值與相應列的屬性匹配,如下所示:
INSERT INTO CUSTOMERS VALUES (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
驗證
我們可以使用以下語句驗證資料是否已插入:
SELECT * FROM CUSTOMERS;
生成的 CUSTOMERS 表如下所示:
ID | 姓名 (NAME) | 年齡 (AGE) | 地址 (ADDRESS) | 薪水 (SALARY) |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
使用另一個表將資料插入表中
有時,我們只需要將資料庫中一個現有表的資料複製到同一資料庫中的另一個表。有各種方法可以做到這一點:
- 使用 INSERT... SELECT
- 使用 INSERT... TABLE
INSERT... SELECT 語句
我們可以透過另一個表上的 select 語句將資料填充到表中;前提是另一個表具有一組欄位,這些欄位需要填充第一個表。
以下是語法:
INSERT INTO table_name1 [(column1, column2, ... columnN)] SELECT column1, column2, ...columnN FROM table_name2 [WHERE condition];
示例
在以下查詢中,我們正在建立另一個表 CUSTOMERS_Copy,其結構與 CUSTOMERS 表相同:
CREATE TABLE CUSTOMERS_Copy ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在,讓我們使用 INSERT...INTO 語句將記錄從 CUSTOMERS 表插入到 CUSTOMERS_Copy 表中。
INSERT INTO CUSTOMERS_Copy SELECT * from CUSTOMERS;
輸出
這將生成以下輸出:
Query OK, 7 rows affected (0.01 sec) Records: 7 Duplicates: 0 Warnings: 0
驗證
執行以下查詢以驗證記錄是否已從 CUSTOMERS 表插入:
SELECT * FROM CUSTOMERS_Copy;
獲得的 CUSTOMERS_Copy 表如下所示:
ID | 姓名 (NAME) | 年齡 (AGE) | 地址 (ADDRESS) | 薪水 (SALARY) |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
INSERT...TABLE 語句
另一方面,我們可以使用 INSERT...TABLE 語句將一個表的內容插入另一個表,而不是選擇特定列。
以下是執行此操作的語法:
INSERT INTO table1 TABLE table2;
示例
在這個例子中,讓我們使用我們在前面的例子中建立的相同的 CUSTOMERS 表,並將它的內容複製到另一個表 CUSTOMERS_dummy。
為此,首先,我們將建立與 CUSTOMERS 表結構相同的表 CUSTOMERS_dummy:
CREATE TABLE CUSTOMERS_dummy ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
使用 CUSTOMERS 表,我們將它的所有值插入到 CUSTOMERS_dummy 表中:
INSERT INTO CUSTOMERS_dummy TABLE CUSTOMERS;
輸出
此查詢將生成以下輸出:
Query OK, 7 rows affected (0.01 sec) Records: 7 Duplicates: 0 Warnings: 0
驗證
我們可以使用 SELECT 語句檢索表的內容。您可以使用如下所示的語句驗證資料是否已插入。
SELECT * FROM CUSTOMERS_dummy;
獲得的CUSTOMERS_dummy表如下所示:
ID | 姓名 (NAME) | 年齡 (AGE) | 地址 (ADDRESS) | 薪水 (SALARY) |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
INSERT ... SET
您可以使用 INSERT...SET 語句透過為選定的列設定值來插入記錄。以下是此語句的語法:
INSERT INTO table_name SET column_name1 = value1, column_name2=value2,......;
其中,table_name 是您需要插入記錄的表的名稱,而 column_name1 = value1, column_name2 = value2 ...... 是選定的列名及其相應的值。
如果您使用 INSERT ... SET 語句將值插入表中,並且只為某些列提供值,則其餘列的值將為 NULL。
示例
以下查詢使用 INSERT...SET 語句將記錄插入 CUSTOMERS 表中。這裡,我們只為 ID、NAME 和 AGE 列傳遞值(其餘值將為 NULL):
INSERT INTO CUSTOMERS SET ID = 8, NAME = 'Sarmista', AGE = 35;
驗證
如果您使用 SELECT 語句檢索 CUSTOMERS 表的內容,您可以觀察到如下所示的插入行:
SELECT * FROM CUSTOMERS WHERE ID=8;
輸出
以上程式的輸出如下:
ID | 姓名 (NAME) | 年齡 (AGE) | 地址 (ADDRESS) | 薪水 (SALARY) |
---|---|---|---|---|
8 | Sarmista | 35 | NULL | NULL |
使用客戶端程式插入資料
除了使用 MySQL 查詢將資料插入 MySQL 資料庫中的表外,我們還可以使用客戶端程式執行 INSERT 操作。
語法
以下是此操作在各種程式語言中的語法:
要在 PHP 程式中將資料插入 MySQL 表,我們需要使用mysqli函式query()執行 INSERT 語句,如下所示:
$sql = "INSERT INTO tutorials_tbl VALUES(1,'Learn MySQL','Mahesh', NOW())"; $mysqli->query($sql);
要在 Node.js 程式中將資料插入 MySQL 表,我們需要使用mysql2庫的query函式執行 INSERT 語句,如下所示:
sql = "INSERT INTO tutorials_tbl VALUES(1, 'Learn PHP', 'John Paul', NOW())"; con.query(sql)
要在 Java 程式中將資料插入 MySQL 表,我們需要使用JDBC函式executeUpdate()執行 INSERT 語句,如下所示:
String sql = "INSERT INTO tutorials_tbl VALUES (1, 'Learn PHP', 'John Paul', NOW());"; st.executeUpdate(sql);
要在 Python 程式中將資料插入 MySQL 表,我們需要使用MySQL Connector/Python的execute()函式執行 INSERT 語句,如下所示:
sql = "INSERT INTO tutorials_tbl VALUES (1, 'Learn PHP', 'John Paul', '2023-3-28')" cursorObj.execute(sql)
示例
以下是程式:
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'password'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli->connect_errno ) { printf("Connect failed: %s
", $mysqli->connect_error); exit(); } $sql = "INSERT INTO tutorials_tbl VALUES(1,'Learn MySQL','Mahesh', NOW())"; if($result = $mysqli->query($sql)){ printf("Data inserted successfully..!"); } if($mysqli->error){ printf("Failed..!" , $mysqli->error); } $mysqli->close();
輸出
獲得的輸出如下:
Data inserted successfully..!
var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "Nr5a0204@123" }); //Connecting to MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); //Creating a Database sql = "CREATE DATABASE IF NOT EXISTS TUTORIALS" con.query(sql); //Selecting a Database sql = "USE TUTORIALS" con.query(sql); //Creating a Table sql = "CREATE TABLE IF NOT EXISTS tutorials_tbl(tutorial_id INT NOT NULL PRIMARY KEY, tutorial_title VARCHAR(100) NOT NULL, tutorial_author VARCHAR(40) NOT NULL, submission_date DATE)"; con.query(sql); //Inserting records into table sql = "INSERT INTO tutorials_tbl(tutorial_id, tutorial_title, tutorial_author, submission_date) VALUES(1, 'Learn PHP', 'John Paul', NOW()), (2, 'Learn MySQL', 'Abdul S', NOW()), (3, 'JAVA Tutorial', 'Sanjay', '2007-05-06'), (4, 'Python Tutorial', 'Sasha Lee', '2016-09-04'), (5, 'Hadoop Tutorial', 'Chris Welsh', NOW())"; con.query(sql, function (err, result) { if (err) throw err; console.log(result); }); });
輸出
生成的輸出如下:
Connected! ----------------------------------- ResultSetHeader { fieldCount: 0, affectedRows: 5, insertId: 0, info: 'Records: 5 Duplicates: 0 Warnings: 3', serverStatus: 2, warningStatus: 3, changedRows: 0 }
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class InsertQuery { public static void main(String[] args) { String url = "jdbc:mysql://:3306/TUTORIALS"; String user = "root"; String password = "password"; ResultSet rs; try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); //System.out.println("Database connected successfully...!"); String sql = "INSERT INTO tutorials_tbl (tutorial_id, tutorial_title, tutorial_author, submission_date) VALUES (1, 'Learn PHP', 'John Paul', NOW());"; st.executeUpdate(sql); System.out.println("Record insered successfully...!"); System.out.println("Table records: "); String sql1 = "SELECT * FROM tutorials_tbl"; rs = st.executeQuery(sql1); while(rs.next()) { String tutorial_id = rs.getString("tutorial_id"); String tutorial_title = rs.getString("tutorial_title"); String tutorial_author = rs.getString("tutorial_author"); String submission_date = rs.getString("submission_date"); System.out.println("Id: " + tutorial_id + ", Title: " + tutorial_title + ", Author: " + tutorial_author + ", Submission_date: " + submission_date); } }catch(Exception e) { e.printStackTrace(); } } }
輸出
獲得的輸出如下所示:
Record insered successfully...! Table records: Id: 1, Title: Learn PHP, Author: John Paul, Submission_date: 2023-08-08
import mysql.connector import datetime #establishing the connection connection = mysql.connector.connect( host='localhost', user='root', password='password', database='tut' ) table_name = 'tutorials_tbl' new_tutorial_data = [ (2, 'Learn MySQL', 'Abdul S', '2023-03-28'), (3, 'JAVA Tutorial', 'Sanjay', '2007-05-06'), (4, 'Python Tutorial', 'Sasha Lee', '2016-09-04'), (5, 'Hadoop Tutorial', 'Chris Welsh', '2023-03-28'), (6, 'R Tutorial', 'Vaishnav', '2011-11-04') ] #Creating a cursor object cursorObj = connection.cursor() cursorObj.execute("truncate table tutorials_tbl") sql = "INSERT INTO tutorials_tbl VALUES (1, 'Learn PHP', 'John Paul', '2023-3-28')" cursorObj.execute(sql) insert_query = f'INSERT INTO {table_name} (tutorial_id, tutorial_title, tutorial_author, submission_date) VALUES (%s, %s, %s, %s)' cursorObj.executemany(insert_query, new_tutorial_data) connection.commit() print("Row inserted successfully.") cursorObj.close() connection.close()
輸出
以上程式碼的輸出如下:
Row inserted successfully.