Sql 简明教程

SQL - INSERT Query

The SQL INSERT INTO Statement

SQL INSERT INTO Statement 用于向数据库中的表中添加新数据行。几乎所有 RDBMS 都提供此 SQL 查询,用于向数据库表中添加记录。

我们在表中使用此语句插入每条记录的值都应该与相应列属于相同的数据类型,并满足该列的约束(如果有)。使用插入语句传递的值应该匹配表中的列数,或者匹配当前查询中提及的列数。如果任何这些条件不满足,此语句会生成错误。

Syntax

SQL INSERT INTO 语句有两个基本语法,如下所示−

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

此处,column1、column2、column3、…​columnN 是要向其插入数据的表中的列名。

还有另一个 INSERT INTO 语句的语法,它只能指定列值,而不指定列名。但是,确保这些值按表中的列顺序排列。

以下是 SQL INSERT 查询的第二个语法 −

INSERT INTO TABLE_NAME
VALUES (value1,value2...valueN);

Example

让我们创建一个名为 CUSTOMERS 的表,在 MySQL 数据库中使用 CREATE TABLE 语句,如下所示 −

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)
);

以下 SQL INSERT INTO 语句将在空 CUSTOMERS 表中创建三条记录。

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 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Kaushik', 23, 'Kota', 2000.00 );

我们还可以使用以下查询插入 multiple rows at once ,如下所示 −

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 );

以下查询使用第二个语法在 CUSTOMERS 表中添加另一条记录,如下所示 −

INSERT INTO CUSTOMERS
VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );

Verification

若要检查记录是否已插入 CUSTOMERS 表,请使用 SELECT 查询 −

SELECT * FROM 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

Inserting Data into a Table Using Another

有时,您只需将数据从现有表复制到同一数据库中的另一张表中。SQL 提供了便捷的方法来执行此操作 −

  1. Using INSERT…​ SELECT

  2. Using INSERT…​ TABLE

The INSERT…​ SELECT Statement

您可以通过使用现有另一张表的 select 语句将数据填充到一张表中;前提是另一张表具有一组字段,为填充第一张表所必需。

以下是语法 −

INSERT INTO first_table_name [(column_name(s))]
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];

Example

以下语句将创建另一张表,其名称为 BUYERS ,与 CUSTOMERS 表的结构相同 −

CREATE TABLE BUYERS(
   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 表中的所有记录插入到 BUYERS 表中。

INSERT INTO BUYERS (ID, NAME, AGE, ADDRESS, SALARY)
SELECT * FROM CUSTOMERS;

Output

输出将显示为:

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

Verification

若要验证记录是否正确插入,请使用以下 SELECT 查询 −

SELECT * FROM BUYERS;

该表将显示包含与 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

The INSERT…​ TABLE Statement

如果您有两张表结构完全相同,那么您可以使用 INSERT…​TABLE 语句将一张表的内容插入到另一张表中,而无需选择特定列。

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

INSERT INTO first_table_name TABLE second_table_name;

Example

在此示例中,让我们使用我们在前一个示例中创建的相同 CUSTOMERS 表,并将其内容复制到另一张名为 SHOPPERS 的表中。为此,让我们创建表 SHOPPERS,其结构与 CUSTOMERS 表相同 −

CREATE TABLE SHOPPERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

现在使用以下语句将 CUSTOMERS 表中的所有记录插入到 SHOPPERS 表中 −

INSERT INTO SHOPPERS TABLE CUSTOMERS;

Output

此查询将生成以下输出 −

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

Verification

如果您使用下面显示的 SELECT 语句验证 SHOPPERS 表的内容 −

SELECT * FROM SHOPPERS;

该表将显示新插入的值,如下 −

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 Data Only in Specified Columns

您可以仅从一张表中选择特定列来插入到另一张表中。以下 SQL 语句将从 CUSTOMERS 表中插入一条包含 "ID"、"NAME" 和 "AGE" 的新记录到 BUYERS 表中。

在继续之前,让我们先按照以下方法清除 BUYERS 表中的所有记录:

DELETE FROM BUYERS;

现在我们有了一个空的 BUYERS 表,让我们使用以下 SQL 语句:

INSERT INTO BUYERS (ID, NAME, AGE)
SELECT ID, NAME, AGE FROM CUSTOMERS;

Output

此查询将生成以下输出 −

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

Verification

如果您使用下面显示的 SELECT 语句验证 BUYERS 表的内容 −

SELECT * FROM BUYERS;

该表将显示新插入的值,如下 −

ID

NAME

AGE

ADDRESS

SALARY

1

Ramesh

32

2

Khilan

25

3

Kaushik

23

4

Chaitali

25

5

Hardik

27

6

Komal

22

7

Muffy

24