如何在 SQL Server 管理中向表中添加数据

我参加了文心智能AI大师工作坊sql向表里添加数据,免费获得了51CTO博客定制咖啡杯一个。

T-SQL 提供了多种用于将数据插入表中的语句:insert values、insert select、insert exec、select into 和 Bulk insert;

1. 插入值

这是插入数据的常用方式,可以插入单条或多条数据。

先建表,再插入数据

登录并复制

create table test(
id int not null identity(1,1) primary key,
name nvarchar(100)
)
  • 1.
  • 2.
  • 3.
  • 4.

插入单条记录

插入测试(名称)值('test1')

插入多行数据

插入测试(名称)值('test2'),('test3'),('test4')

以上两种方法都可以省略表名后面的字段(此方法不推荐使用),如下:

插入测试值('test1')

插入测试值('test2'),('test3'),('test4')

多行数据的插入作为原子操作处理,也就是说,如果任何一行数据录入表失败,则该语句不会插入到表中。

对于增强的VALUES子句,还可以将其作为表值构造函数,按照标准方式构建派生表,如下所示:

登录并复制

select * from (values
('001','test1'),
('002','test2'),
('003','test3')
)as test(id,name)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2. 插入选择

insert select 语句和 insert values 语句类似,只是 values 子句不同,这里可以指定 select 查询。比如要把前面的数据复制到另一个表 test1 中,首先要创建与 test 结构相同的 test1 表。

登录并复制

create table test1(
id int not null primary key,
name nvarchar(100)
)
  • 1.
  • 2.
  • 3.
  • 4.

执行插入语句

插入到测试1中

从测试中选择 ID、名称

插入到test1表结果如下,将test表中的数据完整复制到test1中

删除test1中的数据

截断表 test1

在此数据插入方法中,还可以使用 union all 插入多行数据

登录并复制

insert into test1
select '1','test1' union all
select '2','test2' union all
select '','test3'
  • 1.
  • 2.
  • 3.
  • 4.

test1表查询结果如下:

3. 插入执行

使用 insert exec 语句将存储过程或动态 SQL 批处理的结果集插入目标表中。

创建测试存储过程

登录并复制

create proc proc_Test @name as nvarchar(100)
as
select * from test where name like @name+'%'
go
  • 1.
  • 2.
  • 3.
  • 4.

测试执行结果

执行 proc_Test‘测试’

删除test1数据

截断表 test1

执行插入语句

插入测试1(id,name)

执行 proc_test‘测试’

查询test1表中的数据

4. 选择进入

select into 语句是一个非标准 T-SQL 语句,它使用查询结果创建并填充目标表。

使用下面的语句将test中的数据复制到temp中的临时表中,临时表的结构和数据以test表为准,该语句会将属性(列名、类型、是否为空、标识)和数据复制到目标表中,但不会复制索引、约束、触发器和权限,如果目标表中需要这些,则需要重新创建。

登录并复制

select ID,name
into #temp
from test
  • 1.
  • 2.
  • 3.

查询#temp表,数据如下:

5. 批量插入

使用批量插入语句将文件中的数据插入到现有表中。在语句中指定表、源文件和选项。您可以指定多个选项,包括数据类型、字段终止符、行终止符和其他文件选项。

修改测试表结构:

修改表测试添加地址 nvarchar(100),年龄 int

清除测试表

截断表测试

编辑本地文件,将如下蓝色字体数据保存到txt文件中sql向表里添加数据,并在SQL语句中指定文件地址。

1,tom,海淀区,北京市,20

北京市朝阳区三路2号23号

上海市浦东新区Amy路3号27

4、张三,河北省唐山市,28岁

北京市海淀区李四5号31号

执行语句

登录并复制

bulk insert dbo.test from 'C:sqltest.txt'
  with(
  datafiletype='char',
  fieldterminator=',',
  rowterminator ='n'
)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

查询结果如下

© 版权声明
THE END
喜欢就支持一下吧
点赞293赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容