sql insert into 一次性插入多条数据 从一张表中查询到的数据插入到另一张表

本文介绍了几种在SQL中插入数据的方法,包括使用DEFAULT关键字批量插入数据、从一个表查询数据并插入另一个表、以及如何避免重复插入等实用技巧。

--插入多条数据使用DEFAULT关键字(第二种方法,不要将默认列名写出,在UNION后面加上all,最后一行不加)

-------------------------------------------------------------------------------

[sql]  view plain  copy
  1. insert into [G]([员工编号],[姓名],[公司],[类型],[记录],[updatetime])  
  2. SELECT '00001','张三','北京,'年假','2',getdate() UNION all   
  3. SELECT '00002','李四','北京','年假','5',getdate()   


从一张表中查询到的数据插入到另一张表

-------------------------------------------------------------------------------

[sql]  view plain  copy
  1. INSERT INTO A ([姓名] ,[部门])  
  2. SELECT  [name] ,[DEP]  
  3. FROM B  
  4.  where [company]='北京公司' and date'2013-06-21'  


把B表在A表不存在的数据插入到A

[sql]  view plain  copy
  1. INSERT INTO A ([姓名] ,[部门])   
  2. SELECT [name] ,[DEP] FROM B WHERE NO EXISTS(SELECT [姓名] ,[部门] FROM A WHERE A.ID = B.ID)   


SQL实现将一个表的数据插入到另外一个表的代码

--第一种情况的

1》如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:

INSERT INTO 目标表 SELECT * FROM 来源表;


2》比如要将 articles 表插入到 newArticles 表中,则是:

INSERT INTO newArticles SELECT * FROM articles;


3》如果只希望导入指定字段,可以用这种方法:

INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;

--下面是第二种情况

4》如果将一个表的数据放在另外一个不存在的表:
select * into  目标不存在的表 from 来源表

 

5》如果只希望导入指定字段,可以用这种方法:

select 字段1,字段2,... into 目标不存在的表 from 来源表

在不同的数据库系统中,一次插入多条数据中有不同的方法: ### Oracle - **使用 `insert all` 方式**:可一次向同一个插入多条数据,语法如下: ```sql insert all into 名(字段名1,字段名2,字段名3,...) VALUES(值1,值2,值3,...) into 名(字段名1,字段名2,字段名3,...) VALUES(值11,值21,值31,...) into 名(字段名1,字段名2,字段名3,...) VALUES(值12,值22,值32,...) ... SELECT * from dual; ``` 例如向 `mytable` 插入多条数据: ```sql insert all into mytable(column1, column2, column3) VALUES('val1', 'val2', 'val3') into mytable(column1, column2, column3) VALUES('val11', 'val21', 'val31') SELECT * from dual; ``` ### MySQL 可以使用 `insert into ... values` 语法一次性插入多行,示例代码如下: ```sql insert into CB_PRACTICE(id_, type_,remark) values (5,'物理','浮力'),(6,'物理','阻力'); ``` ### 通用 SQL - **使用 `union all` 组合多个 `select` 语句**: ```sql insert into tableName(col1,col2,col3) select val1,val2,val3 union all select val1,val2,val3 ... ``` 例如向 `[oa].[dbo].[dictTable]` 插入多条数据: ```sql INSERT INTO [oa].[dbo].[dictTable] ([dictname] ,[dictkey] ,[dictvalue] ,[showorder]) select 'sx_xmlb','XM1','项目类别1',101 union all select 'sx_xmlb','XM2','项目类别2',102 union all select 'sx_xmlb','XM3','项目类别3',103 union all select 'sx_xmlb','XM4','项目类别4',104; ``` - **从其他读取数据插入**: ```sql insert into tableName(col1,col2,col3) select val1,val2,val3 from tagTable; ``` - **从多张读取数据插入**: ```sql insert into tableName(col1,col2,col3) select val1,val2,val3 from tagTableA union all select val1,val2,val3 from tagTableB; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值