1. 程式人生 > >sql server 操作(不定期更新)

sql server 操作(不定期更新)

要求:基本的語法要清楚。

sql server疑難點:

 1、Partition by可以理解為 對多行資料分組後排序取每個產品的第一行資料

先處理內查詢,由內向外處理,外層查詢利用內層查詢的結果巢狀查詢不僅僅可以用於父查詢select語句使用。還可以用於insert、update、delete語句或其他子查詢中。

 

2、去重:去除地址重複的

語法:select * from 表名 where id in (select min(id) from 表名 group by Address) 

舉例:select * from [parse2] where id in (select min(id) from [parse2] group by Address);

 

3、刪除某一列

語法:alter table table_name

 

4、求和:表中對兩個欄位進行求和,並對求和結果進行加減時

舉例:若要計算出場地費(slf)和人工費(clf)的和,並進行相加:

1)若兩個欄位都為數值型別,則不需要型別轉換,直接求和即可,方式如下:
語法:select sum(slf)+sum(clf) from 表名稱 where 條件語句
2)若兩個欄位為字元型的,比如型別為varchar的話,則需要進行型別轉換後,再進行計算,方法如下:
語法:select sum(cast(slf AS decimal(35, 0) )) + sum(cast(clf AS decimal(35,0) )) from 表名稱 where clf!='' and slf!=''

 

5、修改某個欄位的部分內容

語法:update  表名  set  欄位=REPLACE (如果是不同的型別需要進行轉換,  修改前的欄位, 修改後的欄位)

舉例:update [pharse3] set width=REPLACE (cast(width as nvarchar(20)),'50米,'一百米')

6、更改欄位的型別

語法:update 表名 set 欄位=cast(欄位  as nvarchar(20))

舉例:update [dbo] set year=cast(year as nvarchar(20))

 

7、刪除欄位:直接刪除date會出現約束錯誤,要刪除約束

語法:

alter table 表名 drop constraint 表名下面的約束的很長的那個東西
go

alter table 表名 drop column 欄位

舉例:

alter table [pharse3] drop  constraint    DF__pharse3__date__4FA7B896
go

alter table [pharse3] drop column date

 

8、更改欄位名字

語法:

exec  sp_rename  '[BB].[OldCol]','NewCol' -- 注意逗號後面,沒有表名,沒有點號,沒有方括號,執行這句,才能得到你想要的結果“NewCol”,

exec  sp_rename  '[BB].[舊的欄位名]',  '新的欄位名' 
或者,另一條等價:

exec sp_rename  '[BB].[OldCol]',  [NewCol] -- 逗號後面,如果要用方括號,就不要同時再用引號 。

舉例:
exec  sp_rename  '[Cdboare_coff].[Coefficient]',  [areacoef]
如果說master分支提示錯誤,則有可能更改master 分支,切換到對應的資料庫名字下面

 

9、uinon 幾張表,然後再儲存

Select * into 總表 from a
Union all
Select * from b
Union All
Select * from c

 

10、except 兩張表取差集,然後再儲存
select *
into #temp
from (
select * from a
except
select * from b
) T --要取別名,不取別名則錯誤

 

 11、格式轉換,這個比較複雜

select 欄位名  --上面和下面一致,用於顯示列表欄位內容
from 表一  a
LEFT JOIN 表二  b
on cast(a.欄位名  as nvarchar(20)) = b.欄位名  -- 轉換型別,注意點就在這裡
group by  欄位名  -- 同上面一樣的欄位名,聚合函式不需要寫(如avg(), )

 

 

 

 

 備註:以上均是在工作過程中產生的疑惑,整理之。

參考資料:

sql將查詢結果建立為新表 - CSDN部落格 

引數資料型別 sql_variant 對於 like 函式的引數 1 無效。 - CSDN部落格

SqlServer獲取當前日期 - Sir奔 - 部落格園

SQL實現表名更改,列名更改,約束更改 - jes.shaw - 部落格園

SQLSERVER,如何把一個表中某個欄位的'NULL'值改為0?-CSDN論壇