数据操作语句(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课程的最高成绩Gradeselect max(grade) 最高分,min(grade) 最低分 from SC where Cno='c001'
注意:1、计算返回值得类型是计算列中的类型;2、聚合函数不能出现在where中;
五、分组统计(GROUP BY)
GROUP BY 分组依据列 HAVING 条件对 分组依据列进行分组,having 表示分组后进行条件判断。
1、统计SC表中每门课Cno的选课人数Snoselect 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,在进行分组,有利于提高效率;
数据操作语句DML(一)
最新推荐文章于 2024-09-16 21:07:39 发布