insert into 语句的三种写法

insert into 语句的三种写法

INSERT INTO 语句在 SQL 中用于向表中插入新的记录。以下是三种常见的 INSERT INTO 语句的写法,每种方法适用于不同的场景:

1. 插入完整行数据

这是最基本的 INSERT INTO 语法,它要求你为每个列提供值(假设没有设置默认值或允许 NULL 的列)。

语法:

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

示例: 假设有一个名为 students 的表,包含以下列:id, name, age, 和 grade。

INSERT INTO students (id, name, age, grade) VALUES (1, 'Alice', 20, 'A');

2. 插入部分列的数据

这种方法允许你只插入某些列的值,其他未指定的列将被设置为默认值或 NULL(如果它们被允许)。

语法:

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

示例: 只插入 name 和 grade 列的值,其他列将使用默认值或 NULL。

INSERT INTO students (name, grade) VALUES ('Bob', 'B');

3. 从另一个表中选择并插入数据

这种方法允许你从一个表中选择数据并将其插入到另一个表中。两个表的列结构应该匹配或者你需要明确指定要插入的列和对应的值。

语法:

INSERT INTO table_name1 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table_name2 WHERE condition;

示例: 从 old_students 表中选择数据并插入到 students 表中。

INSERT INTO students (id, name, age, grade) SELECT id, name, age, grade FROM old_students WHERE grade = 'A';

注意事项:

  • 确保为所有不允许 NULL 且没有默认值的列提供了值。
  • 如果表有自动递增的主键列(如自增 ID),你可以省略该列及其值,数据库会自动生成唯一的值。
  • 使用第二种方法时,确保目标表中的列能够接收 NULL 值或有默认值,否则会导致错误。
  • 在进行批量插入操作(尤其是第三种方法)时,注意性能问题,可能需要优化查询或使用事务管理。

通过理解这三种 INSERT INTO 语句的用法,你可以更灵活地处理各种数据插入需求。