向表中插入数据

可用

INSERT INTO VALUES() 语句

我们弄清楚了如何创建表,现在让我们详细了解如何使用 SQL 查询向表中添加数据。

事实上,这样做非常简单,但有几个细微差别。向表中插入数据的最简单选项需要指定两件事:

  • 列名
  • 列值(数据)

必须指定列名,因为很多时候列都有默认值,在插入数据时没有指定。通常每个表都有至少一个这样的列,例如行 ID。

向表中插入数据的查询的一般形式如下所示:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

例如,如果要向用户表中插入一条新记录,则查询如下所示:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

插入 SELECT 语句

将数据插入表的另一种常见情况是从另一个表、模式甚至 DBMS 中获取数据。

为此,还有另一种 INSERT INTO 查询格式,在这种格式中,您可以指定一个查询来选择数据,而不是 VALUES 部分。

这种请求的一般形式是:

INSERT INTO table (column1, column2, column3)
SELECT-request;

让我们编写一个查询,将 employee 表中的所有用户添加到 user 表中:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

我们在员工表中有各种数据,但我们只从中选择了两个字段——姓名和到达公司的时间。

此外,用户表要求您指定用户级别 - 级别。雇员在雇员表中没有级别,因此我们将使用用户表具有级别字段默认值的事实。我们只是不指定级别,SQL 将设置默认值。

假设我们对默认值不满意,希望级别为99,将user.created_time替换为今天的日期,那么我们可以这样写:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

可以做的还有很多,但我认为现在就足够了。您可以在官方 MySQL 页面上阅读更多内容。

评论
  • 受欢迎
你必须先登录才能发表评论
此页面还没有任何评论