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

开发 前端
​平时写的SQL少则几行,多则上百行,总在想能不能一行SQL就能解决问题?虽然有点想多了,但还是有不少功能一行SQL就能搞定。

平时写的SQL少则几行,多则上百行,总在想能不能一行SQL就能解决问题?虽然有点想多了,但还是有不少功能一行SQL就能搞定。

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

SELECT * FROM TableName 

INSERT INTO TableName VALUES(...) 

TRUNCATE TABLE TableName .....

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

1、复制表结构

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

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

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

SELECT TOP 1  1  FROM Customers

结果如下:

图片图片

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

3、随机获取一行数据

表Customers中数据如下:

图片图片

现在随机获取一行数据;

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

结果如下:

图片

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

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

表Person数据如下:

图片图片

获取第6到10行数据;

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

结果如下:

图片图片

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

5、对空值赋默认值

SELECT  ISNULL(Price,0) FROM  Orders

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

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

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

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

7、保留2位小数

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

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

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

表Person数据如下:

图片图片

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

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

删除后结果如下:

图片图片

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

SELECT   NAME FROM SYSOBJECTS WHERE TYPE='U'

结果如下:

图片图片

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

SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('Person')

结果如下:

图片图片

11、将B表中的字段内容更新到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

结果如下:

图片图片

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

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

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

结果如下:

图片图片

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

SELECT * FROM Person WHERE ID=1 FOR XML PATH

结果如下:

图片图片

16、将小数转换成百分数

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

结果如下:

图片图片

17、处理除数为0

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

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

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

2021-05-28 07:39:17

SQL代码操作

2021-09-22 09:43:47

Python 开发编程语言

2023-05-04 12:43:26

机器学习算法

2024-06-11 09:02:30

2023-03-06 16:38:30

SQL数据库

2024-04-30 09:02:48

2023-12-20 08:23:53

NIO组件非阻塞

2023-06-01 08:22:13

2024-04-07 00:00:03

2024-07-30 08:22:47

API前端网关

2024-08-20 08:29:55

2024-11-08 09:48:38

异步编程I/O密集

2024-10-10 16:53:53

守护线程编程

2021-04-20 23:16:06

SparkSQL语法

2015-11-10 09:26:24

51CTO云计算专题

2022-11-28 00:04:17

2024-01-15 12:16:37

2023-07-11 00:12:05

2023-11-02 10:22:29

gRPC后端通信

2024-06-27 10:51:28

生成式AI领域
点赞
收藏

51CTO技术栈公众号