SQL语言_3 模糊查询和聚合函数
作者:田超凡
版权所有,转载请注明原作者,仿冒侵权必究法律责任
1.数据库中查询的机制
查询是针对数据表中已存在的数据行而言的,可以将它简单理解为筛选,将符合条件的数据抽取出来,并通过T-SQL语句中的要求和限制对返回结果进行处理后实时反馈给用户。
数据库表在接收查询请求时,可以将它理解为“它将逐行判断”,将符合条件的记录抽取出来并结合在一起形成记录集。在记录集中依然可以进行再次查询。
2.T-SQL基础查询语句是什么?
查询表中所有数据 SELECT * FROM 表名
查询表中部分数据
SELECT 列名1,列名2
FROM 表名
WHERE 查询条件
ORDER BY 排序(升序ASC/降序DESC,如不指定排序方式,则默认为升序排序ASC)
3.T-SQL稍复杂的查询语句有哪些?
注意:以下查询语句产生的结果均只对结果集产生影响,或者可以理解为是虚拟的,对原表中的数据不会造成任何影响。
在查询结果中使用列的别名:
- SELECT 列名 AS 别名….
② SELECT 别名=列名…
③SELECT 列名 别名(空格分隔)
在查询结果中合并多个列:
SELECT 列名1+列名2+列名3… AS 别名
使用“+”操作符在查询结果中合并多个列,同样可以指定列的别名。如果其中有一个列的数据类型是字符串型,则直接返回合并后的列,如果要合并的每一个列的数据类型都是数字数据类型,则只返回数值相加后的结果。
查询空值:
WHERE 列名 IS NULL/IS NOT NULL
判断某列是否为空
在查询结果中插入常量列:
SELECT 常量值 AS 列名
查询结果中会多出一个列,这个列中的所有数值都是定义的常量值。
限制返回的行数:
SELECT TOP 行数(必须是整数型) 列名1,列名2…
满足查询条件的前提下,返回指定数量的数据行
限制返回的行数所占的百分比:
SELECT TOP 百分数 PERCENT 列名1,列名2…
满足查询条件的前提下,返回查询结果中指定比例的行数
4.T-SQL如何对查询后的结果进行排序?
ORDER BY 列名1 ASC/DESC,列名2 ASC/DESC….
使用ORDER BY字句可以在查询结果中对一个或多个列进行排序(升序ASC/降序DESC),如不指定排序方式,则默认升序排序ASC
不论查询语句有多复杂,查询条件有多少限制,ORDER BY子句只能用在查询语句中的结尾。在对查询结果按多个列进行排序时,只以指定的第一个排序的列为基准,也就是说,当指定的第一个列中的数据相同时,才会依据指定的后面的列指定的排序方式进行排序。如果第一个列(基准列)中的数据均不相同,那么在后面指定的排序列不会有任何排序效果(也就是无效的)。
5.T-SQL使用查询排序的一些实用案例和技巧有哪些?
通常将ORDER BY字句和TOP关键字配合使用,从而满足某些只返回特定数量的数据行的特殊要求:比如最大值、最小值、前三名、后三名…..等等,使用ORDER BY字句指定按一个或多个列进行排序(升序ASC/降序DESC),使用TOP关键字限制返回的行数,以完成这些特殊要求。
6.SQL Server中有哪几类常见的内部函数?它们的作用分别是什么?
字符串函数(用于操作字符串)
日期函数(用来对日期时间类型的数据进行处理)
数学函数(用来操作数字,进行常用的数学计算)
系统函数(系统内置的函数,方便获得一些系统信息,比如登录名、用户名、计算机名等等)
※通过本章的学习,你需要重点掌握的知识点:
1.什么是模糊查询?模糊查询的作用是什么?
2.什么是通配符?通配符的作用是什么?常用的通配符有哪些?
3.可以通过在查询语句中使用哪些关键字对数据进行模糊查询?这些关键字分别有什么作用?
4.什么是聚合函数?SQL Server中常用的聚合函数有哪些?分别有什么作用?
5.使用T-SQL基础查询语句和模糊查询关键字、内部函数(包括常见的内部函数和聚合函数)联合查询数据的一些注意事项?
※看看以下我的一些自我总结,看看有没有掌握住知识点:
1.
模糊查询是T-SQL中的一种查询机制,在使用模糊查询时,查询者对查询条件也是模糊的、大概的、不是非常明确的。
使用模糊查询可以将字符数据类型的列和某些字符串或字符串中的一部分进行匹配、或者在某个范围内进行查询,也可以在某些列举值内进行查询,从而执行满足用户需要的,在某一特殊范围内的查询,往往使用于用户对查询的条件不是非常确切的情况下。此时可以通过模糊查询缩小查询的范围,而不需要在一个很大的范围内进行数据检索,对于用户来说可以减少工作量,对于数据库来说可以提高检索效率,改善数据库的性能。
2.
通配符是一类字符,作用在于通配符可以用来替代一个或多个真正意义上的字符,在查询信息时,可以使用通配符作为替换字符出现,从而进行模糊匹配。
T-SQL中的常用通配符
_ 可以替代一个字符
比如:张_ ,则满足条件的数据有:张三,张兰…
% 可以替代任意长度的字符串
比如 %北京市%,则满足条件的数据有:北京市西城区、中国北京市、中国北京市东城区….
[] 在指定范围内的数据
比如 [3-8] 则满足条件的数据有:3,4,5,6,7,8
[A-Z] 满足条件的数据有:字母表中26个字母的大写形式
[^] 不在指定范围内的数据
比如[^3-5] 则满足条件的数据有:1,2,6,7,8…
在T-SQL中,通配符必须和LIKE字句一起使用,从而完成特殊的约束或要求
3.
①使用LIKE字句进行模糊查询
LIKE字句适用于匹配字符串或字符串中的一部分,LIKE字句仅适用于字符串,因此只能将LIKE子句和字符数据类型的数据联合使用
语法: WHERE 列名 LIKE ‘字符串,可以使用通配符’
②使用BETWEEN可以在某个范围内进行查询
使用BETWEEN可以查询两个已知值之间的一组为知值,必须指定初值和终值,初值必须小于等于终值(如果初值不小于等于终值,则不会报语法错误,但是也不会查询出任何数据),初值和终值之间必须使用AND连接,使用BETWEEN进行模糊查询时,将查询匹配包括初值、终值在内的初值和终值范围内的数据,一般只适用于数字和日期时间类型的数据
语法:WHERE 列名 BETWEEN 初值 AND 终值
③使用IN在列举值内进行查询
当需要查询的数据在某些列举值之一时,可以通过使用带有列举值的IN关键字进行模糊查询。查询时,将列举值放在IN关键字后面的一对圆括号内,列举值之间用逗号隔开。可以将NOT关键字和IN关键字合起来使用,将查询返回不匹配列举值的行。列举值的数据类型必须和与它匹配的列的数据类型一致。使用IN关键字在列举值内进行查询时,将查询匹配和列举值中的某一个值相同的数据。
语法:WHERE 列名 IN (列举值1,列举值2…..)
④使用NOT关键字可以进行取反操作
可以将NOT关键字和BETWEEN或IN联合使用,进行取反操作,即判断条件为不在某个范围内的数据或不在某些列举值内的数据
语法:
WHERE 列名 NOT BETWEEN 初值 AND 终值
WHERE 列名 NOT IN(列举值1,列举值2….)
4.
聚合函数是SQL Server中的一个内部函数,聚合函数给予某个列进行计算,并将返回的多个结果结合成一个结果(将多个值合并为一个值),它的作用是对一组数值进行计算,并返回计算后的值。聚合函数只返回一个值,因此不能将聚合函数和可能返回多个值的列放在一起查询,但是在一个查询中可以使用多个聚合函数。
常用的聚合函数有以下几种:
SUM()求和
作用:返回表达式中所有数值之和,忽略任何空值,只适用于数字数据类型的列。
AVG()平均数
作用:返回表达式中所有数值的平均数,忽略任何空值,只适用于数字数据类型的列。
MAX()最大值和MIN()最小值
MAX()返回表达式中的最大值,MIN()返回表达式中的最小值,MAX()和MIN()同样忽略任何空值,但是可以适用于数字类型、字符类型、日期时间类型的列。在字符序列中,MAX()返回排序序列的最大值,MIN()返回排序序列的最小值
COUNT()计数
返回提供的组或记录集中的计数,COUNT()函数可以使用于除text/image/ntext类型以外的任意数据类型,在COUNT()函数中可以使用替代符*,当使用替代符*时(COUNT(*)),将返回表中所有行的计数,包括包含空值的行。当使用COUNT()函数对某个列中的数据进行计数时,将忽略空值。
5.灵活运用T-SQL中的基础查询语句和模糊查询关键字、内部函数(包括聚合函数),可以通过使用WHERE字句限定条件和ORDER BY子句定义排序方式方便、快捷、高效地对数据进行检索,当然使用过程中也有一些注意事项:
- 查询语句中的规范化问题
SELECT 后面指定的列必须是要查询的数据表中实际存在的列,当查询需要返回一个具体的计算后的值的时候,应该考虑使用聚合函数对某列进行计算,聚合函数只返回一个值,因此不能将聚合函数和可能返回多个值的列放在一起查询,不然会报错。
FROM后面接的是要查询的表的名称,是查询语句的重要组成部分,不能省略。
WHERE用来限定条件,其后紧接条件表达式,但是不能使用聚合函数作为WHERE后面的条件表达式,如果需要使用聚合函数作为判断条件,只能在分组后的数据筛选时使用HAVING子句判断聚合函数的值
ORDER BY字句必须放在一个查询语句的结尾,ORDER BY一般只能依据具体的某个实际存在的列进行排序,不能在ORDER BY子句中使用任何的比较运算符等返回布尔类型的表达式。