SQL - INSERT查询:初学者指南

你好,未来的数据库大师们!今天,我们将踏上一段激动人心的旅程,探索SQL INSERT查询的世界。作为你友好的计算机老师邻居,我将引导你了解这个基本概念,帮助你将宝贵的信息填充到数据库中。那么,拿起一杯咖啡(或者茶,如果你喜欢的话),让我们一起深入探讨!

SQL - Insert Query

SQL INSERT INTO 语句

什么是INSERT语句?

想象一下,你有一个设计精美的数据库表,但它却是空的。多么遗憾啊!这时,INSERT语句就像一个神奇的魔法,允许我们向表中添加新的记录(行)。

基本语法

INSERT语句的基本语法如下:

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

让我们分解一下:

  • INSERT INTO 告诉SQL我们要添加新数据
  • table_name 是你要添加数据的表
  • 括号中的列是你想要填充的列
  • VALUES 关键字引入你实际要插入的数据

示例 1:插入单行

假设我们有一个名为 students 的表,其列有:idnameage。以下是如何添加一个新学生的方法:

INSERT INTO students (id, name, age)
VALUES (1, 'John Doe', 20);

这将向我们的 students 表中添加一个新行,ID为1,名字为"John Doe",年龄为20。

示例 2:插入多行

如果你想要一次添加多个学生呢?没问题!我们也可以做到:

INSERT INTO students (id, name, age)
VALUES
(2, 'Jane Smith', 22),
(3, 'Bob Johnson', 21),
(4, 'Alice Brown', 23);

这个单一的查询将向我们的表中添加三个新学生。效率高吧?

使用另一个表向表中插入数据

有时,你可能想要从一个表复制数据到另一个表。SQL让这个过程变得非常简单!

语法

从另一个表插入数据的语法如下:

INSERT INTO table1 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table2
WHERE condition;

示例 3:在表之间复制数据

假设我们有一个名为 honor_roll 的表,我们想要从 students 表中添加所有21岁或以上的学生:

INSERT INTO honor_roll (student_id, student_name)
SELECT id, name
FROM students
WHERE age >= 21;

这个查询将从 students 表中复制所有21岁或以上学生的 idnamehonor_roll 表。

仅在指定列中插入数据

有时,在插入数据时你不需要填充所有列。SQL足够灵活,可以处理这种情况!

示例 4:插入部分数据

让我们添加一个新学生,但这次我们不知道他们的年龄:

INSERT INTO students (id, name)
VALUES (5, 'Eva Green');

在这种情况下,Eva的 age 列将被填充为NULL值(或者如果表定义中指定了默认值,则为默认值)。

示例 5:使用DEFAULT值

如果你的表为某些列定义了默认值,你可以显式地使用它们:

INSERT INTO students (id, name, age)
VALUES (6, 'Frank White', DEFAULT);

这假设 age 列在表结构中定义了默认值。

专业提示和最佳实践

  1. 总是列出你的列:即使你正在为所有列插入值,显式地列出它们也会使你的代码更具可读性,并且更不容易出错。

  2. 使用事务:在插入多行时,将你的INSERT语句包装在事务中。这确保了要么所有插入都成功,要么都不成功。

  3. 验证你的数据:在插入之前,确保你的数据满足表的要求(数据类型、约束等)。

  4. 小心处理自增列:如果一个列是自增的(比如通常的ID列),你通常不需要在INSERT语句中指定它的值。

常见的INSERT方法

以下是我们所讨论的INSERT方法的总结表:

方法 描述 示例
基本INSERT 插入具有指定值的单行 INSERT INTO table (col1, col2) VALUES (val1, val2);
多行INSERT 在一个语句中插入多行 INSERT INTO table (col1, col2) VALUES (val1, val2), (val3, val4);
带SELECT的INSERT 从一个表复制数据到另一个表 INSERT INTO table1 SELECT col1, col2 FROM table2 WHERE condition;
部分INSERT 只在指定的列中插入数据 INSERT INTO table (col1) VALUES (val1);
带DEFAULT的INSERT 对某些列使用默认值 INSERT INTO table (col1, col2) VALUES (val1, DEFAULT);

就这样,我热切的学习者们!你们刚刚迈出了进入SQL INSERT查询世界的第一步。记住,熟能生巧,所以不要害怕尝试这些概念。在你意识到之前,你将能够像专业人士一样插入数据!

快乐编码,愿你的数据库总是完美填充!

Credits: Image by storyset