SQL是一种强大的数据库语言,它提供了广泛的功能来创建、操作和管理数据库。本文将探讨SQL中一个基本的函数——插入(INSERT)语句。这个语句负责将新记录添加到表中,帮助保持数据库的最新状态。将介绍INSERT语句的基本语法和一些示例,以便更深入地了解其用途。
如果是刚开始探索SQL的新手,这里有一个初学者指南来帮助:
《SQL与数据科学:初学者指南》
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语句了。
在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条记录了。
还可以利用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表中。
在插入记录时,可以省略某些列。当定义了默认值或为null时,可以这样做。
INSERT INTO employees (first_name, last_name, department)
VALUES ('Eve', 'Silver', 'Operations');
在上面的代码中,没有指定salary值。因此,将采用默认值NULL来代替salary。
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 INTO employees (employee_id, first_name, last_name, department, salary)
VALUES (1, 'Frank', 'Gray', 'Sales', 60000)
ON DUPLICATE KEY UPDATE salary = VALUES(salary);