失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 一行SQL代码能做什么?

一行SQL代码能做什么?

时间:2021-12-13 00:52:16

相关推荐

一行SQL代码能做什么?

最近在知乎上看到一个问题:一行代码可以做什么?答题者数万计,都是一些非常“高端”的操作,就在想一行SQL代码能做什么呢?

SQL一行代码其实有很多很多,一些常见的比如:

SELECT*FROMTableName

INSERTINTOTableNameVALUES(...)

TRUNCATETABLETableName .....

这些就没什么意思了,我们来给大家看一些比较“高级”的。

1、复制表结构

SELECT* INTOCustomers_bak FROMCustomers WHERE1=2;或者SELECTTOP 0* INTOCustomers_bak FROMCustomers;

可以得到与Customers 表结构一样的Customers_bak ,而且Customers_bak 中没有数据。

2、查询表里是否存在数据

SELECTTOP 11FROMCustomers

结果如下:

注:第一个1是查询是否存在一条记录,第二个1就是单纯的数值1。

3、随机获取一行数据

表Customers中数据如下:

现在随机获取一行数据

SELECTTOP 1* FROMCustomers ORDERBYNEWID();

结果如下:

注:多次执行,结果会不一样

4、获取第6到10行的记录

表Person数据如下:

获取第6到10行数据

SELECTTOP 5* FROM(SELECTTOP 10* FROMPerson ORDERBYID) a ORDERBYIDDESC

(提示:可以左右滑动代码)

结果如下:

注:如果希望是升序,可以在外面在加一层SELECT子查询对ID进行升序排序。

5、对空值赋默认值

SELECTISNULL(Price,0) FROMOrders

注:Price为空值时会默认赋0

6、将日期转换成文本格式

SELECTCONVERT(VARCHAR(10),CreateDate,120) FROMStudents

注:CreateDate为带时间的完整日期格式,执行后会得到不带时间的字符串,如'-05-31'

7、保留2位小数

SELECTCAST(Amount asNUMERIC(18,2)) FROMOrders

注:Amount是带2位以上的小数格式,转换后的小数会四舍五入。

8、删除重复记录(除了主键不同,其他字段均相同)

表Person数据如下:

删除其中除ID以为其他都重复的记录

DELETEFROMPerson WHEREIDNOTIN(SELECTMAX(ID) FROMPerson GROUPBYName,Age,Sex,Phone)

删除后结果如下:

9、查询当前数据库中的所有表名

SELECTNAMEFROMSYSOBJECTS WHERETYPE='U'

结果如下:

10、查询某个表里的所有列名

SELECTNAMEFROMSYSCOLUMNS WHEREID=OBJECT_ID('Person')

结果如下:

11、将B表中的字段内容更新到A表

UPDATEA SETA.Name=(SELECTB.Name FROMB WHEREA.ID=B.ID)

12、获取笛卡尔积

SELECTA.*,B.* FROMA,B

13、按姓氏笔画多少排序

SELECTNameFROMPerson ORDERBYNameCollateChinese_PRC_Stroke_CI_AS

结果如下:

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

14、延迟3秒执行查询语句

WAITFOR DELAY '0:0:3' SELECT* FROMPerson

结果如下:

15、将查询结果转换为XML格式

SELECT* FROMPerson WHEREID=1FORXMLPATH

结果如下:

16、将小数转换成百分数

SELECTCAST(CAST((0.8888*100) ASNUMERIC(18,2)) asVARCHAR(20)) + '%'

结果如下:

17、处理除数为0

SELECTISNULL(A/NULLIF(B,0),1) FROMTABLEA或SELECTCASEWHENB=0THEN1ELSEA/B ENDFROMTABLEA

注:A为任意数值,B为0

下次想到一些好用的SQL代码再分享给大家,如果你平常也有一些好用的SQL代码,欢迎可以在留言区分享一下。

点击下方卡片进行关注,获取更多内容

点分享

点收藏

点点赞

点在看

如果觉得《一行SQL代码能做什么?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。