例3.19:查全体学生的姓名及其出生年份。
select Sname,2021-Sage
from student;
例3.20: 查询全体学生的姓名、出生年份和所在的院系,要求用小写字母表示系名。
select Sname,'出生月份:',2021-Sage,LOWER(Sdept)
from student;
用户可以通过指定别名来改变查询结果的列标题,如下图所示:
例3.21:查询选修了课程的学生学号。
关于all修饰和distinct修饰,之前提到过,distinct就是去掉重复的。缺省为distinct。
例3.22:查询计算机科学系全体学生的名单。
select Sname
from student
where Sdept='CS';
例3.23:查询所有年龄在20岁以下的学生姓名及其年龄。
select Sname
from student
where Sage<20;
例3.24:查询考试成绩有不及格的学生的学号。
select Sno
from SC
where Grade<60;
例3.25:查询年龄在18~23岁(包括18岁和23岁)之间的学生的姓名、系别和年龄
select Sname , Sdept,Sage
from student
where Sage between 18 and 23;
IN 和 NOT IN:
谓词:IN <值表>, NOT IN <值表>
例3.27:查询计算机科学系(CS)、数学系(MA)和信息系(IS)学生的姓名和性别。
select Sname,Ssex
from student
where Sdept in ('cs','ma','is');
例3.28:查询既不是计算机科学系、数学系,也不是信息系的学生的姓名和性别。
select Sname,Ssex
from student
where Sdept not in ('cs','ma','is');
模糊查询 LIKE
注意两点:
通配符:% _,%表示的是长度为任意(包括0)的字符串,_表示的是一个字符。
关于转义字符,这里叫换码字符:比如我们要查询的字符串里真的有%号这个字符,那我们就使用下面这种形式处理:WHERE Cname LIKE ‘DB%Design’ ESCAPE ‘’ ;表示的是\后面的那个字符是真正的字符而不是通配字符。
例3.29:查询学号为201215130的学生的详细情况。
select *
from student
where Sno like '201215130';
例3.30: 查询所有姓刘学生的姓名、学号和性别。
select Sname,Sno,Ssex
from student
where Sname like '刘%';
例3.32: 查询名字中第2个字为"阳"字的学生的姓名和学号。
select Sname '姓名'
from student
where Sname like '_阳%'
例3.33:查询所有不姓刘的学生姓名、学号和性别。
select Sname '姓名',Sno '学号',Ssex '性别'
from student
where Sname not like '刘%'
例3.34查询DB_Design课程的课程号和学分。
select Cno , Ccredit
from course
where Cname like 'DB/_Design' escape '/';
例3.41:查询学生总人数。
select count(*)
from student ;
例3.42:查询选修了课程的学生人数。
select count(distinct sno) '学生的个数'
from sc ;