插入操作的基本概念
在数据库中,插入(INSERT)操作用于向表中添加新记录。它是数据操纵语言(DML)的核心操作之一,通常通过SQL语句实现。插入操作需要指定目标表、列名(可选)及对应的值。
标准SQL插入语法
INSERT INTO 表名 (列1, 列2, ...)
VALUES (值1, 值2, ...);
- 列名可选:若省略列名,则需为所有列按顺序提供值。
- 多行插入:某些数据库支持单语句插入多行数据,如:
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2), (值3, 值4);
插入操作的实际示例
假设存在表 employees,包含 id, name, department 列:
-- 插入单行(指定列名)
INSERT INTO employees (id, name, department)
VALUES (101, '张三', '研发部');
-- 插入单行(省略列名,需按列顺序)
INSERT INTO employees
VALUES (102, '李四', '市场部');
-- 批量插入(MySQL/PostgreSQL等支持)
INSERT INTO employees (id, name, department)
VALUES (103, '王五', '财务部'), (104, '赵六', '人事部');
插入操作的注意事项
- 主键冲突:若插入的主键或唯一键已存在,部分数据库会报错。可通过
INSERT IGNORE(MySQL)或ON CONFLICT(PostgreSQL)处理。 - 外键约束:插入的值需满足外键引用完整性,否则操作失败。
- 默认值:若列有默认值且插入时未指定,数据库会自动填充默认值。
高级插入技术
-
从其他表插入数据
INSERT INTO 目标表 (列1, 列2) SELECT 列A, 列B FROM 源表 WHERE 条件; -
带条件插入(如Oracle的
MERGE)MERGE INTO 目标表 t USING 源表 s ON (t.id = s.id) WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name); -
返回插入的ID(如SQL Server的
OUTPUT)INSERT INTO employees (name) OUTPUT inserted.id VALUES ('新员工');
不同数据库的语法差异
- MySQL:支持
INSERT IGNORE忽略重复键错误,ON DUPLICATE KEY UPDATE实现存在则更新。 - PostgreSQL:支持
ON CONFLICT DO NOTHING或ON CONFLICT DO UPDATE。 - SQLite:语法与MySQL类似,但部分特性(如批量插入)可能受限。
通过合理使用插入操作,可以高效地将数据添加到数据库表中,同时需注意约束条件和性能优化。
2485

被折叠的 条评论
为什么被折叠?



