oracle(8)_SQL_条件查询

版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_36260974/article/details/88679562

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;

如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/qq_36260974/article/details/88679562
今日推荐