Appearance
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 的表,结构如下:
| 列名 | 数据类型 | 约束 |
|---|---|---|
| id | INT | PRIMARY KEY AUTO_INCREMENT |
| name | VARCHAR(50) | NOT NULL |
| age | INT | NOT NULL |
| grade | VARCHAR(20) | NOT NULL |
| gender | VARCHAR(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(因为没有指定)。
注意事项
数据类型匹配:插入的值的数据类型必须与列的数据类型匹配。例如,age 列是 INT 类型,就不能插入字符串值。
约束遵守:插入的数据必须遵守表的约束。例如,如果某列设置了 NOT NULL 约束,就必须为该列提供值。
自增列:对于 AUTO_INCREMENT 列,通常不需要指定值,数据库会自动为其生成唯一的值。如果指定了值,可以使用 NULL 或 0,数据库会忽略这些值并使用自动生成的值。
字符串值:字符串值需要使用单引号或双引号括起来。
日期值:日期值通常需要使用特定的格式,如 'YYYY-MM-DD'。
性能考虑:插入多条记录时,使用一条 INSERT 语句插入多条记录比使用多条 INSERT 语句效率更高。
小结
SQL INSERT INTO 语句是向数据库表中添加新记录的基本方法,掌握其语法和使用方法,对于数据管理非常重要。在实际应用中,需要注意数据类型匹配和约束遵守,以确保数据的完整性。