跳至主要内容

SQL INSERT INTO 教程

SQL 的 "INSERT INTO" 语句可用于向数据库中的表添加数据行。
· 3分钟 阅读

使用 AI 探索

语法

下面是 "INSERT INTO" 的常见用法——手动插入数值。其后紧跟表名以及一个可选的列名列表,用于指定要填充数据的列。然后使用 "VALUES" 关键字跟上您要插入的实际值。

INSERT INTO table_name (column_a, column_b)
VALUES ("value_a", "value_b");

将唯一记录 INSERT 到新表中

要将现有表中的数据复制到新表,您可以使用 "INSERT INTO SELECT DISTINCT" 模式。在 "INSERT INTO" 之后,指定目标表的名称——如下例中的 organizations。

然后选择需要从源表复制的列——此处为 unviversity_professors。使用 "DISTINCT" 关键字可仅复制不重复的机构。

INSERT INTO organizations
SELECT DISTINCT organization,
    organization_sector
FROM university_professors;
Output: INSERT 0 1287

上述输出表示只有 1287 条记录被插入到 "organizations" 表中。

另一方面,如果不使用 "DISTINCT",直接执行 "INSERT INTO SELECT",则重复记录也会被复制过去。

INSERT INTO organizations
SELECT organization,
    organization_sector
FROM university_professors;
Output: INSERT 0 1377

将数据迁移到新表

让我们把数据迁移到新表中。您将使用以下模式:

INSERT INTO ...
SELECT DISTINCT ...
FROM ...;

这可以分为两部分:

第一部分:

SELECT DISTINCT column_name1, column_name2, ...
FROM table_a;

这将从表 table_a 中选择所有不重复的值——对您来说不算新内容。

-- 将唯一教授插入到新表
INSERT INTO professors
SELECT DISTINCT firstname, lastname, university_shortname
FROM university_professors;

-- 复查 professors 的内容
SELECT *
FROM professors;

第二部分:

INSERT INTO table_b ...;

将这部分附加到第一部分之后,这样就能把 table_a 中所有不重复的行插入到 table_b。

最后一点:在您补全所有空白后,请一次性运行全部代码,这一点很重要。

-- 将唯一任职信息插入到新表
INSERT INTO affiliations
SELECT DISTINCT firstname, lastname, function, organization
FROM university_professors;

-- 复查 affiliations 的内容
SELECT *
FROM affiliations;

亲自试一试。

如需进一步了解 SQL 中的关系型数据库,请观看我们课程 Introduction to Relational Databases in SQL 中的这段视频。

本内容选自 DataCamp 的 Timo Grossenbacher 所授课程 Introduction to Relational Databases in SQL。

主题