日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SQL常用腳本整理,你保存了嗎?

?工作中有許多比較常用的SQL腳本,今天開始分幾章分享給大家。

創(chuàng)新互聯(lián)公司為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都app軟件開發(fā)、重慶小程序開發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。 

1、行轉(zhuǎn)列的用法PIVOT

( , (), , )
(,N,,)
(,N,,)
(,N,,)
(,N,,)
(,N,,)
(,N,,)
(,N,,)
(,N,,)
*

結(jié)果:

select ID,NAME,
[1] as '一季度',
[2] as '二季度',
[3] as '三季度',
[4] as '四季度'
from
test
pivot
(
sum(number)
for quarter in
([1],[2],[3],[4])
)
as pvt

結(jié)果:

2、列轉(zhuǎn)行的用法UNPIOVT

create table test2
(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)
insert into test2 values(1,'蘋果',1000,2000,4000,5000)
insert into test2 values(2,'梨子',3000,3500,4200,5500)
select * from test2

(提示:可以左右滑動(dòng)代碼)

結(jié)果:

--列轉(zhuǎn)行
select id,name,quarter,number
from
test2
unpivot
(
number
for quarter in
([Q1],[Q2],[Q3],[Q4])
)
as unpvt

結(jié)果:

3、字符串替換SUBSTRING/REPLACE

SELECT REPLACE('abcdefg',SUBSTRING('abcdefg',2,4),'**')

結(jié)果:

SELECT REPLACE('13512345678',SUBSTRING('13512345678',4,11),'********')

結(jié)果:

SELECT REPLACE('12345678@qq.com','1234567','******')

結(jié)果:

4、查詢一個(gè)表內(nèi)相同紀(jì)錄 HAVING

如果一個(gè)ID可以區(qū)分的話,可以這么寫

SELECT * FROM HR.Employees

結(jié)果:

select * from HR.Employees
where title in (
select title from HR.Employees
group by title
having count(1)>1)

?結(jié)果:

對(duì)比一下發(fā)現(xiàn),ID為1,2的被過濾掉了,因?yàn)樗麄冎挥幸粭l記錄

如果幾個(gè)ID才能區(qū)分的話,可以這么寫

select * from HR.Employees
where title+titleofcourtesy in
(select title+titleofcourtesy
from HR.Employees
group by title,titleofcourtesy
having count(1)>1)

?結(jié)果:

title在和titleofcourtesy進(jìn)行拼接后符合條件的就只有ID為6,7,8,9的了

5、把多行SQL數(shù)據(jù)變成一條多列數(shù)據(jù),即新增列

SELECT
id,
name,
SUM(CASE WHEN quarter=1 THEN number ELSE 0 END) '一季度',
SUM(CASE WHEN quarter=2 THEN number ELSE 0 END) '二季度',
SUM(CASE WHEN quarter=3 THEN number ELSE 0 END) '三季度',
SUM(CASE WHEN quarter=4 THEN number ELSE 0 END) '四季度'
FROM test
GROUP BY id,name

結(jié)果:

我們將原來的4列增加到了6列。細(xì)心的朋友可能發(fā)現(xiàn)了這個(gè)結(jié)果和上面的行轉(zhuǎn)列怎么一模一樣?其實(shí)上面的行轉(zhuǎn)列是省略寫法,這種是比較通用的寫法。

6、表復(fù)制

語法1:Insert INTO table(field1,field2,...) values(value1,value2,...)

語法2:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

(要求目標(biāo)表Table2必須存在,由于目標(biāo)表Table2已經(jīng)存在,所以我們除了插入源表Table1的字段外,還可以插入常量。)

語法3:SELECT vale1, value2 into Table2 from Table1

(要求目標(biāo)表Table2不存在,因?yàn)樵诓迦霑r(shí)會(huì)自動(dòng)創(chuàng)建表Table2,并將Table1中指定字段數(shù)據(jù)復(fù)制到Table2中。)

語法4:使用導(dǎo)入導(dǎo)出功能進(jìn)行全表復(fù)制。如果是使用【編寫查詢以指定要傳輸?shù)臄?shù)據(jù)】,那么在大數(shù)據(jù)表的復(fù)制就會(huì)有問題?因?yàn)閺?fù)制到一定程度就不再動(dòng)了,內(nèi)存爆了?它也沒有寫入到表中。而使用上面3種語法直接執(zhí)行是會(huì)馬上刷新到數(shù)據(jù)庫(kù)表中的,你刷新一下mdf文件就知道了。

7、利用帶關(guān)聯(lián)子查詢Update語句更新數(shù)據(jù)

--方法1:
Update Table1
set c = (select c from Table2 where a = Table1.a)
where c is null

--方法2:
update A
set newqiantity=B.qiantity
from A,B
where A.bnum=B.bnum

--方法3:
update
(select A.bnum ,A.newqiantity,B.qiantity from A
left join B on A.bnum=B.bnum) AS C
set C.newqiantity = C.qiantity
where C.bnum ='001'

8、連接遠(yuǎn)程服務(wù)器

--方法1:
select * from openrowset(
'SQLOLEDB',
'server=192.168.0.1;uid=sa;pwd=password',
'SELECT * FROM dbo.test')

--方法2:
select * from openrowset(
'SQLOLEDB',
'192.168.0.1';
'sa';
'password',
'SELECT * FROM dbo.test')

當(dāng)然也可以參考以前的示例,建立DBLINK進(jìn)行遠(yuǎn)程連接

9、Date 和 Time 樣式 CONVERT

CONVERT() 函數(shù)是把日期轉(zhuǎn)換為新數(shù)據(jù)類型的通用函數(shù)。

CONVERT() 函數(shù)可以用不同的格式顯示日期/時(shí)間數(shù)據(jù)。

語法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 規(guī)定目標(biāo)數(shù)據(jù)類型(帶有可選的長(zhǎng)度)。data_to_be_converted 含有需要轉(zhuǎn)換的值。style 規(guī)定日期/時(shí)間的輸出格式。

可以使用的 style 值:

Style ID

Style 格式

100 或者 0

mon dd yyyy hh:miAM (或者 PM)

101

mm/dd/yy

102

yy.mm.dd

103

dd/mm/yy

104

dd.mm.yy

105

dd-mm-yy

106

dd mon yy

107

Mon dd, yy

108

hh:mm:ss

109 或者 9

mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110

mm-dd-yy

111

yy/mm/dd

112

yymmdd

113 或者 13

dd mon yyyy hh:mm:ss:mmm(24h)

114

hh:mi:ss:mmm(24h)

120 或者 20

yyyy-mm-dd hh:mi:ss(24h)

121 或者 21

yyyy-mm-dd hh:mi:ss.mmm(24h)

126

yyyy-mm-ddThh:mm:ss.mmm(沒有空格)

130

dd mon yyyy hh:mi:ss:mmmAM

131

dd/mm/yy hh:mi:ss:mmmAM

SELECT CONVERT(varchar(100), GETDATE(), 0)
--結(jié)果:
12 7 2020 9:33PM
SELECT CONVERT(varchar(100), GETDATE(), 1)
--結(jié)果:
12/07/20
SELECT CONVERT(varchar(100), GETDATE(), 2)
--結(jié)果:
20.12.07
SELECT CONVERT(varchar(100), GETDATE(), 3)
--結(jié)果:
07/12/20
SELECT CONVERT(varchar(100), GETDATE(), 4)
--結(jié)果:
07.12.20
SELECT CONVERT(varchar(100), GETDATE(), 5)
--結(jié)果:
07-12-20
SELECT CONVERT(varchar(100), GETDATE(), 6)
--結(jié)果:
07 12 20
SELECT CONVERT(varchar(100), GETDATE(), 7)
--結(jié)果:
12 07, 20
SELECT CONVERT(varchar(100), GETDATE(), 8)
--結(jié)果:
21:33:18
SELECT CONVERT(varchar(100), GETDATE(), 9)
--結(jié)果:
12 7 2020 9:33:18:780PM
SELECT CONVERT(varchar(100), GETDATE(), 10)
--結(jié)果:
12-07-20
SELECT CONVERT(varchar(100), GETDATE(), 11)
--結(jié)果:
20/12/07
SELECT CONVERT(varchar(100), GETDATE(), 12)
--結(jié)果:
201207
SELECT CONVERT(varchar(100), GETDATE(), 13)
--結(jié)果:
07 12 2020 21:33:18:780
SELECT CONVERT(varchar(100), GETDATE(), 14)
--結(jié)果:
21:33:18:780
SELECT CONVERT(varchar(100), GETDATE(), 20)
--結(jié)果:
2020-12-07 21:33:18
SELECT CONVERT(varchar(100), GETDATE(), 21)
--結(jié)果:
2020-12-07 21:33:18.780
SELECT CONVERT(varchar(100), GETDATE(), 22)
--結(jié)果:
12/07/20 9:33:18 PM
SELECT CONVERT(varchar(100), GETDATE(), 23)
--結(jié)果:
2020-12-07
SELECT CONVERT(varchar(100), GETDATE(), 24)
--結(jié)果:
21:33:18
SELECT CONVERT(varchar(100), GETDATE(), 25)
--結(jié)果:
2020-12-07 21:33:18.780
SELECT CONVERT(varchar(100), GETDATE(), 100)
--結(jié)果:
12 7 2020 9:33PM
SELECT CONVERT(varchar(100), GETDATE(), 101)
--結(jié)果:
12/07/2020
SELECT CONVERT(varchar(100), GETDATE(), 102)
--結(jié)果:
2020.12.07
SELECT CONVERT(varchar(100), GETDATE(), 103)
--結(jié)果:
07/12/2020
SELECT CONVERT(varchar(100), GETDATE(), 104)
--結(jié)果:
07.12.2020
SELECT CONVERT(varchar(100), GETDATE(), 105)
--結(jié)果:
07-12-2020
SELECT CONVERT(varchar(100), GETDATE(), 106)
--結(jié)果:
07 12 2020
SELECT CONVERT(varchar(100), GETDATE(), 107)
--結(jié)果:
12 07, 2020
SELECT CONVERT(varchar(100), GETDATE(), 108)
--結(jié)果:
21:33:18
SELECT CONVERT(varchar(100), GETDATE(), 109)
--結(jié)果:
12 7 2020 9:33:18:780PM
SELECT CONVERT(varchar(100), GETDATE(), 110)
--結(jié)果:
12-07-2020
SELECT CONVERT(varchar(100), GETDATE(), 111)
--結(jié)果:
2020/12/07
SELECT CONVERT(varchar(100), GETDATE(), 112)
--結(jié)果:
20201207
SELECT CONVERT(varchar(100), GETDATE(), 113)
--結(jié)果:
07 12 2020 21:33:18:780
SELECT CONVERT(varchar(100), GETDATE(), 114)
--結(jié)果:
21:33:18:780
SELECT CONVERT(varchar(100), GETDATE(), 120)
--結(jié)果:
2020-12-07 21:33:18
SELECT CONVERT(varchar(100), GETDATE(), 121)
--結(jié)果:
2020-12-07 21:33:18.780

以上內(nèi)容,在工作中比較常用,能記住最好。不能記住就收藏起來,在需要的時(shí)候查詢即可。


網(wǎng)站名稱:SQL常用腳本整理,你保存了嗎?
分享網(wǎng)址:http://m.5511xx.com/article/dhdeoec.html