网站黄色在线观看视频,男人和女人操逼有免费的视频吗2018高清,91熟女丨老女人丨高潮丰满,丝袜高潮流白浆潮喷在线播放

中國站

中國站

國際版

聯系我們

400-002-9968

售前咨詢

售后服務

注冊 登錄

博客 > SQL知識:SQL常用腳本

SQL知識:SQL常用腳本

  • 標簽:
  • SQL
  • SQL腳本
  • SQL常用腳本

瀏覽量:1415次評論:0次

作者:銳成網絡整理時間:2024-06-07 16:06:05

SQL作為結構化查詢語言,是處理和管理數據的重要工具之一。熟練掌握SQL常用腳本,不僅能夠提高數據處理的效率,還能夠更好地進行數據分析和決策。日常工作中有許多比較常用的SQL腳本,以下是一些SQL常用腳本匯總

SQL知識:SQL常用腳本

1、行轉列的用法PIVOT

CREATE table test
(id int,name nvarchar(20),quarter int,number int)
insert into test values(1,N'蘋果',1,1000)
insert into test values(1,N'蘋果',2,2000)
insert into test values(1,N'蘋果',3,4000)
insert into test values(1,N'蘋果',4,5000)
insert into test values(2,N'梨子',1,3000)
insert into test values(2,N'梨子',2,3500)
insert into test values(2,N'梨子',3,4200)
insert into test values(2,N'梨子',4,5500)
select * from test

結果:

SQL知識:SQL常用腳本

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

結果:

SQL知識:SQL常用腳本

 

2、列轉行的用法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

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

結果:

SQL知識:SQL常用腳本

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

結果:

SQL知識:SQL常用腳本

3、字符串替換SUBSTRING/REPLACE

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

結果:

SQL知識:SQL常用腳本

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

結果:

SQL知識:SQL常用腳本

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

結果:

SQL知識:SQL常用腳本

4、查詢一個表內相同紀錄 HAVING

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

SELECT * FROM HR.Employees

結果:

SQL知識:SQL常用腳本

 

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

結果:

SQL知識:SQL常用腳本

對比一下發(fā)現,ID為1,2的被過濾掉了,因為他們只有一條記錄

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

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

結果:

SQL知識:SQL常用腳本

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

5、把多行SQL數據變成一條多列數據,即新增列

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

結果:

SQL知識:SQL常用腳本

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

6、表復制

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

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

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

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

(要求目標表Table2不存在,因為在插入時會自動創(chuàng)建表Table2,并將Table1中指定字段數據復制到Table2中。)

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

7、利用帶關聯子查詢Update語句更新數據

--方法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、連接遠程服務器

--方法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')

當然也可以參考以前的示例,建立DBLINK進行遠程連接

9、Date 和 Time 樣式 CONVERT

CONVERT() 函數是把日期轉換為新數據類型的通用函數。

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

語法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 規(guī)定目標數據類型(帶有可選的長度)。data_to_be_converted 含有需要轉換的值。style 規(guī)定日期/時間的輸出格式。

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

通過掌握以上SQL常用腳本,我們可以更加靈活和高效地處理和管理數據,提升工作效率,實現更精確的數據分析,為企業(yè)決策提供有力支持。

重要聲明:本文來自SQL數據庫開發(fā),經授權轉載,版權歸原作者所有,不代表銳成觀點,轉載的目的在于傳遞更多知識和信息。

我的評論

還未登錄?點擊登錄

微信掃碼溝通
微信掃碼溝通

微信掃碼溝通

AI
return head