Mysql 简明教程

MySQL - Insert Query

在使用 CREATE TABLE 语句在 MySQL 数据库中创建表后,我们只会得到一个仅定义了其结构的空表。要向其中填充数据,我们需要使用单独的查询手动添加记录。

The MySQL INSERT Statement

要将数据插入 MySQL 表中,我们需要使用 MySQL INSERT 语句。我们可以使用“mysql>”提示符或使用任何客户端程序(如 PHP、Java 等)将数据插入 MySQL 表中。

由于表的结构已经定义,MySQL INSERT 语句只接受符合表结构的数据。插入表中的数据必须具有相同的数据类型,满足约束(如果有),等等。如果插入的数据不满足这些条件,INSERT INTO 语句将显示错误。

Syntax

以下是 MySQL INSERT 语句的语法 −

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);

要插入字符串值,需要将所有值放入双引号或单引号中。例如 "value"

Inserting Data from the Command Prompt

要从命令提示符插入数据,我们将使用 SQL INSERT INTO 语句将数据插入 MySQL 表中。

Example

首先,让我们使用以下查询创建一个名为 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 );

Verification

我们可以使用如下所示的语句验证是否插入了数据−

SELECT * FROM CUSTOMERS;

所生成的 CUSTOMERS 表如下所示−

Inserting Data Into a Table Using Another Table

有时,我们只需要将数据从数据库中的一个现有表复制到同一数据库中的另一个表中。有各种方法可以做到这一点−

  1. Using INSERT…​ SELECT

  2. Using INSERT…​ TABLE

INSERT…​ SELECT Statement

我们可以通过对另一个表的 select 语句将数据填充到一个表中;前提是另一个表具有一组字段,这些字段是填充第一个表所必需的。

以下是语法 −

INSERT INTO table_name1 [(column1, column2, ... columnN)]
SELECT column1, column2, ...columnN
FROM table_name2
[WHERE condition];

Example

在以下查询中,我们正在使用与 CUSTOMERS 表相同的结构创建一个另一个表 CUSTOMERS_Copy

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;

Output

这会产生以下输出 −

Query OK, 7 rows affected (0.01 sec)
Records: 7  Duplicates: 0  Warnings: 0

Verification

执行以下查询以验证是否已从 CUSTOMERS 表中插入记录 −

SELECT * FROM CUSTOMERS_Copy;

所获得的 CUSTOMERS_Copy 表如下所示−

INSERT…​TABLE Statement

另一方面,我们不用选择特定的列,而是可以使用 INSERT…​TABLE 语句将一个表的内容插入到另一个表中。

以下是执行此操作的语法 −

INSERT INTO table1 TABLE table2;

Example

在本例中,让我们使用我们在前面的示例中创建的同一个 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;

Output

此查询将生成以下输出 −

Query OK, 7 rows affected (0.01 sec)
Records: 7  Duplicates: 0  Warnings: 0

Verification

我们可以使用 SELECT 语句检索一个表的内容。您可以使用如下所示的语句验证是否插入了数据−

SELECT * FROM CUSTOMERS_dummy;

所获得的 CUSTOMERS_dummy 表如下所示−

INSERT …​ SET

使用 INSERT…​SET 语句,可以通过向选定列设置值来插入记录。以下是此语句的语法:

INSERT INTO table_name SET column_name1 = value1, column_name2=value2,......;

其中,table_name 是需要向其中插入记录的表的名称,并且 column_name1 = value1、column_name2 = value2 […​] 是选定的列名称和各自的值。

Example

以下查询使用 INSERT…​SET 语句将记录插入 CUSTOMERS 表中。在此,我们仅向 ID、NAME 和 AGE 列传递值(其余值将为 NULL):

INSERT INTO CUSTOMERS
SET ID = 8, NAME = 'Sarmista', AGE = 35;

Verification

如果您使用 SELECT 语句检索 CUSTOMERS 表的内容,则可以观察到插入的行,如下所示:

SELECT * FROM CUSTOMERS WHERE ID=8;

Output

以下是以上程序的输出 −

Inserting Data Using a Client Program

除了使用 MySQL 查询将数据插入 MySQL 数据库的表中之外,还可以使用客户端程序来执行 INSERT 操作。

Syntax

以下是此操作在各种编程语言中的语法 −

Example

以下是这些程序 −