成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一套簡單實用的SQL腳本,總有你需要的

數據庫 SQL Server
以下是一套簡單實用的SQL腳本,總有你需要的。

[[356240]]

本文轉載自微信公眾號「SQL數據庫開發」,作者丶平凡世界。轉載本文請聯系SQL數據庫開發公眾號。   

1、行轉列的用法PIVOT

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

結果:

  1. select ID,NAME
  2. [1] as '一季度'
  3. [2] as '二季度'
  4. [3] as '三季度'
  5. [4] as '四季度' 
  6. from 
  7. test 
  8. pivot 
  9. sum(number) 
  10. for quarter in 
  11. ([1],[2],[3],[4]) 
  12. as pvt 

結果:

 

2、列轉行的用法UNPIOVT

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

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

結果:

  1. --列轉行 
  2. select id,name,quarter,number 
  3. from 
  4. test2 
  5. unpivot 
  6. number 
  7. for quarter in 
  8. ([Q1],[Q2],[Q3],[Q4]) 
  9. as unpvt 

結果:

 

3、字符串替換SUBSTRING/REPLACE

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

結果:

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

結果:

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

結果:

 

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

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

SELECT * FROM HR.Employees

結果:

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

結果:

 

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

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

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

結果:

 

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

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

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

結果:

 

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

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

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

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

  1. --方法1: 
  2. Update Table1 
  3. set c = (select c from Table2 where a = Table1.a) 
  4. where c is null  
  5.  
  6. --方法2: 
  7. update  A 
  8. set  newqiantity=B.qiantity 
  9. from  A,B 
  10. where  A.bnum=B.bnum 
  11.  
  12. --方法3: 
  13. update 
  14. (select A.bnum ,A.newqiantity,B.qiantity from A 
  15. left join B on A.bnum=B.bnum) AS C 
  16. set C.newqiantity = C.qiantity 
  17. where C.bnum ='001' 

8、連接遠程服務器

  1. --方法1: 
  2. select *  from openrowset( 
  3. 'SQLOLEDB'
  4. 'server=192.168.0.1;uid=sa;pwd=password'
  5. 'SELECT * FROM dbo.test'
  6.  
  7. --方法2: 
  8. select *  from openrowset( 
  9. 'SQLOLEDB'
  10. '192.168.0.1'
  11. 'sa'
  12. 'password'
  13. 'SELECT * FROM dbo.test'

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

9、Date 和 Time 樣式 CONVERT

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

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

語法

CONVERT(data_type(length),data_to_be_converted,style)

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

可以使用的 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
  1. SELECT CONVERT(varchar(100), GETDATE(), 0) 
  2. --結果: 
  3. 12  7 2020  9:33PM 
  4. SELECT CONVERT(varchar(100), GETDATE(), 1) 
  5. --結果: 
  6. 12/07/20 
  7. SELECT CONVERT(varchar(100), GETDATE(), 2) 
  8. --結果: 
  9. 20.12.07 
  10. SELECT CONVERT(varchar(100), GETDATE(), 3) 
  11. --結果: 
  12. 07/12/20 
  13. SELECT CONVERT(varchar(100), GETDATE(), 4) 
  14. --結果: 
  15. 07.12.20 
  16. SELECT CONVERT(varchar(100), GETDATE(), 5) 
  17. --結果: 
  18. 07-12-20 
  19. SELECT CONVERT(varchar(100), GETDATE(), 6) 
  20. --結果: 
  21. 07 12 20 
  22. SELECT CONVERT(varchar(100), GETDATE(), 7) 
  23. --結果: 
  24. 12 07, 20 
  25. SELECT CONVERT(varchar(100), GETDATE(), 8) 
  26. --結果: 
  27. 21:33:18 
  28. SELECT CONVERT(varchar(100), GETDATE(), 9) 
  29. --結果: 
  30. 12  7 2020  9:33:18:780PM 
  31. SELECT CONVERT(varchar(100), GETDATE(), 10) 
  32. --結果: 
  33. 12-07-20 
  34. SELECT CONVERT(varchar(100), GETDATE(), 11) 
  35. --結果: 
  36. 20/12/07 
  37. SELECT CONVERT(varchar(100), GETDATE(), 12) 
  38. --結果: 
  39. 201207 
  40. SELECT CONVERT(varchar(100), GETDATE(), 13) 
  41. --結果: 
  42. 07 12 2020 21:33:18:780 
  43. SELECT CONVERT(varchar(100), GETDATE(), 14) 
  44. --結果: 
  45. 21:33:18:780 
  46. SELECT CONVERT(varchar(100), GETDATE(), 20) 
  47. --結果: 
  48. 2020-12-07 21:33:18 
  49. SELECT CONVERT(varchar(100), GETDATE(), 21) 
  50. --結果: 
  51. 2020-12-07 21:33:18.780 
  52. SELECT CONVERT(varchar(100), GETDATE(), 22) 
  53. --結果: 
  54. 12/07/20  9:33:18 PM 
  55. SELECT CONVERT(varchar(100), GETDATE(), 23) 
  56. --結果: 
  57. 2020-12-07 
  58. SELECT CONVERT(varchar(100), GETDATE(), 24) 
  59. --結果: 
  60. 21:33:18 
  61. SELECT CONVERT(varchar(100), GETDATE(), 25) 
  62. --結果: 
  63. 2020-12-07 21:33:18.780 
  64. SELECT CONVERT(varchar(100), GETDATE(), 100) 
  65. --結果: 
  66. 12  7 2020  9:33PM 
  67. SELECT CONVERT(varchar(100), GETDATE(), 101) 
  68. --結果: 
  69. 12/07/2020 
  70. SELECT CONVERT(varchar(100), GETDATE(), 102) 
  71. --結果: 
  72. 2020.12.07 
  73. SELECT CONVERT(varchar(100), GETDATE(), 103) 
  74. --結果: 
  75. 07/12/2020 
  76. SELECT CONVERT(varchar(100), GETDATE(), 104) 
  77. --結果: 
  78. 07.12.2020 
  79. SELECT CONVERT(varchar(100), GETDATE(), 105) 
  80. --結果: 
  81. 07-12-2020 
  82. SELECT CONVERT(varchar(100), GETDATE(), 106) 
  83. --結果: 
  84. 07 12 2020 
  85. SELECT CONVERT(varchar(100), GETDATE(), 107) 
  86. --結果: 
  87. 12 07, 2020 
  88. SELECT CONVERT(varchar(100), GETDATE(), 108) 
  89. --結果: 
  90. 21:33:18 
  91. SELECT CONVERT(varchar(100), GETDATE(), 109) 
  92. --結果: 
  93. 12  7 2020  9:33:18:780PM 
  94. SELECT CONVERT(varchar(100), GETDATE(), 110) 
  95. --結果: 
  96. 12-07-2020 
  97. SELECT CONVERT(varchar(100), GETDATE(), 111) 
  98. --結果: 
  99. 2020/12/07 
  100. SELECT CONVERT(varchar(100), GETDATE(), 112) 
  101. --結果: 
  102. 20201207 
  103. SELECT CONVERT(varchar(100), GETDATE(), 113) 
  104. --結果: 
  105. 07 12 2020 21:33:18:780 
  106. SELECT CONVERT(varchar(100), GETDATE(), 114) 
  107. --結果: 
  108. 21:33:18:780 
  109. SELECT CONVERT(varchar(100), GETDATE(), 120) 
  110. --結果: 
  111. 2020-12-07 21:33:18 
  112. SELECT CONVERT(varchar(100), GETDATE(), 121) 
  113. --結果: 
  114. 2020-12-07 21:33:18.780 

 

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

 

責任編輯:武曉燕 來源: SQL數據庫開發
相關推薦

2018-08-31 08:42:48

LinuxUnix實用程序

2018-07-25 18:44:35

智能硬件

2009-06-23 18:01:45

Ajax框架源代碼

2014-12-02 10:02:21

Android異步任務

2023-03-03 17:00:00

部署Linux內核

2019-09-26 15:06:29

數據平臺架構

2019-10-24 08:43:46

Redis內存NOSQL

2021-03-29 11:20:39

前端代碼工作流

2024-12-09 09:25:30

2011-03-31 11:40:13

SQL

2016-10-19 16:55:23

大數據

2019-08-30 14:30:11

2024-11-19 16:31:23

2022-02-25 09:00:00

數據科學工具架構

2024-11-12 08:13:09

2010-05-21 12:04:56

統一通信解決方案

2019-10-11 15:58:25

戴爾

2021-05-27 07:12:19

單點登錄系統

2017-03-07 09:15:08

iOS技巧開發

2019-04-25 10:44:18

PHP開源庫C 語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区福利 | 精品国产久 | 国产欧美在线播放 | 国产精品久久久久aaaa九色 | 中文字幕日韩欧美一区二区三区 | 999精彩视频| 谁有毛片 | 色视频在线播放 | 亚洲精品日韩在线 | av免费网站在线 | 国产综合久久 | 一级片免费视频 | 久草网站| 日本啊v在线 | 一级a爱片久久毛片 | 91青青草视频 | 日本一区二区三区四区 | 亚洲一区二区在线视频 | 亚洲精品乱码久久久久久按摩观 | 网站国产 | 亚洲精品乱码久久久久久按摩观 | 国产在线观看一区二区三区 | 天天艹日日干 | 成人欧美一区二区三区 | 欧美成人一区二区 | 手机看片169 | 黄色永久免费 | 国产精品日韩 | 日本久久久一区二区三区 | 中文字幕综合 | 女生羞羞网站 | 激情在线视频 | 亚洲aⅴ一区二区 | 中文字幕人成乱码在线观看 | 一区精品视频在线观看 | 欧美久久一级 | 亚洲免费在线观看 | 欧美综合久久久 | 中文字幕一区二区三区精彩视频 | 久久精品免费 | 羞羞在线观看视频 |