SQLServer相关操作(一)

下面有三个表,分别为gender(性别表),school(学校表),student(学生表)
gender(性别表)
在这里插入图片描述

school(学校表)
在这里插入图片描述

student(学生表)
在这里插入图片描述

1,查询数据
查询数据主要使用了 SELECT语句,最基本的形式为 SELECT 要查找的列名 FROM 该列所在的表名。
例如查school表中的school_name列
SELECT
school_name
FROM
School
查询结果:
在这里插入图片描述

2,对数据进行排序
对数据进行排序主要是在查询数据后使用了 ORDER BY语句,语法为 SELECT 要查找的列名 FROM 该列所在的表名 ORDER BY 对查询结果集进行排序的列名或表达式 ASC或DESC (ASC,DESC分别指按升序或降序对指定列中的值进行排序,如果不写则默认为升序)

例如查询student表中的studentnName,school_id列,并且通过school_id倒序排序。
		SELECT
			studentName,school_id
		FROM
			student
		ORDER BY 
			school_id DESC
	查询结果:
		 ![在这里插入图片描述](https://img-blog.csdnimg.cn/97f443481b9c4a89a50e42dfbc3ecc7a.png)

假设有一个表1,表1中有三个列名,分别为列名1,列名2,列名3。

1).以下语句,首先按列名2进行排序,然后按列名3进行排序
		SELECT
			列名1,
			列名2,
			列名3
		FROM
			表1
		ORDER BY 
			列名2,
			列名3 DESC

2).按不在选择列表中的列对结果集进行排序,以下按照列名3进行排序
		SELECT
			列名1
		FROM
			表1
		ORDER BY 
			列名3 DESC
注意:列名3必须在表1中定义,如果不是,那么查询无效。

3).  LEN() 函数返回字符串的字符数。 
以下语句使用 ORDER BY 子句中的 LEN() 函数来检索按名字长度排序。
		SELECT
			列名1,列名3
		FROM
			表1
		ORDER BY 
			LEN(列名3) DESC
	通过列名3中名字的长度进行排序。

3.限制返回行数
SELECT TOP语句
用于限制查询结果集中返回的行数或行百分比。
由于存储在表中的行的顺序是不可预测的,因此 SELECT TOP 语句始终与 ORDER BY 语句一起使用。结果集限于前 N 个有序行数。
假设有一个表1,表1中有产品列(列1),价格列(列2)

1. 使用具有恒定值的TOP

以下示例使用常量值返回前 10 个最贵的产品。
SELECT TOP 10
列1,
列2
FROM
表1
ORDER BY 列2 DESC;

2. 使用TOP返回行的百分比
以下示例使用 PERCENT 指定结果集中返回的产品数。假设列1中有301个产品,因此百分之一是3.01,SQL Server将其进到下一个整数,这种情况会返回4行记录
	SELECT TOP 1 PERCENT 
		列1,
		列2
	FROM
		表1
	ORDER BY 
		列2 DESC;

3. 使用TOP WITH TIES
	以下返回了最贵的前三个产品,如果有与第三个产品价格相同的,都会查询显示出来
	SELECT TOP 3 WITH TIES 
		列1,
		列2
	FROM
		表1
	ORDER BY 
		列2 DESC;

OFFSET FETCH 语句

OFFSET和FETCH 语句是ORDER BY 语句的选项,它们用于限制查询返回的行数。必须将 OFFSET 和 FETCH 子句与 ORDER BY 子句一起使用
OFFSET 和 FETCH 子句比实现 TOP 子句更适合实现查询分页解决方案
语法:

ORDER BY 列名 [ASC |DESC]
OFFSET offset_row_count {ROW | ROWS}
FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY
在上面语法中,
OFFSET 子句指定在开始从查询返回行之前要跳过的行数。 offset_row_count 可以是大于或等于零的常量,变量或参数。
FETCH 子句指定在处理 OFFSET 子句后要返回的行数。 offset_row_count 可以是大于或等于 1 的常量,变量或标量。
OFFSET 子句是必需的,而 FETCH 子句是可选的。 此外, FIRST 和 NEXT 是同义词,因此可以互换使用它们。

	1)	获取最贵的10产品
		SELECT
			列1,
			列2
		FROM
			表1
		ORDER BY 列2 DESC, 
		OFFSET 0 ROWS 
		FETCH FIRST 10 ROWS ONLY;
	2) 跳过前10个产品并选择接下来的10个产品
			SELECT
				列1,
				列2
			FROM
				表1
			ORDER BY 列2 DESC, 
			OFFSET 10 ROWS 
			FETCH FIRST 10 ROWS ONLY;
	3) 跳过前10个产品并返回其余产品
			SELECT
				列1,
				列2
			FROM
				表1
			ORDER BY 列2 DESC, 
			OFFSET 10 ROWS 
	4)分页查询
			分页查询需要参数,PageSize:每页多少条,pageNum:页数
			SELECT
				列1,
				列2
			FROM
				表1
			ORDER BY 列2 DESC, 
			OFFSET (pageNum-1) * pageNum ROWS 
			FETCH NEXT PageSize ROWS ONLY;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值