数据查询
所谓查询,就是对存储于SQL Server中的数据的请求。分为两大类:一类主要用于数据检索的数据查询,另一类用于数据更新的行为查询。
使用字段列表指定输出字段
1、选取全部字段
若要选取全部字段作为SELECT查询的输出字段,要在SELECT子句中使用一个“*”就可以了,此时还必须要用FROM子句来指定作为查询的数据源(表或视图等)。
例:
select * from StuInfo;
2、选取部分字段
要从一个数据库表中选取部分字段作为SELECT查询的输出字段 ,可以在SELECT子句中给出包含所选取字段的一个列表,各个字段之间用逗号分隔,字段的顺序可以根据需要任意指定。
例:
select Stuname,Stusex FROM StuInfo;
3、设置字段别名
为了方便和实际需要,可以指定更容易理解的字段名来取代原来的字段名
语法格式:
- 原字段名 AS字段别名;
- 字段别名=原字段名;
- 原字段名 字段别名;(最常用)
4、字段的计算
如果用户需要用这样的格式查看数据“学员姓名-性别”,查询语句如下:
使用选择关键字限制记录行数
5、使用ALL关键字返回全部记录
如果在SELECT语句中没有使用任何关键字,则默认使用ALL关键字
例:
select ALL StuID,Stuname,Stusex from StuInfo;
6、使用DISTINCT关键字过滤重复记录行
在字段列表前面加上关键字DISTINCT,就可以消除查询结果中的重复记录。
仅当所有字段列表的值都相同时,才会消除
例:
select DISTINCT StuID from StuInfo;
7、使用TOP关键字仅显示前面若干条记录
在使用SELECT 子句选取输出字段时,如果只需要用到所选的前n条记录,那么可以在字段前面使用TOP n,/这样可以节省服务器资源,使服务器运算效率更高。
如果在字段列表前面使用TOP n PERCENT,则在查询结果中显示前面占总记录数的百分比为n%的记录。
例:
---TOP n
select TOP 4 * from StuInfo;
---TOP n PERCENT
select TOP 40 PERCENT from StuInfo;
8、对查询记录的选择与处理
对查询结果进行筛选
使用where 子句
(1)比较运算符(大小比较,包括>、<、>=、<=、<>、!>、!<)
(2)范围运算符(表达式值是否在指定的范围)
- between...and...
- not between...and...
(3)列表运算符(判断表达式是否为列表中的指定项)
- IN(项1,项2....)IN关键字可以选择与列表中的任意值匹配的行
- NOT IN(项1,项2....)
(4)空值判断符(判断表达式是否为空)
- IS NULL
- IS NOT NULL
(5)逻辑运算符
- NOT :求反操作
- AND:连接多个条件,多个条件同时满足时才返回true,有一个条件不满足结果就是FALSE。
- OR:连接多个条件,多个条件中只要有一个返回true,结果就是true,如果多个条件返回的都是false,则结果才是false。
(6) 模式匹配符(判断值是否与指定的字符通配格式相符)
- LIKE
- NOT LIKE
通配符 | |
% | 包含零个或更多字符的任意字符串 |
- | 任意字符串 |
[] | 指定范围(例如[a-f])或集合(例如[abcdef])或[1,3,5,7,8]内的任何单个字符 |
[^] | 不在指定范围(例如[^a-f])或集合(例如[^abcdef])内的任何单个字符 |
9、对查询结果排序
使用order by子句
当用户要对查询结果进行排序时就需要在SELECT语句中加ORDER BY子句,在ORDER BY子句中可以使用一个或多个排序要求,优先级次序从左到右。
排序的方向可以是升序或降序。ASC和DESC用于指定排序方式。ASC指定按递增顺序,DESC则按递减顺序,默认的排序方向为递增顺序。空值(NULL)将被处理为最小值。
例:
---查询语文成绩,并按照降序排列
select * from Stumarks where subject ='语文'order by desc;
使用order by子句对多列进行排序
---查询语文成绩,并按照降序排列
--成绩相同的按照学号降序排列
select * from StuMarks where Subject='语文' oreder by Score DESC,StuID DESC;
order by 子句与top 关键字一起使用
---查询Stumarks中“数学”成绩前三名的学生的数据
select top 3* from Stumarks where subject='数学' ORDER BY Score DESC;
10、对查询结果计算
(1)使用SUM函数计算字段的累加和
(2)使用AVG函数计算字段的平均值
(3)使用MAX和MIN函数计算字段的最大值和最小值
(4)使用COUNT函数统计记录行数
11、对查询结果分组
(1)使用GROUP BY子句
(2)使用HAVING 子句