当前位置: 首页 > 科技观察

你知道一行SQL代码能做什么吗?

时间:2023-03-13 02:12:43 科技观察

本文转载自微信公众号《SQL数据库开发》,作者,平凡的世界。转载本文请联系SQL数据库开发公众号。最近在知乎上看到一个问题:一行代码能做什么?受访者有上万,都是非常“高端”的操作。我想知道一行SQL代码能做什么?SQL代码行其实有很多很多,一些比较常见的比如:SELECT*FROMTableNameINSERTINTOTableNameVALUES(...)TRUNCATETABLETableName....这些没什么意思,给大家看一些更“高级”的吧。1.复制表结构SELECT*INTOCustomers_bakFROMCustomersWHERE1=2;或SELECTOP0*INTOCustomers_bakFROMCustomers;可以得到和Customers表结构一样的Customers_bak,Customers_bak里面没有数据。2.查询表SELECTTOP11FROMCustomers是否有数据结果如下:注:第一个1是查询是否有记录,第二个1是简单值1。3.随机获取一行数据in数据表Customers如下:现在随机获取一行数据SELECTTOP1*FROMCustomersORDERBYNEWID();结果如下:注意:多次执行,结果会不同4、获取记录表Person第6行至第10行数据如下:获取第6行至第10行数据SELECTOP5*FROM(SELECTTOP10*FROMPersonORDERBYID)aORDERBYIDDESC(温馨提示:可以左右滑动代码)结果如下:注意:如果要升序,可以在外面加一层SELECT子查询,将ID升序排序。5、给空值赋默认值SELECTISNULL(Price,0)FROMOrders注意:当Price为空值时,默认赋0时间的完整日期格式,执行后会得到一个没有时间的字符串,如'2020-05-31'7,保留2位小数SELECTCAST(AmountasNUMERIC(18,2))FROMOrders注:金额为2位以上小数格式,转换后的小数点四舍五入。8、删除重复记录(除主键不同,其他字段相同)表Person数据如下:,Age,Sex,Phone)删除后的结果如下:9.查询当前数据库中所有表名SELECTNAMEFROMSYSOBJECTSWHERETYPE='U'结果如下:10.查询一个表中所有列名SELECTNAMEFROMSYSCOLUMNSWHEREID=OBJECT_ID('Person')结果如下:11.更新表中字段内容B到表AUPDATEASETA.Name=(SELECTB.NameFROMBWHEREA.ID=B.ID)12.获得笛卡尔积SELECTA.*,B.*FROMA,B13。根据姓氏笔画数排序SELECTNameFROMPersonORDERBYNameCollat??eChinese_PRC_Stroke_CI_AS结果如下:注:默认直接按姓氏拼音排序14.延迟3秒执行查询语句WAITFORDELAY'0:0:3'SELECT*FROMPerson结果如下:15.将查询结果转为XML格式SELECT*FROMPersonWHEREID=1FORXMLPATH结果如下:16.将小数转为百分比SELECTCAST(CAST((0.8888*100)ASNUMERIC(18,2))asVARCHAR(20))+'%'结果如下:17,处理除数为0SELECTISNULL(A/NULLIF(B,0),1)FROMTABLEAorSELECTCASEWHENB=0THEN1ELSEA/BENDFROMTABLEA注:A为任意值,B是0,下次想到一些有用的SQL代码,分享给大家。如果你平时有一些有用的SQL代码,欢迎在留言区分享。