排序

语法:

select 字段列表 from 表列表 where 源数据筛选条件 group by 分组字段列表 (having 分组后筛选的条件)order by (排序字段列表) 对结果集做记录重排 desc ,次要排序字段列表 asc :默认为升序排列

排序不会修改结果集的数据,只是对结果集数据做重排,order by 一般放在后面,让其他语句先筛选,最后在排序。

select * from Teacher where Gender = 'False' order by Name desc,Age asc

游标

定义:

游标是处理数据的一种方法,是SQL Server的一种数据访问机制,它允许用户访问单独的数据行。

优点:

可对每一行进行单独处理,降低系统开销和潜在的阻隔等情况。

连接数据库管理系统和应用程序设计之间的桥梁。

提供对基于游标位置中的行进行删除和更新的能力。

应用:

用于存储过程用于触发器用于T_SQL脚本中

功能:

在查看或处理结果集中,向前或向后浏览数据。

分类:

1、Transact_SQL游标 :主要用于T_SQL脚本,存储过程和触发器。

2、API 服务器游标:支持OLE DB和ODBC中的API游标函数,API服务器游标在服务器上实现

3、客户端游标:由SQL Server Native Client ODBC驱动程序和实现ADO API的DLL在内部实现。客户端游标通过在客户端高速缓存所有结果集中的行来实现。

注意:

表中数据是集合,集合是没有顺序的。Order By 返回的数据是有序的,故我们把order by以后返回的对数据集合的处理访问,方能用到“游标”。

查询

查询与聚合函数一起出现在select后面进行查询的列,只有两种可能:被聚合 被分组

select Classid ,count(*) from Teacher group by Classidselect Sum(Classid),count(*) from Teacher

SQL语句执行的先后逻辑顺序

select Top 1 Classid ,Gender,Count(*)as cnt from Teacher where Salary is not null group by Classid ,Gender having count(*)>3 order by cnt select top 2 Classid ,Gender,Count(*)as cnt from Teacher where Salary is not null group by Classid ,Gender order by Classid

SQL语句注意事项:

1.where 里面不能出现聚合函数作为条件,且任何一个关键字只能出现一次。

select Classid ,Gender,count(*) as cnt from Teacher where cnt>3 group by Classid ,Gender order by Classid

2.先执行了 where ,再执行select.

3.having:是对分组统计得到的结果集做筛选的,位于group by 之后,不能使用未参与分组的列。having的使用基本上和where是一样的,也可以用in.

分组

语法:

select col1,col2,col3 ,count(col4) from table1 group by col2,col1,col3

问:什么时候需要分组?

关键字:

每一个 、不同 、各自 、分别等。

查看原文 >>
相关文章