数据排序
ORDERBY
子句位于
SELECT
语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,
ASC
)还是降序(从大到小列,
DESC
)。
按照年龄升序排序所有学生信息的列表:
SELECT * FROM Student ORDER BY
sAge
ASC
按照英语成绩从大到小排序,如果英语成绩相同则按照数学成绩从大到小排序:
SELECT * FROM Score ORDER BY
english
DESC,math
DESC
ORDERBY
子句要放到
WHERE
子句之后:
SELECT * FROM Score where
english
>=60 and math>=60 ORDER BY
english
DESC,math
DESC
Orderby
语句一般要放到所有语句的后面,就是先让其他语句进行筛选,全部筛选完成后,最后排序一下。
表中数据是集合,集合是没有顺序的。
Order by
返回的数据是有顺序的,故此我们把
order by
以后返回的数据集合叫“游标”
数据分组
在使用
select
查询的时候,有时需要对数据进行分组汇总(即:将现有的数据按照某列来汇总统计),这时就需要用到
group by
语句。
select
语句中可以使用
group by
子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息。
//
分组一般都和聚合函数连用。
GROUPBY
子句必须放到
WHERE
语句的之后
,Group By
与
Order By
都是对筛选后的数据进行处理,而
Where
是用来筛选数据的。
没有出现在
GROUP BY
子句中的列是不能放到
SELECT
语句后的列名列表中的(聚合函数中除外)
–
错误:
select
sClassId,count
(
sName
),
sAge
from student group by
sClassId
–
正确:
select
sClassId,count
(
sName
),
avg
(
sAge
) from student group by
sClassId
Having
语句
对表中的数据分组后,会得到一个分组后的结果集,如何对该结果集在进行筛选?→
having
注意
Having
中不能使用未参与分组的列,
Having
不能替代
where
。作用不一样,
Having
是对组进行过滤。
Having
是
GroupBy
的条件对分组后的数据进行筛选(与
Where
类似,都是筛选,只不过
having
是用来筛选分组后的组的。)
在
Where
中不能使用聚合函数,必须使用
Having
,
Having
要位于
Group By
之后。
Having
的使用几乎是与
where
一样的,也可以用
in
。
–
Having count(*) in (5,8,10)
类型转换
•CAST( expression AS data_type)
•convert ( data_type,expression,[style])
•
Select‘
您的班级编号’
+1
错误这里
+
是数学运算符
•
SELECT
FIdNumber
,
•
CAST
(
RIGHT
(sNo,3)
AS
INTEGER
)
as
后三位的整数形式
,
•
CAST
(
RIGHT
(sNo,3)
AS
INTEGER
)+1
as
后三位加
1,
•
CONVERT
(
INTEGER
,
RIGHT
(sNo,3))/2
as
后三位除以
2
•
FROM
student
•
对编号排序,但编号是字符串类型。
1
、
2
、
11
、
3
、
21
、
36…
•
对日期的转换。转换成各种国家格式的日期。
–
select
convert(varchar(
20
),getdate(),
104
)
–
Style
的格式,查
sql
帮助。(输入
convert
函数查询)