单表有条件查询
单表有条件查询要用到查询的五个子句, 语法格式如下:
SELECT [ALLDISTINCT]表达式列表
FROM <基本表名>
[WHERE <查询条件>]
[ORDER BY[ASC|DESC]]
[LIMIT [起始记录,]显示的行数]
1.关系运算符
又称为比较运算符,语法格式如下:
WHERE 表达式1 关系运算符 表达式2
2.范围运算符
在WHERE子句中可以使用BETWEEN...AND查询在某个范围内的数据,还可以在前面加NOT关键字,表示查找不在某个范围内的数据,语法格式如下:
WHERE 表达式 [NOT]BETWEEN 初始值 AND 终止值
等价于
WHERE 表达式 [NOT](表达式>=初始值 AND 表达式<=终止值)
3.列表运算符
在WHERE子句中可以使用IN关键字指定一个值表,在值表中列出所有可能的值,当要判断的表达式与值表中的任意值匹配时,结果返回TRUE,否则返回FALSE。 可以在IN前面加NOT关键字,表示当要判断的表达式不与值表中的任意值匹配时,结果返回TRUE,否则返回FALSE。语法格式如下:
WHERE 表达式 [NOT] IN(值1,值2,···,值n)
4.模糊匹配运算符
在WHERE子句中,使用运算符LIKE成NOT LIEK可以对字符串进行模糊查找。语法格式如下:
WHERE 字段名 [NOT]LIKE '字符串' [ESCAPE '转义字段']
'字符串'表示要进行比较的字符串
*各通配符及其含义
ESCAPE '转义字段'的作用是当用户要查询的字符串本身含有通配符时,可以使用该选项进行通配符进行转义。
5.空值判断
判断某个字段是否为空值时,语法格式如下:
WHERE 字段名 IS [NOT]NULL
6.逻辑运算符
逻辑运算符可以将多个查询条件连接起来组成更复杂的查询条件。语法格式如下:
WHERE NOT 逻辑表达式 | 逻辑表达式1 {AND|OR} 逻辑表达式2
注:逻辑运算符的运算对象是逻辑表达式。
例子
提供以下题目中所需的两张数据表:①学生基本信息表 stuinfo、②学生选课成绩表 stumarks
1.查询成绩在80~90分之间的所有选课记录
代码如下:
SELECT *
FROM stumarks
WHERE stuscore BETWEEN 80 AND 90;
其中 WHERE 表达式等价于 “stuscore >= 80 AND stuscore <= 90”
2.查询学号为“S001” “S003” “S005”的学生的基本信息
代码及结果(结果含第一题)如下:
SELECT *
FROM stuinfo
WHERE stuno IN('S001','S003','S005');
3.查询所有姓“张”的学生的基本信息
注:题中 姓“张” ,“张”在最前面
代码及结果如下:
SELECT *
FROM stuinfo
WHERE stuname LIKE'张%';
4.查询姓名中包含“东”字的所有学生的学号及姓名
注:题中 包含“东”字 ,表示“东”字前后都可以有别的字
代码及结果如下:
SELECT stuno,stuname
FROM stuinfo
WHERE stuname LIKE'%东%';
5.查询成绩为空值的选课记录,将结果按学号升序排序
分析:用IS NULL进行判断,用ORDER BY对结果进行排序
代码及结果如下:
SELECT *
FROM stumarks
WHERE stuscore IS NULL
ORDER BY stuno;
6.查询学号为“S001”和“S003”的学生选修课程号为“0002”的课程的选课记录
注:题目中 “S001”和“S003” 容易直接翻译为代码中的“AND”
代码及结果如下:
SELECT *
FROM stumarks
WHERE (stuno IN('S001','S003')AND(cno='0002'));
~over~