MySQL 第三章3.1 数据库查询(select)
select语句可以从一个或多个表中选取符合某种条件的特定行和列,结果通常是生产一个临时表,下面介绍select语句,select语句是SQL的核心
select
[all | distinct | distinct row] 在多表连接时去掉重复排列
列名
from 表名
where 条件
group by {列名 | 表达式 | position}
having 条件     # 作用同where 只是条件是聚类时使用
order by {列名 | 表达式 | position}
3.1.1 选择输出列
select语句中需要指定查询的列
(1) 选择指定列
select 姓名,专业名,总学分
from xs;
(2) 选择指定列并定义列别名
select 学号 as number,姓名 as name,专业名,总学分 as mark
from xs;
注意:
- 自定义的列别名中有空格时,必须用引号将列别名括号起来
select 学号 as 'student number',姓名 as' student name',专业名,总学分 as mark
from xs;
- 不允许在where子句中使用列别名,因为这个select未完成还没定义出列别名构成的表,where语句只能检测from子句中出现的表的信息。
select 学号 as number,姓名 as name,专业名,总学分 as mark
from xs;
where number = 0 ; #出现错误
(3) 替换查询结果中的数据
利用case替换表达式,可以使select得到的临时表中的行内容与from原表不同(修改列名称用列别名)
case
when 条件1 then 表达式1
when 条件2 then 表达式2
...
else 表达式n
end as 列别名 #这里的列别名是相当于将from表中包含条件1,,,的列重新定义名称
例如查询xs表中计算机专业各个同学的学号、姓名和总学分,并对总学分按照如下规则进行替换:
若总学分为空值,则替换为‘尚未选课’
若总学分小于50,则替换为‘不及格’
若总学分在50~52之间,则替换为‘合格’
若总学分大于52,则替换为‘优秀’
若总学分列的标题更改为‘等级’。
select 学号,姓名,
case