1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一行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)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美精品三级网站 | 午夜影院91 | 黄色激情视频网站 | 国产网红主播三级精品视频 | 欧美性爱日韩 | 性囗交视频 | 中文字幕一区二区三三 | 欧美性猛交XXXX乱大交蜜桃 | gogo大胆无码无码免费视频主播 | 久久久久成人精品无码中文字幕 |