oracle(8)_SQL_条件查询
SQL
限定查询
● 在查询绝大多数都会有条件的限制。
- 语法:
select *|列名 from 表名 where 条件
- 例如:查询工资大于1500的所有雇员。
范例:查询每月能得到奖金的雇员
- 分析:只要字段中存在内容表示不为空,如果不存在内容就是null,
- 语法:
列名 IS NOT NULL
-- 为空
列名 IS NULL
--不为空
- 示例图:
范例:查询工资大于1500 并且有奖金领取的雇员。
- 分析:多个查询条件同时满足之间使用 “ AND ”
- 示例图:
范例:查询工资大于1500 或者有奖金领取的雇员。
- 分析:多个查询条件或满足,条件之间使用 “ OR ”
- 示例图:
范例:查询工资不大于1500和没有奖金的人
- 语法:
NOT (查询条件)
- 示例图:
范例:基本工资大于 1500 但是小于 3000 的全部雇员
- 分析:sal > 1500, sal < 3000
- 示例图:
- Between and 等同于 sal > =1500 and sal <= 3000
- 示例图:
范例:查询1981-1-1到1981-12-31号入职的雇员
- 分析:between and 不仅可以使用在数值之间,也可以用在日期的区间
- 示例图:
范例:查询雇员名字叫 smith 的雇员
- 在 oracle 中的查询条件中查询条件的值是区分大小写的
- 示例图:
范例:查询雇员编号是 7369,7499,7521 的雇员编号的具体信息
- 如果使用之前的做法可以使用 OR 关键字
- 示例图:
- 实际上,此时指定了查询范围,那么 SQL 可以使用 IN 关键字
- 语法:
列名 IN (值1,值2,....)
列名 NOT IN (值1,值2,...)
- 其中的值不仅可以是数值类型也可以是字符串
- 示例图:
在常用的站点中经常会有模糊查询,即:输入一个关键字,把符合的内容全部的查询出来,在 SQL 中使用 LIKE 语句完成。
- 在 LIKE 中主要使用以下两种通配符
“ % ”:可以匹配任意长度的内容
“ _ ”:可以匹配一个长度的内容
- 范例:查询出所有雇员姓名中第二个字符包含 “ M ” 的雇员
- 示例图:
- 在 LIKE 中如果没有关键字表示查询全部
- 示例图:
在 oracle 中不等号的用法可以有两种形式 “ <> ” 和 “ != ”
- 范例:查询雇员编号不是 7369 的雇员信息
- 示例图:
● 以上操作完整源码:
--查询工资大于1500的所有雇员
select * from emp where sal > 1500;
--查询奖金非空
select * from emp where comm is not null;
--查询奖金为空
select * from emp where comm is null;
--查询工资大于1500,并且奖金不为空的
select * from emp where sal > 1500 and comm is not null;
--查询工资大于1500,或者奖金不为空的
select * from emp where sal > 1500 or comm is not null;
--查询工资小于1500并且奖金为空的人
select * from emp where sal <= 1500 and comm is null;
--查询工资不大于1500和奖金为空的人
select * from emp where not(sal > 1500 or comm is not null);
--查询基本工资大于1500但是小于等于3000的人
select * from emp where sal >= 1500 and sal <= 3000;
--Between and 等同于 sal > =1500 and sal <= 3000
select * from emp where sal between 1500 and 3000;
--查询1981-1-1到1981-12-31号入职的人
select * from emp where hiredate between to_date('1981-1-1', 'yyyy-MM-dd') and to_date('1981-12-31', 'yyyy-MM-dd');
--查询雇员名字叫 smith 的雇员。需要注意:sql语句不区分大小写,但是表中的值是区分
select * from emp where ename = 'SMITH';
--查询雇员编号是 7369,7499,7521 的雇员编号的具体信息
select * from emp where empno = 7369 or empno = 7499 or empno = 7521;
select * from emp where empno in (7369, 7499, 7521);
select * from emp where empno not in (7369, 7499, 7521);
select * from emp where ename in ('SMITH', 'ALLEN');
--查询出所有雇员姓名中第二个字符包含“M”的雇员
select * from emp where ename like '_M%';
--查询出所有雇员姓名中倒数第三个字符包含“M”的雇员
select * from emp where ename like '%M__';
--查询出所有雇员姓名中字符包含“M”的雇员
select * from emp where ename like '%M%';
--查询全部
select * from emp where ename like '%%';
--查询雇员编号不是 7369 的雇员信息
select * from emp where empno != 7369;
select * from emp where empno <> 7369;
如有错误,欢迎指正!