概述
本文讲解条件查询,包括 单条件查询 和 多条件查询
单条件查询
语法
select * from 表名 where 列名 [比较运算符] 值
比较运算符
| 运算符 | 含义 |
|---|---|
| = | 等于 |
| <> 或者 != | 不等于 |
| < | 小于 |
| <= | 小于等于 |
| > | 大于 |
| >= | 大于等于 |
例子
- 查询工资大于1500的雇员信息
select * from emp where sal>1500 - 查询deptno是20的员工信息,仅列出编号、名字、工资
select empno,ename,sal from emp where deptno=20
字符串的比较
查询job是manager的员工
select * from emp where job='MANAGER'注意: 当值是字符串时,区分大小写,所以
MANAGER必须大写查询job不是manager的员工
select * from emp where job<>'MANAGER'
判断是否为NULL
emp表中很多员工的comm字段值为空,其实是 NULL
- 查询comm 为空 的信息
select * from emp where comm is null - 查询comm 不为空 的信息
select * from emp where comm is not null
多条件查询
逻辑运算符
在C/C++、java语言的 if语句 中,当有 多个条件 时,要用到 逻辑运算
在sql中的多条件查询也与之类似,要用到 逻辑运算符,如下:
- 与:and,查询结果同时满足多个条件,优先级 高
- 或:or,查询结果至少满足一个条件,优先级 低
语法:
select * from 表名 where 列名 [比较运算符] 值 [逻辑运算符] 列名 [比较运算符] 值
and
查询工资大于1500,并且job是MANAGER的记录
select * from emp where sal>1500 and job='MANAGER'
查询范围
例子:查询工资在800至3000的员工
select * from emp where 800<=sal and sal<=3000
使用between...and关键字
select * from 表名 where 列名 between 小值 and 大值
注意: 包含最大值和最小值
sql如下:
select * from emp where sal between 800 and 3000
or
查询工资大于1500,或者奖金500以上的
select * from emp where sal>1500 or comm>500查询 没有奖金 的员工信息
select * from emp where comm is null or comm=0查询 有奖金 的员工信息
select * from emp where comm is not null and comm<>0查询job是SALESMAN或者MANAGER,并且薪资大于1500的员工信息
错误写法:select * from emp where job='SALESMAN' OR JOB='MANAGER' AND 1500<SAL正确写法:
select * from emp where (job='SALESMAN' OR JOB='MANAGER' ) AND 1500<SAL
in和not in
- 查询编号是7369、7499、7521的员工,按照之前学习的方法,sql语句如下:
in 关键字相当于 or,使用 in 可以简化,如下:Select * from emp where empno=7369 or empno=7499 or empno=7521Select * from emp where empno in (7369,7499,7521) - 查询编号 不是 7369、7499、7521的员工信息
Select * from emp where empno not in (7369,7499,7521)
模糊查询 like
在百度、淘宝、微博搜索时,输入关键字,可以查询出 包含该关键字 的信息,在sql语句中称其为 模糊查询,用 like 关键字
语法
使用like 关键字,模糊查询部分使用下面两个符号
- % 匹配 零个 或 多个 任意字符
- _ 匹配一个任意字符
例子
查询名字的 首字母 是A的员工
select * from emp where ename like 'A%'查询名字中带 有A 的员工
select * from emp where ename like '%A%'查询名字 第二个字母 是A的员工
select * from emp where ename like '_A%'
转义符
在模糊查询时,查询的结果中有%或_字符时,需要用到转义符
C/C++、java等开发语言中,也有转义符的概念
例子
查询名字中带有_的员工
select * from emp where ename like '%\_%' escape '\'
解释:
末尾处的escape '\',说明\是 转义字符,其作用就是将sql语句like '%\_%'中的_变为 普通符号,这样就能查询出名字中带有_的员工
练习
查询部门编号是30的员工所有信息
列出职位为(MANAGER )的员工的编号,姓名
找出奖金高于工资的员工
查询每个员工的姓名、工资、奖金、工资与奖金的和
找出部门10 中的经理(MANAGER)和部门20 中的普通员工(CLERK)
找出部门10 中既不是MANAGER也不是CLERK,而且工资大于等于2000 的员工
找出有奖金的员工的不同工作
找出没有奖金或者奖金低于500 的员工,老员工在前面
显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
查询出工资大于等于1600,小于等于3000的员工,工资多的在前面
找出姓名中不带R 这个字母的员工