MySQL Insert 语句

MySQL Insert 语句用于将新记录加载或添加到表中。我们使用前一篇帖子中创建的表来演示 Insert 查询。Insert 语句的基本语法如下所示。

INSERT INTO Destination Table 
          (Column1, Column2,..., ColumnN)
   VALUES (Column1_Value, Column2_Value,..., ColumnN_Value)
  • DestinationTable: 提供要在其中加载记录的完整限定名称
  • Column1…ColumnN: 它允许我们选择表中的列数。可以是一列或多列。
  • Column1_Value…ColumnN_Value: 请指定要插入的值。例如,Column1_Value 要加载到 Column1。如果省略字段名,则必须按照目标表结构的定义顺序指定值(即字段值)。

如果要为目标中的所有列加载值,请从上述语法中删除 (Column1, Column2,…, ColumnN)。

MySQL INSERT Workbench 示例

在此 Insert 语句示例中,我们将一条新记录加载到 customers 中。

USE company;
INSERT INTO customers 
           (First_Name, Last_Name, Education, Profession, Yearly_Income, Sales)
    VALUES ('Tutorial', 'Gateway', 'Masters', 'Admin', 120000, 14500.25);
MySQL Insert Statement with column names 1

注意:此处,我们没有加载 CustID 值。因为它是一个自动递增列,它会自动更新。请参阅Create Table 文章。

正如我们上面所说,如果要为所有现有列加载数据,则忽略列名(语法 2)。这意味着上面的 MySQL 语句也可以这样写:

提示:在此语句中忽略列名不是一个好习惯。因此,请始终提供列名。

with values 2

上面的 Insert 查询将数据放入 First_Name、Last_Name、Education、Occupation、Yearly_Income 和 Sales 列。每当省略字段名时,都必须按照目标表结构确定的顺序指定 column_values。

Customer Table rows 3

MySQL Insert 多行

在此示例中,我们以更传统的方式向 customer 添加多行。

USE company;
INSERT INTO customers 
	 VALUES (3, 'James', 'Smith', 'Degree', 'Developer', 85000, 38313.56);
INSERT INTO customers 
	 VALUES (4, 'Michael', 'Smith', 'BTech', 'Developer', 80000, 34810.62);
multiple records 4

在这里,我们使用 UNION ALL(或 UNION)将多条记录加载到 company 中。

USE company;
INSERT INTO customers 
    SELECT 5, 'Maria', 'Garcia', 'Hig School', 'Developer', 55000, 32013.12
UNION ALL
    SELECT 6, 'Maria', 'Rodriguez', 'Post Graduate', 'Senior Developer', 980000, 30510.62;
Insert Statement and union all 5

让我们看看输出。

Select Records 6

以下 MySQL Insert 查询是将多条记录加载到中最流行的方式。

USE company;
INSERT INTO customers 
	(First_Name, Last_Name, Education, Profession, Yearly_Income, Sales)
VALUES ('Robert', 'Smith', 'High School', 'Software Developer', 70000, 34013.12),
       ('James', 'Johnson', 'Under Graduate', 'Asst Programmer', 59000, 20510.62),
       ('John', 'Smith', 'B Tech', 'programmer', 78000, 18500.25);
MySQL Insert Multiple Values of Different Data types 7

让我们看看 customer 中存在的记录。

View rows 8

一次性放入所有列值并非强制性。您可以在加载时省略几列,并在之后更新它们。在此 Insert 语句示例中,我们将几列值放入 company 中。

USE company;
INSERT INTO customers 
           (First_Name, Last_Name, Education, Sales)
    VALUES ('Jacob', 'Johnson', 'Degree', 4500.25);

上面的查询将数据加载到 First_Name、Last Name、Education 和 Sales 列中。此处,为其余列添加了 NULL 值。

Example 9

提示:在将几条记录放入表时,必须定义列名。

Target Table Data

MySQL INSERT INTO 示例

您可以使用 INSERT INTO SELECT 语句将行从一个表放入另一个表,而不是硬编码所有值。在此示例中,我们从 country 中选择行并将其加载到 countrydetails 中。在这里,我们将使用WHERE Clause 来限制行。

INSERT INTO company.countrydetails
      (Code, Name, Continent, Region, SurfaceArea, IndepYear, Population, LocalName, Capital)
SELECT Code, Name, Continent, Region, SurfaceArea, IndepYear, Population, LocalName, Capital
FROM world.country
WHERE Continent = 'Asia' AND Region = 'Southern and Central Asia';
Insert INTO Statement 11

此时我们不解释代码实现。让我们看看查询是否已将所选数据添加到目标表中。

Destination Table

命令提示符示例

在此 Insert 示例中,我们使用命令行向 sales details 添加一条记录。在进行查询之前,我们表中的数据是:

代码和输出。