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表格数据