5_mysql查询之选择select列
2020-06-06 本文已影响0人
那是个好男孩
-
选择指定的列
select Sname,Sage from student;
-
定义列别名
select Sname as 姓名,Sage as '学生 年龄' from student;
注意:当自定义的列标题有空格的时候,必须用' '引号包裹起来
不允许在where语句中使用列别名! - 替换查询结果中的数据
case
when 条件1 then 表达式1
when 条件2 then 表达式2
......
else 表达式
end
举例:查询xs表中计算机专业各同学的学号、姓名和总学分,对总学分按如下规则进行替换 => 若总学分为空值,替换为“尚未选课”;若总学分小于50,替换为“不及格”;若总学分在50~52之间,替换为“合格”;若总学分大于52,替换为“优秀”。总学分列的标题更改为“等级”。
select 学号, 姓名,
case
when 总学分 is null then '尚未选课'
when 总学分 < 50 then '不及格'
when 总学分 >=50 and 总学分<=52 then '合格'
else '优秀'
end as 等级
from xs
where 专业名 = '计算机';
-
计算列值
按120分制重新计算成绩,显示xs_kc表中学号为081101的学生成绩信息。
select 学号,课程号,成绩*1.20 as 成绩120 from xs_kc where 学号= '081101';
-
清除结果集中的重复行 (distinct关键字)
select distinct 专业名,总学分 from xs;
- 聚合函数
函数名 | 说明 |
---|---|
COUNT | 求组中项数,返回int类型整数 |
MAX | 求最大值 |
MIN | 求最小值 |
SUM | 返回表达式中所有值的和 |
AVG | 求组中值的平均值 |
STD或STDDEV | 返回给定表达式中所有值的标准差 |
VARIANCE | 返回给定表达式中所有值的方差 |
GROUP_CONCAT | 返回由属于一组的列值连接组合而成的结果 |
BIT_AND | 逻辑或 |
BIT_OR | 逻辑与 |
BIT_XOR | 逻辑异或 |
求学生总人数
select count(*) as 学生总数 from student;
注:count(*) 返回检索行的总数目,不论其是否包含Null值
统计总学分在50分以上的人数
select count(总学分) as '总学分50分以上的人数' from xs where 总学分>50;
Ⅰ. 检查总学分这列 其字段值不为null
Ⅱ. 其字段值>50
Ⅲ. 返回满足上述两个条件的行数
求CS系的学生 最大与最小的年龄
select max(Sage),min(Sage) from student where Sdept='CS';
求CS系的学生 年龄总和以及年龄平均值
select sum(Sage),avg(Sage) from student where Sdept='CS';
求CS系所有学生的学号
select group_concat(Sno) from student where Sdept='CS';
+-------------------------------+
| group_concat(Sno) |
+-------------------------------+
| 96001,96002,97002,97004,97005 |
+-------------------------------+