<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一行SQL代碼能做什么?

          共 2901字,需瀏覽 6分鐘

           ·

          2021-05-29 06:32

          點(diǎn)擊關(guān)注上方“SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)”,
          設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨
          SQL專欄
          SQL基礎(chǔ)知識(shí)第二版
          SQL高級(jí)知識(shí)第二版
          最近在知乎上看到一個(gè)問(wèn)題:一行代碼可以做什么?答題者數(shù)萬(wàn)計(jì),都是一些非常“高端”的操作,就在想一行SQL代碼能做什么呢?


          SQL一行代碼其實(shí)有很多很多,一些常見(jiàn)的比如:

          SELECT * FROM TableName 

          INSERT INTO TableName VALUES(...) 

          TRUNCATE TABLE TableName .....

          這些就沒(méi)什么意思了,我們來(lái)給大家看一些比較“高級(jí)”的。



          1、復(fù)制表結(jié)構(gòu)
          SELECT * INTO Customers_bak FROM Customers WHERE 1=2;
          或者
          SELECT TOP 0 * INTO Customers_bak FROM Customers;


          可以得到與Customers 表結(jié)構(gòu)一樣的Customers_bak ,而且Customers_bak 中沒(méi)有數(shù)據(jù)。



          2、查詢表里是否存在數(shù)據(jù)
          SELECT TOP 1  1  FROM Customers

          結(jié)果如下:

          注:第一個(gè)1是查詢是否存在一條記錄,第二個(gè)1就是單純的數(shù)值1。



          3、隨機(jī)獲取一行數(shù)據(jù)

          表Customers中數(shù)據(jù)如下:

          現(xiàn)在隨機(jī)獲取一行數(shù)據(jù)

          SELECT TOP 1 * FROM Customers ORDER BY NEWID();

          結(jié)果如下:

          注:多次執(zhí)行,結(jié)果會(huì)不一樣



          4、獲取第6到10行的記錄
          表Person數(shù)據(jù)如下:
          獲取第6到10行數(shù)據(jù)
          SELECT TOP 5 * FROM (SELECT TOP 10 * FROM Person ORDER BY ID ) a ORDER BY ID DESC

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

          結(jié)果如下:

          注:如果希望是升序,可以在外面在加一層SELECT子查詢對(duì)ID進(jìn)行升序排序。

          5、對(duì)空值賦默認(rèn)值
          SELECT  ISNULL(Price,0) FROM  Orders

          注:Price為空值時(shí)會(huì)默認(rèn)賦0



          6、將日期轉(zhuǎn)換成文本格式

          SELECT  CONVERT(VARCHAR(10),CreateDate,120) FROM Students

          注:CreateDate為帶時(shí)間的完整日期格式,執(zhí)行后會(huì)得到不帶時(shí)間的字符串,如'2020-05-31'



          7、保留2位小數(shù)
          SELECT CAST(Amount as NUMERIC(18,2)) FROM Orders

          注:Amount是帶2位以上的小數(shù)格式,轉(zhuǎn)換后的小數(shù)會(huì)四舍五入。



          8、刪除重復(fù)記錄(除了主鍵不同,其他字段均相同)

          表Person數(shù)據(jù)如下:

          刪除其中除ID以為其他都重復(fù)的記錄

          DELETE FROM Person WHERE ID NOT IN (SELECT MAX(ID) FROM Person GROUP BY Name,Age,Sex,Phone)

          刪除后結(jié)果如下:



          9、查詢當(dāng)前數(shù)據(jù)庫(kù)中的所有表名

          SELECT   NAME FROM SYSOBJECTS WHERE TYPE='U'
          結(jié)果如下:



          10、查詢某個(gè)表里的所有列名

          SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('Person')
          結(jié)果如下:



          11、將B表中的字段內(nèi)容更新到A表

          UPDATE A SET A.Name=(SELECT B.Name FROM B WHERE A.ID=B.ID)



          12、獲取笛卡爾積

          SELECT A.*,B.* FROM A,B



          13、按姓氏筆畫(huà)多少排序

          SELECT Name FROM Person ORDER BY Name  Collate Chinese_PRC_Stroke_CI_AS

          結(jié)果如下:

          注:默認(rèn)是直接按姓氏拼音排序



          14、延遲3秒執(zhí)行查詢語(yǔ)句

          WAITFOR DELAY '0:0:3' SELECT * FROM Person
          結(jié)果如下:



          15、將查詢結(jié)果轉(zhuǎn)換為XML格式

          SELECT * FROM Person WHERE ID=1 FOR XML PATH
          結(jié)果如下:



          16、將小數(shù)轉(zhuǎn)換成百分?jǐn)?shù)

          SELECT CAST(CAST((0.8888*100) AS NUMERIC(18,2)) as VARCHAR(20)) + '%'
          結(jié)果如下:



          17、處理除數(shù)為0

          SELECT ISNULL(A/NULLIF(B,0),1) FROM TABLEA

          SELECT  CASE WHEN B=0 THEN 1 ELSE A/B END  FROM TABLEA

          注:A為任意數(shù)值,B為0


          下次想到一些好用的SQL代碼再分享給大家,如果你平常也有一些好用的SQL代碼,歡迎可以在留言區(qū)分享一下。


          最后給大家分享我寫(xiě)的SQL兩件套:《SQL基礎(chǔ)知識(shí)第二版》《SQL高級(jí)知識(shí)第二版》的PDF電子版。里面有各個(gè)語(yǔ)法的解釋、大量的實(shí)例講解和批注等等,非常通俗易懂,方便大家跟著一起來(lái)實(shí)操。

          有需要的讀者可以下載學(xué)習(xí),在下面的公眾號(hào)「數(shù)據(jù)前線」(非本號(hào))后臺(tái)回復(fù)關(guān)鍵字:SQL,就行
          ——End——

          后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨
          后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。

          推薦閱讀

          瀏覽 43
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  最新91av在线 | 国产成年女人性爱视频 | 偷拍99| 黄片久久久久 | a及亚洲无吗 |