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

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

[[402099]]

本文转载自微信公众号「SQL数据库开发」,作者丶平凡世界。转载本文请联系SQL数据库开发公众号。

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

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

  1. SELECT * FROM TableName  
  2. INSERT INTO TableName VALUES(...)  
  3. TRUNCATE TABLE TableName ..... 

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

1、复制表结构

  1. SELECT * INTO Customers_bak FROM Customers WHERE 1=2; 
  2. 或者 
  3. SELECT TOP 0 * INTO Customers_bak FROM Customers; 

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

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

  1. SELECT TOP 1  1  FROM Customers 

结果如下:

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

3、随机获取一行数据

表Customers中数据如下:

现在随机获取一行数据

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

结果如下:

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

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

表Person数据如下:

获取第6到10行数据

  1. SELECT TOP 5 * FROM (SELECT TOP 10 * FROM Person ORDER BY ID ) a ORDER BY ID DESC 

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

结果如下:

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

5、对空值赋默认值

  1. SELECT  ISNULL(Price,0) FROM  Orders 

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

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

  1. SELECT  CONVERT(VARCHAR(10),CreateDate,120) FROM Students 

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

7、保留2位小数

  1. SELECT CAST(Amount as NUMERIC(18,2)) FROM Orders 

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

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

表Person数据如下:

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

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

删除后结果如下:

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

  1. SELECT   NAME FROM SYSOBJECTS WHERE TYPE='U' 

结果如下:

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

  1. SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('Person'

结果如下:

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

  1. UPDATE A SET A.Name=(SELECT B.Name FROM B WHERE A.ID=B.ID) 

12、获取笛卡尔积

  1. SELECT A.*,B.* FROM A,B 

13、按姓氏笔画多少排序

  1. SELECT Name FROM Person ORDER BY Name  Collate Chinese_PRC_Stroke_CI_AS 

结果如下:

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

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

  1. WAITFOR DELAY '0:0:3' SELECT * FROM Person 

结果如下:

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

  1. SELECT * FROM Person WHERE ID=1 FOR XML PATH 

结果如下:

16、将小数转换成百分数

  1. SELECT CAST(CAST((0.8888*100) AS NUMERIC(18,2)) as VARCHAR(20)) + '%' 

结果如下:

17、处理除数为0

  1. SELECT ISNULL(A/NULLIF(B,0),1) FROM TABLEA 
  2. 或 
  3. SELECT  CASE WHEN B=0 THEN 1 ELSE A/B END  FROM TABLEA 

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

 

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

 

责任编辑:武晓燕 来源: SQL数据库开发
相关推荐

2024-08-08 09:15:08

SQL代码复制表

2021-09-22 09:43:47

Python 开发编程语言

2017-08-24 10:00:05

SDWANGoogle网络

2015-11-10 09:26:24

51CTO云计算专题

2016-12-02 08:53:18

Python一行代码

2019-10-30 14:44:50

区块逻Token论文

2020-12-03 08:25:10

Nginx

2013-02-26 09:46:10

大数据非结构化数据

2024-05-27 00:00:00

.NET游戏引擎C#

2019-06-24 12:28:16

戴尔

2022-02-23 14:37:48

代码Pythonbug

2023-07-19 08:01:04

switch​select​语句

2019-11-26 14:53:11

Nginx反向代理负载均衡

2014-02-12 13:43:50

代码并行任务

2022-04-09 09:11:33

Python

2017-04-05 11:10:23

Javascript代码前端

2015-03-20 14:51:09

Testin云测

2020-02-19 15:02:23

代码开发工具

2021-08-23 17:49:02

代码开发模型

2023-05-04 12:43:26

机器学习算法
点赞
收藏

51CTO技术栈公众号