SQL Server数据库--》top关键字,order by排序,distinct去除重复记录,sql聚合函数,模糊查询,通配符,空值处理。。。。

时间:2023-12-12 22:03:20

top关键字:写在select后面 字段的前面

比如你要显示查询的前5条记录,如下所示:

select top 5 * from Student

一般情况下,top是和order by连用的

order by用在表名的后面 order by后面就填你要按它排序的字段,是升序排序(从小到大排序)

percent:百分比 %=percent

比如要显示5%的数据处理,不能写top 5%,而是top 5 percent

提示:如果top 5 percent出来的数是3.1条数据的话,是取四条数据,而不是3条

使用distinct去除重复记录:

注意:重复记录与表的原始数据无关,它只关注通过查询语句查询出来之后的结果集,如果虚拟结果集的每一列的值都一样,那么才算重复记录,如果有一个值不一样,那么就是一条单独的记录

--sql聚合函数--

count();求满足条件的记录数,与值无关

注意:count()括弧中随意传入参数,因为它与具体值无关,只与记录数有关,一般传入0或 * 号。如count(*)

max();求最大值 括弧中传入字段名  如max(age)

min();求最小值

sum();求和    括弧中传入要求和的字段名

avg();求平均值   括弧中传入要求平均值的字段名

注意:sum/avg不能针对日期和名字计算

--模糊查询--

注:select 字段列表 from 表列表 where 条件 Order by 排序字段

下面的都是作为条件,用在where后面

1.between...and  相当于>=n,<=m 优先使用between...and,因为做过优先处理,效率高

它是用来描述数值或日期值的,对字符串没用

2.in相当于and,and,and 其实可以in(1,2,3)三选一

3.not in(1,2,3)不在这个范围之内

以上的between...and,in,not in 都是用在where后面的字段的后面

通配符:

1  %代表任意个任意字符

2  _:它就代表一个字符占位,相当于.代表一个具体的字符

3 []:相当于指定一个具体的范围或者具体的值范围。这点用 法与正则表达式一样

4 [^]:取反

like:像。。一样:如果要使用通配符,则必须配合 模糊查询关键字

空值处理:null是指不知道,而不是像C#里面一样说没有分配地址 所以判断是否为null值的时候不能用等号(=),而是用is,如:select * from Student where name is null

判断的是学生表中的name字段是不是null

ISNULL()方法:用在select 字段 的后面,为的是判断所查询出的结果(这个字段)是否为null,如果为null值就用指定内容进行替换如下所示:

Select *,ISNULL(name,‘没有写名字’) from Student

数据排序:order by

排序默认是升序排序

升序:asc

降序:desc

如果排序有多个字段,是指先按第一个字段进行排序,相同的记录再按第二个字段排序

如:select * from Student order by sex,name desc

分组统计:先分组再统计

分组:group by 对指定的字段进行分类 用再表的后面 然后group by 后面再接要被分组的字段

如:

--得到男生女生的总人数

Select sex,Count(*) from Student group by sex

查询语句的顺序:

Select from where group by having order by

注意:where是对源数据做筛选的。它只能去使用from后面的表中所指的列

Where条件后面不能使用聚合函数,如果使用了就会报错

having:

如果是对分组之后的结果集做筛选,那么就需要使用having,因为where条件后面不能释怀聚合函数

如:

Select classId,Count(*) from Student group by classId having COUNT(*) >2

Sql的分类

1、DDL(数据定义语言,建表,建库等语言)

2.DML(数据操作语言mutipulation) 增加删除修改和查询 也叫CUID:数据库的增删改查3.DCL(数据库控制语言)

类型转换

1.--cast(源数据 as 目标类型)--

2.--Convert(目标类型,源数据,格式(日期值的格式))

Select getdate()--得到当前系统时间  select GETDATE()

联合结果集union  (很少使用)

Union all :不管结果是否重复,都显示出来

Union:重复的数据不显示出来

Union在合并多个结果集的限制:

1.要有相同数量的列

2.对应的列的类型要一致,类型可以强制转换()cast或Convert