数据操作语句(DML),包含了SELECT、UPDATE、INSERT、DELETE等语句。下面来详细讲解SELECT的查询操作。下面以SQL
Server为例
一、选定列
1、查询了所有列,*表示所有列
select * from 表名
2、选择特定列
select 列名,列名... from 表名
3、给列取别名(AS,也可以不用)
select 列名 as 别名,列名 as 别名... from 表名
二、选定表中的元组
1、消除取值相同的行(distinct)
查询的列名中去掉所以重复项。
select distinct 列名 from 表名
2、确定范围(between ... and ..)
查询20到30的数据。
select * from 表名 where 列名 between 20 and 30
3、确定集合(IN)
select * from 表名 where 列名 IN('计算机','信息管理','口语'
4、字符串匹配(LIKE)
_ :下划线匹配一个字符;
% :匹配n个字符;
[ ] :匹配【】中的任意一个字符;
[^ ]:不匹配【】中的任意一个字符;
select * from 表名 where 列名 like '[张李]%' //查询列名中以张或李开头的数据
5、空值查询
IS NULL:为空;
IS NOT NULL:不为空;
select * from 表名 where 列名 is null //查询列名为空的所以数据
6、多重查询(and)
三、对查询结果进行排序
order by 列名 ASC/DESC :对列名中的数据升序或降序排列
Select * from SC where order by Sno desc //对表SC中的Sno列进行降序排列
四、聚合函数
count(*) :统计查询元组的个数;
count(distinct 列名):统计本列的个数,distinct去掉重复列;
sum(列名):计算列的和;
avg(列名) :计算列的平均值;
max(列名):计算列的最大值;
min(列名) :计算列的最小值;
1、统计SC表中Sno学好为'123'的学生考试总成绩(Grade)
select sum(Grade) from SC where Sno = '123'
2、查询SC表中Cno课程中c001课程的最高成绩Grade
select max(grade) 最高分,min(grade) 最低分 from SC where Cno='c001'
注意:1、计算返回值得类型是计算列中的类型;
2、聚合函数不能出现在where中;
五、分组统计(GROUP BY)
GROUP BY 分组依据列 HAVING 条件
对分组依据列进行分组,having 表示分组后进行条件判断。
1、统计SC表中每门课Cno的选课人数Sno
select Cno 课程号,count(Sno) 选课人数 from SC group by Cno
2、选择SC表中选课门数Cno超过3门的学生学号Sno和选课门数
select Sno,count(*) 选课门数 from SC group by Sno having count(*)>3
注意:1、查询选择的列中只能有聚合函数和分组依据列;
2、当有多个分组依据列是,以最小组为单位进行统计;
3、group by 后只能用having,不能用where;
4、可以在分组前使用where,在进行分组,有利于提高效率;