Skip to content

SQL INSERT INTO

SQL INSERT INTO 语句用于向数据库表中插入新的记录。

INSERT INTO 语法

语法 1:指定列名和值

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

语法 2:不指定列名,插入所有列的值

sql
INSERT INTO table_name
VALUES (value1, value2, ..., valueN);

语法 3:插入多条记录

sql
INSERT INTO table_name (column1, column2, ..., columnN)
VALUES
(value1_1, value1_2, ..., value1_N),
(value2_1, value2_2, ..., value2_N),
...
(valueM_1, valueM_2, ..., valueM_N);

示例

假设我们有一个名为 students 的表,结构如下:

列名数据类型约束
idINTPRIMARY KEY AUTO_INCREMENT
nameVARCHAR(50)NOT NULL
ageINTNOT NULL
gradeVARCHAR(20)NOT NULL
genderVARCHAR(10)

示例 1:指定列名插入记录

sql
INSERT INTO students (name, age, grade, gender)
VALUES ('张三', 18, '高三', '男');

执行结果:向 students 表中插入一条新记录,id 会自动递增。

示例 2:不指定列名插入记录

sql
INSERT INTO students
VALUES (NULL, '李四', 17, '高二', '女');

执行结果:向 students 表中插入一条新记录,id 会自动递增。注意,当不指定列名时,需要为所有列提供值,包括自增列(可以使用 NULL)。

示例 3:插入多条记录

sql
INSERT INTO students (name, age, grade, gender)
VALUES
('王五', 19, '高三', '男'),
('赵六', 16, '高一', '女'),
('钱七', 18, '高三', '女');

执行结果:向 students 表中插入三条新记录。

示例 4:插入部分列的值

sql
INSERT INTO students (name, age, grade)
VALUES ('孙八', 17, '高二');

执行结果:向 students 表中插入一条新记录,gender 列的值为 NULL(因为没有指定)。

注意事项

  1. 数据类型匹配:插入的值的数据类型必须与列的数据类型匹配。例如,age 列是 INT 类型,就不能插入字符串值。

  2. 约束遵守:插入的数据必须遵守表的约束。例如,如果某列设置了 NOT NULL 约束,就必须为该列提供值。

  3. 自增列:对于 AUTO_INCREMENT 列,通常不需要指定值,数据库会自动为其生成唯一的值。如果指定了值,可以使用 NULL 或 0,数据库会忽略这些值并使用自动生成的值。

  4. 字符串值:字符串值需要使用单引号或双引号括起来。

  5. 日期值:日期值通常需要使用特定的格式,如 'YYYY-MM-DD'。

  6. 性能考虑:插入多条记录时,使用一条 INSERT 语句插入多条记录比使用多条 INSERT 语句效率更高。

小结

SQL INSERT INTO 语句是向数据库表中添加新记录的基本方法,掌握其语法和使用方法,对于数据管理非常重要。在实际应用中,需要注意数据类型匹配和约束遵守,以确保数据的完整性。