今天喋喋为大家介绍一下条件查询的语法和分类,补充了一些小知识点,欢迎大家来提出宝贵意见~~多多支持噢
这里模糊查询的分类是单独分为like、between and、in、is null,有的地方是将模糊查询(like、between and、in、is null)
和> < 、 = 、 != 、 >= 、 <= 统称为条件运算符~
条件查询:
条件查询:根据条件过滤原始表的数据,查询到想要的数据
一、 语法:
小贴士:这里的①②③表示的是执行顺序~
Select 查询列表(字段、表达式、函数、常量值) ③
From 表名 ①
(以上是基础查询,这样是查询表中所有行的数据)
若只查询部分行的数据,则需要追加where子句过滤一下
Where 筛选条件 ②
注:
以上有三个子句,标明执行顺序如下(执行顺序和书写顺序不一致):
① 若先执行from表名,即先看当前的库是否有这个表,有则定位到这张表
② 筛选,即看哪一行满足要求
③ 查询
例如:查询部门表中部门名以A字开头的部门编号和位置编号
当筛选条件结果成立(ture/false)时,则可过滤出来。否则,反之。(类似于Java中的if)
二、 分类:
1. 按条件表达式筛选
简单条件运算符:
> 、 < 、 = 、 != 、 >=、 <=
例如:查询工资>12000的员工姓、邮箱和经理编号
例如:查询供应商编号不等于1003的编号和价格
注:非等 !=(MySQL支持 <> )
2. 按逻辑表达式筛选
逻辑运算符:
作用:用于连接条件表达式
例如:查询工资在10000~20000之间的员工名、工资和奖金
与 | 或 | 非 | 用法 |
---|---|---|---|
&& | ll | ! | Java中推荐使用 |
and | or | not | MySQL中推荐使用 |
注:
与 and(&&): 如果两个条件同时成立(都为true),则结果为true,反之为false
或 or(||):两个条件只要有一个成立,则结果为true,反之为false
非 not(!):如果连接的条件本身为false,则结果为true,反之为false
3. 模糊查询
1》like
特点:一般和通配符搭配使用,
通配符:% 代表任意多个字符,包含0个字符;
_ 代表任意单个字符
例如: 查询名字以Y开头的所有消费者
注:‘_’ 占一位 ‘%’占多位.其中有三种表示方式:
①包含 Y: ‘%Y% ’
②第二位为 Y:’_Y% ’
③倒数第二位为 Y:’%Y _’
2》 between and
特点:
可以提高语句的简洁度;
包含临界值;
两个临界值不能调换顺序,虽然不会报错,但效果不一样
例如:查询员工编号在100到120之间的员工编号、员工名和工资
方式(1)
方式(2)
注:使用第二种方式, 能够提高语句的简洁度
3》In
含义:用于判断某字段的值是否属于in列表中的某一项
特点:使用in提高语句的简洁度(主要就是简单)
In列表的值类型必须一致(统一)或者兼容(可以隐式的转化)
‘123’可以转化为整形 123
in里不支持写通配符
例如: 查询编号为’IT_PROT’、 ‘AD_VP’、'AD_PRES’的姓和编号
以下两种写法比较:
原因在于: in等价于=, 也就是判断id 是否等于 ‘AD_%’ ,而不是like(模糊查询) ,并不支持like这种写法。
4》is null / is not null
注意:
=或<> 不能用于判断null值
is null 或 is not null 可以判断null值
例如(1):查询没奖金的员工名和奖金率
注意: 这里为empty
原因****在于 :=运算符不能判断null值,此时只能使用is
例如(2):查询有奖金的员工名和奖金率
#补充#
安全等于 <=>
<=> (安全等于)
不仅可以判断null值 ,还可以判断普通类型的值
但是也有弊端:可读性差低
is null 对比 <=>
is null:仅仅可以判断null值,可读性较高,建议使用
<=> :既可以判断null值,又可以判断普通的数值,可读性低
条件查询案例解析:
查询员工号为176的员工的姓名和部门号和年薪
忽略的问题:null
如果这样写,出现一个问题——null值
解决办法:ifnull
如果奖金本身为空,那么将其值写为0