INSERT SELECT 的經典用法

2021-09-30 06:42:37 字數 2996 閱讀 5422

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並不存在...