黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 8個實用SQL腳本

8個實用SQL腳本

更新時間:2021-01-27 17:31:28 來源:動力節點 瀏覽3657次

生成數據庫項目時,預先部署腳本、數據庫對象定義和后期部署腳本合并為一個生成腳本,只能指定一個預先部署腳本和一個后期部署腳本,但可在預先部署腳本和后期部署腳本中包含其他腳本。在MySQL數據庫中,使用SQL腳本可以提高數據訪問的效率,并進行相關的數據處理。本文為大家介紹8個實用SQL腳本,幫助我們便捷MySQL數據庫的使用。

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

結果:

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

結果:

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

結果:

--列轉行select id,name,quarter,numberfromtest2unpivot(numberfor quarter in([Q1],[Q2],[Q3],[Q4]))as unpvt

結果:

3.連接遠程服務器

方法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進行遠程連接

4.把多行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 testGROUP BY id,name

結果:

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

5、表復制

語法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不存在,因為在插入時會自動創建表Table2,并將Table1中指定字段數據復制到Table2中。)

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

6.利用帶關聯子查詢Update語句更新數據

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

--方法2:update  Aset  newqiantity=B.qiantityfrom  A,Bwhere  A.bnum=B.bnum

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

7.字符串替換SUBSTRING/REPLACE

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

結果:

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

結果:

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

結果:

8.查詢一個表內相同紀錄 HAVING

如果一個ID可以區分的話,可以這么寫

SELECT * FROM HR.Employees

結果:

select * from HR.Employeeswhere title in (select title from HR.Employeesgroup by titlehaving count(1)>1)

結果:

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

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

select * from HR.Employeeswhere title+titleofcourtesy in(select title+titleofcourtesyfrom HR.Employeesgroup by title,titleofcourtesyhaving count(1)>1)

結果:

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

以上就是為大家推薦的8個實用SQL腳本,在MySQL數據庫的使用過程中會經常用到,最好能夠記住。實在記不住也沒有關系,在需要的時候可以隨時來本站的MySQL教程查詢即可。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 91精品久久久久久久久中文字幕 | 日本高清中文字幕在线观穿线视频 | 欧美精品一区视频 | 日韩一级一欧美一级国产 | 国产欧美日韩在线视频 | 5060午夜一级毛片 | 免费无遮挡十八污污网站 | 最近中文字幕2019免费6 | 成人激情视频在线 | 日韩不卡在线 | 亚洲a视频在线观看 | 天天干天天爽天天操 | 亚久久伊人精品青青草原2020 | 国产精品久久久久久夜夜夜夜 | www.成人网.com| 中文有码在线 | 簧片视频在线观看 | 国产精品日日摸夜夜添夜夜添1 | 性插久久 | 亚洲国产成人精品91久久久 | 亚洲色图综合 | 老司机午夜精品视频在线观看免费 | 国产自愉怕一区二区三区 | 男女一进一出免费视频 | 小明永久视频 | 久草视频手机在线观看 | 欧美日韩视频精品一区二区 | 美国一级片在线观看 | 2021日日摸夜夜添夜夜添影院 | 老人与老人a级毛片视频 | 国产成人a在一区线观看高清 | 亚洲九九夜夜 | 青青草国产精品久久 | 天天射天| 性色综合 | 一本大道香蕉在线观看视频 | 亚洲一区二区三区高清视频 | 日日射夜夜| 中文字幕在线观看一区二区三区 | 国产亚洲第一伦理第一区 | 中文字幕日韩高清版毛片 |