(1)查询指定列
例:查询全体学生的学号与姓名
SELECT S_no,S_name FROM Student;
(2)查询全部列
例:查询全体学生的详细记录
SELECT * FROM Student; 注意:其中*相当于全部列
(3)查询经过计算的值
例:查询全体学生的姓名及其出生年份
SELECT S_name,2022-S_age //查询结果的第2列是一个 算术表达式 FROM Student;
(4)消除取值重复的行
例:查询选修了课程的学生学号
SELECT DISTINCT S_no FROM Student;
(5) ORDER BY 子句
用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认值为升序。
例:查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列
SELECT S_no,Grade FROM SC WHERE C_no='3' ORDER BY Grade DESC;
(6)查询满足条件的元组
查询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如下表所示
查询条件 | 谓词 |
比较 | =,>,<,>=,<=,!=,<>,!>,!<; NOT+上述比较运算符 |
确定范围 | BETWEEN AND,NOT BETWEEN AND |
确定集合 | IN,NOT IN |
字符匹配 | LIKE,NOT LIKE |
空值 | IS NULL,IS NOT NULL |
多重条件(逻辑运算) | AND,OR,NOT |
其含义是查找指定的属性列值与<匹配串>相匹配的元组。<匹配串>可以是一个完整的字符串,也可以含有通配符 % 。
- %(百分号)代表任意长度(长度可以为0)的字符串。例如:a%b 表示以a开头,以b结尾的任意长度的字符串。如acb、addgb、ab等。
例1:查询所有年龄在20岁以下的学生姓名及其年龄
SELECT S_name,S_age FROM Student WHERE S_age<20;
例2:查询年龄在20~23岁之间的学生的姓名、系别和年龄
SELECT S_name,S_dept,S_age FROM Student WHERE S_age BETWEEN 20 AND 23
例3:查询出课程号为01001、02001、02003的所有课程,要求显示出课程号course_no、课程名称course_name。(用in运算符)。
select course_no,course_name from Course where course_no in('01001','02001','02003')
此处介绍下字符匹配
谓词LIKE可以用来进行字符串的匹配。
例1:查询所有姓“李”的男同学,要求显示其学号s_no、姓名s_name、性别s_sex、出生日期s_birthday。
select s_no,s_name,s_birthday,s_sex
from student
where s_sex = '男' and s_name like '李%'
例2:查询所有姓名中含有“一”字的同学,要求显示其学号s_no、姓名s_name。
select s_no,s_name
from student
where s_name like '%一%'
总结:此次整理了SQL数据查询中有关单表查询的程序,其中应格外注意
- 字符匹配中 % 和 _ 的区别。
- 聚集函数只能用于 SELECT子句 和 GROUP BY子句 中的 HAVING 子句。