sql数据库insert用法

sql数据库insert用法,第1张

(1):INSERT INTO TABLENAME(CLOMN) VALUES (DATA)

当不指定列的时候,表示选择该表中的所有列顺序与表中顺序一样, 可以用列名指定列的顺序

要求: 插入到对应列的数据类型要正确, 长度不能大于列指定的长度, 如果列声明了不允许为空的话,你插入NULL时会报错, 还有当列声明为 UNQIE 时(唯一的),如果插入重复类的时候也会报错

(2): INSERT INTO TABLENAME SELECT

这种方法可以支持一次插入多行语句

遵循规则: 1 SELECT 语句不能从插入数据的表中选择行 2 INSERT INTO 中的列数必须与SELECT 语句返回的列数相等 3 INSERT INTO 中的数据类型要与SELECT 语句返回的数据类型相同

INSERT SELECT 语句的另外一个用处是当你需要对表进行重新定义时对表进行备份

insert一般是用来给表插入一条指定的列值的,但是,insert还存在另一种形式,可以利用它将一条select语句的结果插入表中。

这就是所谓的insert select,顾名思义,它是由一条insert语句和一条select语句组成的。假如你从另一张表中合并客户列表到你的Custumers表,不需要每次读取一行,然后再将它用insert插入,可以如下进行:

insert into Custumer(cust_id,

cust_cintact,

cust_name,

cust_email,

cust_address,

cust_country)

select cust_id,

cust_cintact,

cust_name,

cust_email,

cust_address,

cust_country

from CustNew;

扩展资料

insert select中的列名为简单起见,这个例子在insert和select语句中使用了相同的列名,但是,不一定要求列名匹配。事实上,DBMS甚至不关心select返回的列名,它使用的是列的位置。

因此,select中的第一列(不管其列名)将用来填充表列中的指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。

既然有人提出用语句实现,那我们就用语句,我把她做成一个存储过程,在环境sql2005下测试通过,有一点说明:表中的字段值不能为空,否则将返回一个空值:

第一步:--首先创建一张结果表,保存要输出的数据

create table out_data

(flag int,--标识

tb_name varchar(1000),--表名称

insert_info varchar(8000))--插入的语句

第二步,创建存储过程:

create proc [dbo][out_table_data]

@tb_name varchar(1000)--表名称

as

declare @str varchar(8000),--存放字段名称

@insert_str varchar(8000),--存放处理结果串

@bl varchar(8000),--存放变量及其数据类型

@bl2 varchar(8000),--存放变量名称

@bl3 varchar(8000),--数据类型

@bd varchar(1000),--引号使用开始

@bd2 varchar(1000),--引号使用结束

@sum_str varchar(8000),--存放赋值变量和字段

@sum_str_column varchar(8000),--存放要提取的变量字段

@j varchar(3000),--字段个数

@i varchar(3000)--循环起始量

set @str=''

set @bl='declare '--声明变量(保留中间的空格)

set @bl2=''

set @bl3=''

set @i=1

set @sum_str=''

set @sum_str_column=''

set @bd='''''''+'

set @bd2='+'''''''

--字段个数

select @j=count(a[name]) from syscolumns A inner join sysobjects B

on Aid = Bid and bname = @tb_name

--自动定义变量放入串@bl中(case when c[name] in('char','nchar','varchar','nvarchar') then '('+convert(varchar(500),alength)+')' else '' end)

select @bl=@bl+'@'+a[name]+' '+'varchar(8000)'+',' ,@bl3=@bl3+c[name]+',' from syscolumns A inner join sysobjects B on Aid = Bid

inner join systypes c

on Axtype=Cxusertype

and bname = @tb_name

set @bl=left(@bl,len(@bl)-1)

--要查询的表字段名放入串@str中

select @str=@str+a[name]+',' ,@bl2=@bl2+'@'+a[name] from syscolumns A inner join sysobjects B

on Aid = Bid and bname = @tb_name

set @str=left(@str,len(@str)-1)

set @bl2=@bl2+'@'

while @i<=@j

begin

set @sum_str_column=@sum_str_column+@bd+isnull(left(@bl2,charindex('@',right(@bl2,len(@bl2)-1))),0)+@bd2+','

set @sum_str=@sum_str+left(@bl2,charindex('@',right(@bl2,len(@bl2)-1)))+'='+left(right(@bl2,len(@bl2)-1),charindex('@',right(@bl2,len(@bl2)-1))-1)+','

set @bl2 = right(@bl2,len(@bl2)-charindex('@',right(@bl2,len(@bl2)-1)))

set @bl3=right(@bl3,len(@bl3)-charindex(',',@bl3))

set @i=@i+1

end

set @sum_str=left(@sum_str,len(@sum_str)-1)

set @sum_str_column=left(@sum_str_column,len(@sum_str_column)-1)

--执行处理过程,在临时表中进行

set @insert_str=' '+@bl+'

declare @max int,@min int

select identity(int,1,1) flag,'+@str+' into #tmp from '+@tb_name+'

select @min=min(flag),@max=max(flag) from #tmp

while @min<=@max

begin

select '+@sum_str+' from #tmp where flag=@min

insert into out_data(flag,tb_name,insert_info)

select @min [id],'''+@tb_name+''' tb_name,''insert into '+@tb_name+''+'('+@str+') values('+@sum_str_column+')'' names

set @min=@min+1

end'

exec(@insert_str)

--print @insert_str

第三步、获取你要的结果信息,如要批量,循环该过程就可以了

exec out_table_data 'net_code'

返回结果:

select  from out_data where tb_name like '%net_code%'

INSERT INTO是sql数据库中的语句,可以用于向表格中插入新的行。

语法

INSERT INTO 表名称 VALUES (值1, 值2,)我们也可以指定所要插入数据的列:

INSERT INTO table_name (列1, 列2,) VALUES (值1, 值2,)

以上就是关于sql数据库insert用法全部的内容,包括:sql数据库insert用法、如何用SQL语句向一个表中插入多行记录、数据库以insert语句形式从表中导出数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9535612.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存