当前课程知识点:MySQL数据库案例教程 > 第4章 查询与视图 > 4.2 单表查询 > 4-2-2where子句
接下来我们来学习where子句
在MySQL中
常用的条件表达式有三种
关系表达式 逻辑表达式 特殊表达式
每种表达式有不同的运算符
首先来学习关系表达式的运算符
关系运算是比较
两个数据的大小相等关系的
有6种运算符
>、>= 、< 、<=、=、<>或!=
其中不等于有两个符号
关系运算符两边的表达式类型
应保持一致或兼容
下面就通过案例
来学习如何使用这些运算符
案例8
查询student表中
李璐璐的所有字段信息
查询语句可以这样写
select * from student
where sname=‘李璐璐’
字符型常量出现在表达式中
需要加上单引号
运行
查询出李璐璐的所有字段信息
案例9
查询score表中
成绩在90分以上的学号 课程号 成绩
查询语句可以这样写
select sid,cno,result
from score where result>=90
数值型常量出现在表达式中
不需要加上单引号
运行
查询出成绩在90分以上的
学号 课程号和成绩
案例10
查询2001以后出生的
人员姓名 性别 出生日期
查询语句可以这样写
select sname,sex,birth
from student
where birth>=’2001-01-01’
或者select
sname,sex,birth from student
where year(birth)>= 2001
运行
两条语句查询结果相同
但是有一些初学者会这样写
select sname,sex,birth from student
where birth>=2001
运行
可以发现查询不到正确结果
原因是>=两边的数据类型不兼容
前面学过
日期型是有固定格式的
年份是一个整数
这两种类型不能进行比较运算
请同学们切记这一点
对于日期型
需要注意两个问题
一是日期型常量表达形式
出现在表达式中需要加上单引号
二是日期型数据大小问题
后面的日期比前面的要大
关系运算相对简单
只要注意每种类型数据的常量
怎么表达
就能正确写出关系表达式
接下来我们学习逻辑运算符
逻辑运算符有三个
NOT、AND、OR
not 是非运算 求反运算
and 逻辑与
两个表达式都为真
结果为真
or 逻辑或
两个表达式当中有一个为真
结果为真
下面来看几个案例
案例11
查询student表中
非“信息工程系”的全体学生的信息
这个语句可以这样写
select * from student
where department<>’ 信息工程系’
不等号也可以是!=
select * from student
where department!=’ 信息工程系’
还可以写成逻辑非运算
select * from student
where not department=’ 信息工程系’
这三个语句执行结果是一样的
案例12
查询score表课程号“01”
且 result在90分以上的
学号 课程号 成绩
这个查询有两个条件
cno=’01’和result>=90
这两个条件是同时满足的关系
因此这两个条件需要用and来连接
select sid,cno,result from score
where cno=’01’and result>=90
执行
查询出01号课程
在90分以上的记录
案例13
查询student表
李璐璐和李小钱的所有字段信息
姓名是李小璐和小钱
可以这样表达
sname=‘李璐璐’
sname=‘李小钱’
这两个条件该怎么连接呢
在这里我们不能简单的被查询要求的
李小璐和李小钱迷惑
在查询时
对表中的每一条记录
我们在查看它的时候
这条记录的姓名
要没么是李小璐
要么是李小钱
而不能同时是李璐璐又是李小钱
select * from student
where sname=‘李璐璐’
and sname=‘李小钱’
执行
会发现语句执行没有问题
但是却没有查询出记录
将and 改成 or
执行
就能够查询出正确的结果
初学查询条件表达式时
同学们还要先分析数据
然后再看查询结果是否正确
不能简单的认为
查询语句执行正确
就完事大吉了
一定要学会分析
才能准确表达查询需求
逻辑表达式一般用于解决复杂的查询条件
学习和使用时需要多多思考和分析
接下来学习第三种表达式
特殊表达式
特殊表达式大多是针对
某类特定条件的专用表达式
MySQL常用的特殊表达式有四个
BETWEEN…AND 、IN、LIKE、IS NULL
BETWEEN…AND 表示在某个范围之间
一般为数值型
IN 是集合运算
判断某个数在不在某个集合内
如果在 条件为真
否则为假
LIKE 是模糊匹配
与%和-结合进行模糊匹配
IS NULL 判断空值
判断字段值是否为空
如果为空 条件为真
否则为假
来看案例14
查询score表中
在成绩80-90之间的成绩信息
这个查询条件
可以使用between and来执行
语句可以这样写
select * from score
where result between 80 and 90
执行
就能够查询出正确的结果
来看案例15
查询student表中
李璐璐和李小钱的所有字段信息
这个查询我们刚刚使用
关系表达式和逻辑表达式查询过
那接下来我们再用in来写查询条件
select * from student
where sname in
(‘李璐璐’ ,‘李小钱’)
in后面的集合用小括号括起来
小括号内的多个常量值
用逗号分隔的
先运行上面的语句
再运行下面的
查询结果是一样的
很显然
in这种写法更简单直观
尤其是查询多个值时
使用in将更加方便
案例16
查询student表中姓李的学生信息
数据库中查询分为
精确查询和模糊查询
前面学过的等号进行判断的
就是精确查询
这种不确定字段精确信息的查询
在数据库中叫模糊查询
模糊查询可以使用like实现
使用like时
表达中需包含通配符%和_
%表示多个任意字符
而下划线则表示单个任意字符
这个查询可以这样写
select * from student
where sname like
那我们只知道第一个字符是李
后面字符都不知道
就用%通配
语句是这样的
select * from student
where sname like ‘李%’
执行
查询出姓李的学生信息
注意like后面的表达式
一定要包含有%和_通配符
我们再来学习两个函数
left(字符串,n)和substring(字符串,n1,n2)
这两个函数都是用于
截取字符串中的字符
left从字符串最左边的
第一个字符开始截取n个字符
substring则从第n1个位置开始
截取n2个字符
函数将在后面章节学习到
因此
这个查询可以这样写
select * from student
where left(sname,1)=‘李’
或者select * from student
where substring(sname,1,1)=‘李’
可以看到
这三条语句执行结果相同
再来看一个案例
案例17
查询student表中姓李 姓张的学生信息
这个查询可以有多种实现的方法
既可以使用函数截取姓名的首字符
也可以使用like
还可以in来使用
我们分别来书写
select * from student
where sname like ‘李%’
or sname like ‘张%’
select * from student
where left(sname,1)=‘李’
or left(sname,1)=‘张’
或者select * from student
where left(sname,1) in(‘李’,‘张’)
可以看到
三条语句执行结果相同
这个查询还有很多其他写法
请同学们在课下尝试书写 调试
来看案例18
查询sname的第二个字
是“小”的学生信息
这个查询我们使用
like和通配符来模糊查询
select * from student
where sname like ‘_小%’
运行
当然 这个查询还有别的实现方法
也请同学们在课下自己调试
来看案例19
查询addr为“郑州”的学生信息
由于地址在输入的时候
没有什么强制要求
郑州不确定出现在
addr字段的什么位置
因此语句可以这样写
select * from student
where addr like‘%郑州%’
执行
可以看出addr字段包含郑州的记录
都被查询出来
案例20
查询result为空的成绩信息
查询可以这样来写
select * from score
where result is null
控制判断需要使用is null
不能写成 result=‘’的形式
请同学们记住使用方法
执行
表中并没有成绩为空的记录
对于where子句我们就学习
这三种运算符和表达式
在实际使用过程中
它们都不是孤立的
需要经常结合在一起解决复杂的问题
where子句就学习到这里
-1.1 数据库基础知识
-1.2 MySQL的安装与运行
-第1章 测试
-2.1 数据库的基本操作
-2.2 表的基本操作
-2.3 MySQL数据类型
-2.4 约束设置
-2.5 索引
--2-5索引视频
--2-5索引课件
--2-5索引实训
-第2章测试
-3.1 插入记录
-3.2 修改记录
-3.3 删除记录
--3.3删除记录
-第3章 测试
-4.1 select语句
-4.2 单表查询
-4.3 多表查询
-4.4 子查询
--4-4子查询课件
--4-4子查询实训
-4.5 外键
--4-5外键视频
--4-5外键课件
--4-5外键实训
-4.6 视图
--4-6视图视频1
--4-6视图视频2
--4-6视图课件
--4-6视图实训
-第4章测试
-5.1 函数
--5-1系统函数
--5-1函数课件
--5-1 函数实训
-5.2 流程控制语句
-5.3 事务与游标
-5.4 存储过程
-5.5 触发器
--5-5触发器视频
--5-5触发器课件
--5-5触发器实训
-第5章测试
-6.1 数据库备份与还原
-6.2 异构数据源导入导出
-第6章测试
-7.1 用户管理
-7.2 权限管理
-7.3 应用实例开发
-第7章测试