:distinct修饰多列
这里就以age和name列为基准,比如
12,a13,b12,a13,d执行结果就是12,a13,b13,d:order by
如果不适用order by,检索出的数据的顺序没有意义,数据可能进行更新或删除,则默认顺序会受到SQL Server重用回收存储空间的影响。
order by多列时,仅在多个行具有相同的age值时才对name进行排序。
:where字符类型默认不区分大小写
:%通配符
%表示匹配出现任意次数的任何字符,默认不区分大小写,不能匹配NULL。
:_通配符
_通配符值匹配单个字符,需要注意:char和nchar是固定长度(创建表时指定的长度),输入数据没有达到长度就自动以英文空格填充,varchar和nvarchar是变动长度的。
列name 是nchar(50)类型,然后填充abc,aaa,cab,ddd 4条数据结果不会查询到数据,因为name后面被填充了空格,将name修改为nvarchar(50)类型结果输出aaa,cab
:[]通配符
匹配指定中括号内的一个字符,只能匹配单个字符,[AB]%表示A或B开头(默认不区分大小写),使用^ 表示否定,比如[^A]%。
上面语句匹配name字段第二个字符不是a的列
:聚集函数
AVG()只能确定特定数值列的平均值,忽略列值为NULL的行。
Count(*)对表中行的数目进行计数,不管表列中是否包含NULL。Count(column)对特定列进行计数,忽略NULL值。Max(),Min(),Sum()都忽略列值为NULL的行。上面所有的聚集函数都可以指定distinct参数,计算只包含不同的值。:group by
group by子句中列出的每个列都必须是检索列或有效的表达式(不能是聚集函数)
如果在select中使用表达式,则必须在group by子句中指定相同的表达式,不能使用别名。如果分组列中具有NULL值,则NULL将作为一个分组返回。
group by子句必须出现在where子句之后,order by子句之前。:过滤分组
where过滤行,having过滤分组,where在数据分组前进行过滤,having在数据分组后进行过滤。
本文版权归kennyMc和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。