insert是t-sql中常用語句,insert into table(field1,field2,...) values(value1,value2,...)這種形式的在應用程式開發中必不可少。但我們在開發、測試過程中,經常會遇到需要表複製的情況,如將乙個table1的資料的部分字段複製到table2中,或者將整個table1複製到table2中,這時候我們就要使用select into 和 insert into select 表複製語句了。
1.insert into select語句
語句形式為:insert into table2(field1,field2,...) select value1,value2,... from table1
要求目標表table2必須存在,由於目標表table2已經存在,所以我們除了插入源表table1的字段外,還可以插入常量。示例如下:
--1.建立測試表
create
table
table1(a
varchar(10
),b
varchar(10
),c
varchar(10
),constraint
[pk_table1
]primary
keyclustered(a
asc)
) on
[primary
]create
table
table2(a
varchar(10
),c
varchar(10
),d
int,
constraint
[pk_table2
]primary
keyclustered(a
asc)
) on
[primary]go
--2.建立測試資料
insert
into
table1
values('
趙','
asds',
'90')
insert
into
table1
values('
錢','
asds',
'100')
insert
into
table1
values('
孫','
asds',
'80')
insert
into
table1
values('
李','
asds',
null)go
select
*from
table2
--3.insert into select語句複製表資料
insert
into
table2(a, c, d)
select
a,c,
5from
table1
go--
4.顯示更新後的結果
select
*from
table2
go--
5.刪除測試表
drop
table
table1
drop
table
table2
2.select into from語句
語句形式為:select vale1, value2 into table2 from table1
要求目標表table2不存在,因為在插入時會自動建立表table2,並將table1中指定字段資料複製到table2中。示例如下:
--1.建立測試表
create
table
table1(a
varchar(10
),b
varchar(10
),c
varchar(10
),constraint
[pk_table1
]primary
keyclustered(a
asc)
) on
[primary]go
--2.建立測試資料
insert
into
table1
values('
趙','
asds',
'90')
insert
into
table1
values('
錢','
asds',
'100')
insert
into
table1
values('
孫','
asds',
'80')
insert
into
table1
values('
李','
asds',
null)go
--3.select into from語句建立表table2並複製資料
select
a,c
into
table2
from
table1
go--
4.顯示更新後的結果
select
*from
table2
go--
5.刪除測試表
drop
table
table1
drop
table
table2
oracle中
insert all
into csstest(id,name)
values(id,id) select id from csstest1;
或insert into csstest(id,name)
select id,id from csstest1;
insert select帶來的問題
當使用 insert.select.進行記錄的插入時,如果select的表是innodb型別的,不論insert的表是什麼型別的表,都會對select的表的紀錄進行鎖定。對於那些從oracle遷移過來的應用,需要特別的注意,因為oracle並不存在類似的問題,所以在oracle的應用中insert....
insert select帶來的問題
當使用 insert select 進行記錄的插入時,如果select的表是innodb型別的,不論insert的表是什麼型別的表,都會對select的表的紀錄進行鎖定。對於那些從oracle遷移過來的應用,需要特別的注意,因為oracle並不存在類似的問題,所以在oracle的應用中insert ...
insert select 帶來的死鎖問題
mysql中 insert select 帶來的問題 當使用insert select 進行記錄的插入時,如果select的表是innodb型別的,不論insert的表是什麼型別的表,都會對select的表的紀錄進行鎖定。對於那些從oracle遷移過來的應用,需要特別的注意,因為oracle並不存在...