日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

一行SQL代码能做什么?

發(fā)布時間:2023/12/19 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一行SQL代码能做什么? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

SELECT?*?FROM?TableName?

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

TRUNCATE?TABLE?TableName .....

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

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 中沒有數(shù)據(jù)。

2、查詢表里是否存在數(shù)據(jù)

SELECT?TOP 1??1??FROM?Customers

結(jié)果如下:

注:第一個1是查詢是否存在一條記錄,第二個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é)果會不一樣

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

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

結(jié)果如下:

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

5、對空值賦默認(rèn)值

SELECT??ISNULL(Price,0) FROM??Orders

注:Price為空值時會默認(rèn)賦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、刪除重復(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ù)庫中的所有表名

SELECT???NAME?FROM?SYSOBJECTS WHERE?TYPE='U'

結(jié)果如下:

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

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

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

結(jié)果如下:

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

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

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

點擊下方卡片進(jìn)行關(guān)注,獲取更多內(nèi)容

點分享

點收藏

點點贊

點在看

總結(jié)

以上是生活随笔為你收集整理的一行SQL代码能做什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。