
- 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 |
Learn MySQL in-depth with real-world projects through our MySQL certification course. Enroll and become a certified expert to boost your career.
使用另一个表将数据插入表中
有时,我们只需要将数据库中一个现有表的数据复制到同一数据库中的另一个表。有各种方法可以做到这一点:
- 使用 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://localhost: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.