SqlServer:插入数据

时间:2024-03-11 08:47:14

SQL 语句插入

INSERT 语句

输入记录的 SQL 语句是 INSERT,其格式如下所示。在命令格式中 INTO 可以省略,如果输入所有列的内容,则列名列表可以省略。如果只输入部分列的值,则列名列表不可以省略。注意 VALUES 后面的值必须与列名列表要一一对应,同时插入数据不能违反任何约束,否则将回滚不能插入。

INSERT [INTO] 表名 [(列名1[,列名2.…])]
VALUES(值1[,值2…])

也可以使用 INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

INSERT INTO table2
SELECT * FROM table1;

如果是只希望部分列插入存在的表,也可以进行指定。

INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

插入样例

样例一

使用简单的 INSERT,创建表 T1 并且插入一行。

CREATE TABLE T1 (column_1 int, column_2 varchar(30))
INSERT T1 VALUES (1, \'Row #1\')

样例二

插入与列顺序不同的数据,使用 column_list 及 VALUES 列表显式地指定将被插入每个列的值。

CREATE TABLE T1 (column_1 int, column_2 varchar(30))
INSERT T1 (column_2, column_1) VALUES (\'Row #1\',1)

样例三

插入值少于列个数的数据,INSERT 语句插入的行只有部分列包含值。

CREATE TABLE T1 
( 
    column_1 int identity, 
    column_2 varchar(30) CONSTRAINT default_name DEFAULT (\'column default\'),
    column_3 int NULL,
    column_4 varchar(40)
)
INSERT INTO T1 (column_4) VALUES (\'Explicit value\')
INSERT INTO T1 (column_2,column_4) VALUES (\'Explicit value\', \'Explicit value\')
INSERT INTO T1 (column_2,column_3,column_4) VALUES (\'Explicit value\',-44,\'Explicit value\')

文本导入

BULK INSERT 语句

BULK INSERT 以用户指定的格式,复制一个数据文件至数据库表或视图中,数据文件可以是 txt 文件等。

BULK INSERT [ [ \'database_name\'.][ \'owner\' ].]{ \'table_name\' FROM \'data_file\' }       

插入样例

首先创建学生表:

create table student
(
    Sno char(3) not null primary key,    --学号
    Sname  nchar(4) not null,            --学生姓名
    Ssex nchar(1) not null,              --学生性别
    Sbirthday date,                      --学生出生年月
    Class char(5)                        --学生所在班级
)

需要插入的数据如下,将这些数据保存进 txt 文件中。

Sno	Sname	Ssex	Sbirthday	class
108	曾华	男	1977-09-01	95033
105	匡明	男	1975-10-02	95031
107	王丽	女	1976-01-23	95033
101	李军	男	1976-02-20	95033
109	王芳	女	1975-02-10	95031
103	陆君	男	1974-06-03	95031

使用 BULK INSERT 语句就可以把对应路径下的 txt 文件的数据导入表中。

BULK INSERT student FROM \'\'    --单引号内写上 txt 文件路径

Excel 导入

想要从 excel 导入数据,就需要借助 “SqlServer 导入和导出向导”。右击需要导入的目标数据库,选择“任务”选项中的“导入数据”。

进入到 “SqlServer 导入和导出向导”工具,直接进入下一步。

数据源选择 “Microsoft Excel”,然后写上 excel 的文件路径和 Excel 的版本。

接着选择需要插入数据的目标数据库:

接下来指定是从数据源复制一个或多个表和属兔,还是从数据库复制查询结果,导入 excel 的话选择第一项。

选择要插入数据库的数据,来源于 excel 中的哪些表。

选择是否保存或运行包,此处可以选择直接运行,然后就可以实现插入了。

参考资料

《SqlServer 2014 数据库技术实用教程》,胡伏湘、肖玉朝 主编,清华大学出版社
[数据库]Bulk Insert命令详细
SQLServer数据导入Excel表格数据