你真的會玩SQL嗎?簡單的資料修改

2021-09-22 19:06:13 字數 4457 閱讀 6106

你真的會玩sql嗎?系列目錄

你真的會玩sql嗎?之邏輯查詢處理階段

你真的會玩sql嗎?和平大使 內連線、外連線

你真的會玩sql嗎?三正規化、資料完整性

你真的會玩sql嗎?查詢指定節點及其所有父節點的方法

你真的會玩sql嗎?讓人暈頭轉向的三值邏輯

你真的會玩sql嗎?exists和in之間的區別

你真的會玩sql嗎?無處不在的子查詢

你真的會玩sql嗎?case也瘋狂

你真的會玩sql嗎?表表示式,排名函式

你真的會玩sql嗎?簡單的 資料修改

你真的會玩sql嗎?你所不知道的 資料聚合

你真的會玩sql嗎?透視轉換的藝術

你真的會玩sql嗎?實用函式方法彙總

你真的會玩sql嗎?玩爆你的資料包表之儲存過程編寫(上)

你真的會玩sql嗎?玩爆你的資料包表之儲存過程編寫(下)

專案會有種需要將a表中的部分欄位與b表中的部分字段聯合查詢後儲存到c表,或更新到c表,那怎麼實現呢?

select into

insert select

delete from

update from

insert exec 語句可以把儲存過程或動態批處理返回的結果儲存到現有表中(這裡暫時先不講)

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

)

goselect

*from

table2

--3.insert into select語句複製表資料

insert

into table2(a, c, d) select a,c,5

from

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

3.delete from

基於聯接的delete,如想刪除2023年5月6日以後下的訂單明細

delete

from

odfrom sales.orderdetails as

od

join sales.orders as o on od.orderid =

o.orderid

where o.orderdate >=

'20080506

'

4.update from

基於聯接的update,如想更新由usa客戶所下單的發貨資訊,用customers表中客戶的country,region,city改寫shipcountry,shipregion,shipcity

update

oset shipcountry =

c.country ,

shipregion

=c.region ,

shipcity

=c.city

from sales.orders as

o

join sales.customers as c on o.custid =

c.custid

where c.country =

'usa

'

今天內容很簡單,就不做練習了,多看看文章……

你真的會玩SQL嗎?簡單的資料修改

你真的會玩sql嗎?系列目錄 你真的會玩sql嗎?之邏輯查詢處理階段 你真的會玩sql嗎?和平大使 內連線 外連線 你真的會玩sql嗎?三正規化 資料完整性 你真的會玩sql嗎?查詢指定節點及其所有父節點的方法 你真的會玩sql嗎?讓人暈頭轉向的三值邏輯 你真的會玩sql嗎?exists和in之間的...

你真的會玩SQL嗎?Top和Apply

原文 返回每個雇員的3個最新訂單 select empid orderid custid orderdate requireddate from sales.orders as o1where orderid in select top3 orderid from sales.orders as o...

你真的會玩SQL嗎?冷落的Top和Apply

你真的會玩sql嗎?系列目錄 你真的會玩sql嗎?之邏輯查詢處理階段 你真的會玩sql嗎?和平大使 內連線 外連線 你真的會玩sql嗎?三正規化 資料完整性 你真的會玩sql嗎?查詢指定節點及其所有父節點的方法 你真的會玩sql嗎?讓人暈頭轉向的三值邏輯 你真的會玩sql嗎?exists和in之間的...