第二天 -- 《2014-07-07 sql server》2——检索(Top、Distinct、聚合函数、Like)

一、上午  《09、Top、Distinct》

 

1、Top、Distinct

--使用top可以只返回结果集的前N条记录
select top 10 * from Student
--也可以限百分比
select top 10 percent * from Student --不是四舍五入,而是取Ceiling(取顶)

 


--distinct 去除重复值。它的作用与原始的数据表的记录无关。只针对select结果集,去除select指定的每个字段都重复的记录(只保留一条)。
select distinct Sex,Address from Student

-distinct去重针对的是整个select字段列表,而非其中某一个字段。

注意:如果检索里有distinct 和 top 关键字,distinct必须放前面,否则报错。

 

 

二、上午  《10、聚合函数》

 1、五个函数:MAX、MIN、AVG、SUM、COUNT(统计记录数)

 SUM和AVG只能对数值进行计算。

1 --如果是字符串,那么就按字符串的字母(或拼音)进行查字典的排序,得到最大和最小值
2 select min(StudentName) from Student
3 select MAX(StudentName) from Student

2、聚合函数一般只在以下三个子句中使用:

(1)select子句(2)having子句(3)compute子句(将生成的合计值作为另一个结果集)

 

3、COUNT(*)  与COUNT(列)的区别在于:

  前者统计符合条件的所有行数;后者只统计符合条件的(指定列)非NULL记录。

 同理MAX、MIN、AVG、SUM函数全都忽略(不计算)NULL值

 

 

三、上午  《11、范围条件查询》--    between  A and B   和  in(A,B,C)

1、between ...and...   是大于等于前面的值 小于等于 后面的值(必须前面值小,后面值大)。否则查不到想要的结果(但不报错)

select * from Student where Sex='女'  and   BornDate   between   '1999-1-1'   and    '1995-1-1'   -- 包括前者和后者。大小值写反了,查不到结果,但不报错

另外between范围值如果存在null,那么这个范围实际上是不可知的,查询的结果集为空。(是因为结果不可知)

 

2、in:可以指定一个具体的范围,它可以取其中的任意值. 要求值的类型是一致(值可以相互转换)

select * from Student where ClassId in (1,2,'3','4')            -- 因为ClassId是一个int 所以要把in后面的范围转为整数

 

 

四、上午  《12、模糊查询》--  LIKE语句

1、LIKE的三个通配符:%   _   []

具体如下

%      代表任意个任意字符。(也可以代表0个

 _      代表一个任意字符

[ ]      代表一个具体的或者连续的范围,能够匹配其中一个字符 如[12345]  匹配1~5任何一个字符;[after] 匹配a/f/t/e/r中的任何一个字符

[0-9]  代表一个匹配从0~9任何一个字符;[a-z]代表二十六个字母中的任何一个字符

[^after] 代表一个字符,它不是a/f/t/e/r中的任何一个字符。

[^1-7]  代表一个字符,它不是1/2/3/4/5/6/7中的任何一个字符。

注意:   ^符号只有SQLServer支持。其他DBMS要使用not like

 

 

五、补充内容:转义字符

1、在字符串中输入单引号。

在字符串内部以一个单引号作为转义后一个单引号就是字符串内容。如下黄色标注所示

where  name  like  '%''你猜''%'

双引号是普通字符,直接输入即可。

 

2、模糊查询中通配符的转义。

使用escape关键字定义转义符。当转义符置于通配符之前时,该通配符就解释为普通字符。例如要搜索在任意位置包含字符串5%的字符串,要使用如下所示语句:
where name like  '%5$%%'  escape '$'            --这里定义$符号做转义字符,其后一个字符当做普通字符而非通配符。

同理对于下划线_等通配符都要这么用,如下sql搜索在任意位置包含字符串5_的字符串:

where name like  '%5?_%'  escape '?'            --这里定义?符号做转义字符,其后一个字符当做普通字符而非通配符。

 

3、在通配符上加方括号也可以将该字符转义为普通字符。

另外方括号用法注意看下面例子:

Symbol           Meaning
like '5[%]'             5%
like '[_]n'              _n
like '[a-cdf]'          a, b, c, d, or f
like '[-5cdf]'          -, 5, c, d, or f
like '[[]'            [
like ']'              ]
like 'abc[_]d%'          abc_d and abc_de...
like 'abc[def]'            abcd, abce, and abcf
like '[^1-9]'          0
like '[^1-9b-z]'          0, a

 

posted on 2017-07-21 16:45  困兽斗  阅读(234)  评论(0)    收藏  举报

导航