使用>,<,>=,<=,!=,<>,=等来做简单的基础条件筛选
- 查询职员表中薪水低于2000的职员信息
SELECT ename,sal FROM emp where sal < 2000;
- 查询志愿表中不属于部门10的职员信息(!=等价于<>)
SELECT ename,sal,job FROM emp where deptno <>10;
- 查询员工表内2002年以后入职的员工信息
SELECT ename,sal,hiredate FROM emp where hiredate>to_date('2002-01-01','YYYY-MM-DD');
逻辑操作符AND,OR
- 在SQL操作中,如果希望返回值的结果满足多个条件使用逻辑操作符AND;
eg:查询薪水大于1000并且职位是‘CLERK’的职员信息
SELECT ename,sal,job from emp where sal>1000 AND job='CLERK';
- 在SQL操作中,如果希望返回值的结果满足多个条件中的一个使用逻辑操作符OR;
eg:查询薪水大于1000或者职位是‘CLERK’的职员信息
SELECT ename,sal,job from emp where sal>1000 OR job='CLERK';
比较操作符LIKE(模糊查询)
- 当用户在进行查询的时候,不能完全确定查询条件或只知道一部分信息,借助比较操作符LIKE来完成模糊查询。
- 其中,存在两个通配符来构造灵活的查询条件
- % 表示0到多个字符
- _ 表示单个字符
eg:
_A%表示第二个字符为A
比较操作符IN和NOT IN
- 当需要取出符合列表范围内的数据使用比较操作符IN(list)
- list表示值列表,当列或表达式匹配与列表内的值,条件为true,该条数据被显示
- 比较操作符IN,可以理解为一个指定的指列表
eg:查询职位是MANAGER或者CLERK的员工-
SELECT ename,job,from emp where job IN('MANAGER','CLERK');
-
SELECT ename,job from emp where job='CLERK' OR job='MANAGER'
-
- NOT IN(list) 则是取出不符合此列表中的数据记录
eg:查询不是部门10或20的员工
SELECT ename,job FROM emp where deptno NOT IN(10,20)
比较操作符BETWEEN…AND
- 用于描述在某个范围内的数据,一般多用于数字类型,对于日期和字符同样适用
eg:查询薪水在1500-3000之间的职员信息
SELECT ename,sal from emp where sal between 1500 and 3000
IS NULL&IS NOT NULL
- 空置null是一个特殊的值,比较的时候不能使用“=”号,必须使用is null,否则不能得到正确的结果
eg:查询哪些职员的奖金数据为null
SELECT ename,sal,comm from emp where comm is null
ANY和ALL条件
- ANY和ALL不能单独使用,需要配合单行比较操作符一起使用
- ANY是任意一个,ALL 是所有。即 ANY表示任何一个满足就返回 TRUE,而ALL 表示全部都满足才返回TRUE
-
>ANY表示至少大于一个值,即大于最小值
-
<ANY表示至少小于一个值,即小于最大值
-
>ALL表示大于全部值,即大于最大值
-
<ALL表示小于全部值,即小于最小值
eg:查询大于给定薪水内最小值的员工信息
select * from emp where sal > ANY (3500,4500,5500)
-
在查询条件中使用表达式或函数
- 当需要在查询出来的内容上进行进一步的计算,可以直接在所查询出信息的数字列上进行运算,即使用算术表达式(+,-,*,/)
- 日期类型的信息列同样可以进行加减运算,等同于在某个日期上加减天数
- 算术表达式同样遵循四则运算的优先级,若需要改变优先级,可以是用括号进行调整
DISTINCT 关键字
- 使用DISTINCT对数据表内没有意义的重复值进行去重操作。
eg:查询员工的部门编码
select deptno from emp
查询员工的部门编码并去重
select DISTINCT deptno from emp