必须会的SQL语句(三) 数据插入

云舒
云舒
发布时间:2026-10-14| 3人浏览过
原创

掌握SQL数据插入不仅涉及基础的Insert Into语法,还涵盖多行批量处理、表结构复制及自增字段(Identity)的特殊设置。本文梳理了从规范编写到高级操作的完整流程,确保数据写入既准确又高效。

插入语句的编写规范

在进行SQL数据插入操作时,遵循一定的命名和格式规范可以提高语句的兼容性和可读性:

  • 中文字符串前缀:建议在包含中文值的字符串前添加前缀 N,例如 N'张三',以确保数据库能正确处理Unicode字符编码。
  • 列名隔离:使用方括号 [] 包裹列名,尤其是当列名中包含空格、特殊字符或与保留字冲突时,如 [user_name]。

常规与多行插入操作

根据数据量的不同,可以选择不同的插入策略来优化数据库性能。

第1步:执行常规单行插入

目的:向现有表中插入一条或多条独立的数据记录。
入口:SQL查询编辑器。
动作:使用标准的 INSERT INTO 语句指定目标表和列名,并通过 VALUES 子句传入对应值。

-- 示例:向 users 表插入姓名和状态
INSERT INTO users 
([name], [status]) 
VALUES (N'张三', 'active');

完成判断:执行后返回受影响行数为1,即表示成功插入。

第2步:通过Union All实现多行批量插入

目的:在单次请求中插入多条数据,减少网络往返开销,提升写入效率。
入口:支持Union语法的SQL环境。
动作:利用 UNION ALL 连接多个 SELECT 语句,每个Select生成一行数据并合并插入。

-- 将多组数据一次性插入 target_table
INSERT INTO target_table ([col1], [col2])
SELECT 'A', '1' UNION ALL
SELECT 'B', '2' UNION ALL
SELECT 'C', '3';

注意参数:UNION 会自动去重,而 UNION ALL 会保留所有重复行。若需全量导入且不介意重复,建议使用 UNION ALL 以获得最佳性能。

第3步:从其他表复制数据至新表

目的:快速克隆表结构或迁移历史数据。
入口:数据库管理工具。
动作:结合 SELECT ... INTO 语法完成。

-- 1. 复制旧表 full_data 的结构和内容到新表 backup_data
SELECT * INTO backup_data FROM full_data;

-- 2. 仅复制表结构(无数据)
-- 方法A:过滤掉所有行
SELECT * INTO empty_table FROM source_table WHERE 1<>1;
-- 方法B:限制顶部0行(部分数据库适用)
SELECT TOP 0 * INTO empty_table FROM source_table;

完成判断:检查新表是否存在且行数符合预期(全量为原表行数,结构仅为空表)。

第4步:向已有表插入外部表数据

目的:将查询结果集直接插入到指定的目标表中,常用于ETL或数据归档。
入口:SQL脚本窗口。
动作:使用 INSERT INTO ... SELECT ... 组合模式,注意目标列与源列的顺序及类型匹配。

INSERT INTO archive_users (id, name)
SELECT user_id, username FROM temp_import_table;

强行写入自增标识字段

对于设置了自动增长(Identity/Auto Increment)的主键列,默认情况下无法直接插入值。若需手动指定ID(例如数据恢复或测试),可按以下步骤操作:

第1步:开启显式值插入权限

目的:解除对自增列 IDENTITY 的写入限制。
动作:设置 IDENTITY_INSERT 为 ON。

-- 允许向 table_name 的 ID 列插入指定值
SET IDENTITY_INSERT table_name ON;

第2步:执行强制插入

动作:在插入语句中显式列出包含自增列在内的所有列名进行赋值。

-- 必须明确写出被插入的列,不能只写 VALUES
INSERT INTO table_name (id, name) 
VALUES (1001, N'测试数据');

第3步:关闭权限以恢复常态

目的:防止后续误操作覆盖自增逻辑。
动作:立即将该选项关闭。

-- 重新启用自动增长模式
SET IDENTITY_INSERT table_name OFF;

以上就是SQL数据插入语句的详细操作与进阶技巧,更多关于SQL数据库管理的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。