SQL插入语句详解

SQL是一种强大的数据库语言,它提供了广泛的功能来创建、操作和管理数据库。本文将探讨SQL中一个基本的函数——插入(INSERT)语句。这个语句负责将新记录添加到表中,帮助保持数据库的最新状态。将介绍INSERT语句的基本语法和一些示例,以便更深入地了解其用途。

SQL初学者指南

如果是刚开始探索SQL的新手,这里有一个初学者指南来帮助:

SQL与数据科学:初学者指南》

目录

  • 什么是SQL中的INSERT语句?
  • 示例表结构
  • 基本INSERT语句
  • 插入多行数据
  • INSERT INTO … SELECT语句
  • 带有默认值的INSERT
  • INSERT IGNORE
  • INSERT ON DUPLICATE KEY UPDATE
  • 常见问题解答

什么是SQL中的INSERT语句?

INSERT语句的主要功能是向表中添加新记录。可以逐条添加,也可以一次性添加多条记录。当涉及到向表中添加记录时,INSERT语句是首选工具。了解如何使用这个语句对于在任何基于SQL的数据库中管理数据至关重要。向表中插入数据有多种方式,了解INSERT语句中的不同方式和选项非常重要。现在已经了解了INSERT语句,让通过一些示例来了解它们。

示例表结构

让通过一个实际例子来理解SQL中INSERT的工作原理。首先,需要创建一个示例表。以下是创建表的方法:

CREATE TABLE employees ( employee_id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), department VARCHAR(50), salary DECIMAL(10, 2) );

现在可以测试各种INSERT语句了。

基本INSERT语句

在SQL中插入单个记录到表中的基本语法是:

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

根据表结构调整这个命令。将指定表名和表中的列,然后为这些列传递一组值。

INSERT INTO employees (first_name, last_name, department, salary) VALUES ('Alice', 'Brown', 'Finance', 80000);

在这里可以看到列的顺序与传递的值的顺序相匹配,即first_name = “Alice”,last_name = “Brown”,department = “Finance”和salary = 80000。因此必须保持顺序。

插入多行数据

可以通过在INSERT语句中提供多组值来一次性插入多条记录。

INSERT INTO employees (col1, col2, etc) VALUES (value_set1), (value_set2), (value_set3), etc;

已经看到现在结果集中有4条记录了。注意,必须保持值的顺序,否则在插入时可能会出错。

INSERT INTO employees (first_name, last_name, department, salary) VALUES ('Bob', 'White', 'Sales', 58000), ('Carol', 'Green', 'HR', 54000), ('David', 'Black', 'IT', 75000);

现在可以看到结果集中有7条记录了。

INSERT INTO … SELECT语句

还可以利用SELECT语句将其他表的记录插入到表中。这种方法在复制或转移数据从一个表到另一个表时非常有用。注意,应该小心列的数据类型,两个表应该有相同的数据类型。例如,col1和column1应该有相同的数据类型。具体来说,还可以包括一个WHERE子句来插入特定的记录。

INSERT INTO employees (first_name, last_name, department, salary) SELECT first_name, last_name, department, salary FROM new_employees;

从上面的代码可以看到,new_employees的记录已经被复制到了employees表中。

带有默认值的INSERT

在插入记录时,可以省略某些列。当定义了默认值或为null时,可以这样做。

INSERT INTO employees (first_name, last_name, department) VALUES ('Eve', 'Silver', 'Operations');

在上面的代码中,没有指定salary值。因此,将采用默认值NULL来代替salary。

INSERT IGNORE

INSERT IGNORE语句会忽略由于重复键或其他问题引起的任何错误。当不希望在插入过程中被中断时,可以使用这个IGNORE子句。

INSERT IGNORE INTO employees (employee_id, first_name, last_name, department, salary) VALUES (1, 'Frank', 'Gray', 'Sales', 60000);

在上面的图像中可以看到,即使尝试传递具有重复键的记录,也影响了0行。因为使用了IGNORE,即使INSERT语句存在一些问题,它也会忽略插入。

INSERT ON DUPLICATE KEY UPDATE

INSERT INTO employees (employee_id, first_name, last_name, department, salary) VALUES (1, 'Frank', 'Gray', 'Sales', 60000) ON DUPLICATE KEY UPDATE salary = VALUES(salary);
Q1. SQL INSERT语句的用途是什么?
A. 在SQL中,INSERT语句用于将新记录插入到数据库中的表。它使能够指定要填充的列以及新记录的相应值。这反过来又在数据输入和更新时创造了便利。
Q2. 如何在单个INSERT语句中插入多行?
A. 为了使用INSERT语句插入多条记录,应该在INSERT语句中提供多组值。这减少了INSERT语句的数量。通过使批量插入更实用和更快,这提高了效率。
Q3. INSERT INTO … SELECT语句的用途是什么?
A. INSERT INTO … SELECT语句用于通过从一个或多个其他表中选择数据来插入行到表中。这特别适用于从一个表复制数据到另一个表、迁移数据或在插入过程中转换数据,而无需手动指定每行的值。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485