<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代碼能做什么?

          共 2107字,需瀏覽 5分鐘

           ·

          2020-05-31 23:22

          點擊上方SQL數(shù)據(jù)庫開發(fā),關(guān)注獲取SQL視頻教程

          SQL專欄

          SQL數(shù)據(jù)庫基礎(chǔ)知識匯總SQL數(shù)據(jù)庫高級知識匯總最近在知乎上看到一個問題:一行代碼可以做什么?答題者數(shù)萬計,都是一些非常“高端”的操作,就在想一行SQL代碼能做什么呢?


          SQL一行代碼其實有很多很多,一些常見的比如:

          SELECT?*?FROM?TableName?

          INSERT?INTO?TableName?VALUES(...)?

          TRUNCATE?TABLE?TableName .....

          這些就沒什么意思了,我們來給大家看一些比較“高級”的。



          1、復制表結(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 中沒有數(shù)據(jù)。



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

          結(jié)果如下:

          12b431e4490572f0e7e503eba13024d2.webp

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



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

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

          d8babb77a7d15d58a415525eaebfbb48.webp

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

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

          結(jié)果如下:

          b9d20d185ced47036774ae24d57fd721.webp

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



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

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

          結(jié)果如下:

          3f9af1023eb39f6f4322980eb5106f8a.webp

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

          5、對空值賦默認值
          SELECT??ISNULL(Price,0) FROM??Orders

          注:Price為空值時會默認賦0



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

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

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



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

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



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

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

          396ce60029fee35be76237d67058eb09.webp

          刪除其中除ID以為其他都重復的記錄

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

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

          442ef5d490244798660b28d5102411fb.webp



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

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

          dd9fa66ff87a81f50804c7ebe1ff3844.webp



          10、查詢某個表里的所有列名

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

          8226b0d8e313c0e04a992f8d8ed9ded4.webp



          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、按姓氏筆畫多少排序

          SELECT?Name?FROM?Person ORDER?BY?Name??Collate?Chinese_PRC_Stroke_CI_AS

          結(jié)果如下:

          d404e5a0d3bf8a4e1bd5210fa80d4931.webp

          注:默認是直接按姓氏拼音排序



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

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

          78a700047d521b2b71c896e366fa19e6.webp



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

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

          3c14611ee87c840bfac394e29e2633e6.webp



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

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

          72cf5d5ab62ce91fcc871585c094419b.webp



          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ū)分享一下。


          ——End——


          后臺回復關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨

          后臺回復關(guān)鍵字:進群,帶你進入高手如云的交流群。

          推薦閱讀

          這是一個能學到技術(shù)的公眾號,歡迎關(guān)注點擊「閱讀原文」了解SQL訓練營
          瀏覽 44
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  麻豆免费视频在线观看 | www.久草 | 五月色导航 | 国产精品激情在线 | 亚洲巨幕av|