Oracle之SQL限定查询
WHERE限定条件
/*
语法结构:
SELECT * | 列名1[,列名2...] | 表达式
FROM 表名
WHERE 限定条件;
*/
--查询职位为CLERK的员工信息
SELECT *
FROM EMP
WHERE JOB = 'CLERK';
--查询薪资大于800小于2500的员工信息
SELECT *
FROM EMP
WHERE SAL > 800 AND SAL < 2500;
关系运算符 < \ > \ = \ >= \ <= \ != \ <>
/*
常见的关系运算有:
运算符 说明
= 等于
<>或者!= 不等于
< 小于
> 大于
<= 小于或者等于
>= 大于或者等于
*/
--查询职位等于CLERK的员工信息
SELECT *
FROM EMP E
WHERE E.JOB = 'CLERK';
逻辑运算符 AND 且 、 OR 或、NOT 非
--查询部门编号为30或者职位为SALESMAN的员工信息
SELECT *
FROM EMP E
WHERE E.DEPTNO = 30 OR E.JOB = 'SALESMAN';
--查询不是30号部门的员工信息
SELECT *
FROM EMP E
WHERE NOT E.DEPTNO = 30;
范围运算符 BETWEEN ... AND...
--查询薪资在[800,2500]之间的员工信息
--方法一:
SELECT *
FROM EMP E
WHERE E.SAL >= 800 AND E.SAL <= 2500;
--方法二:
SELECT *
FROM EMP E
WHERE E.SAL BETWEEN 800 AND 2500;
空判断 IS NULL/ IS NOT NULL
--查询员工上级为空的员工信息
SELECT *
FROM EMP E
WHERE E.MGR IS NULL;
--查询奖金不为空的员工信息
SELECT *
FROM EMP E
WHERE E.COMM IS NOT NULL;
-- 注意:NULL 与任何值进行运算时,结果都为 NULL
SELECT E.SAL 月薪,E.SAL * 12 年薪,E.COMM 奖金,NVL(E.COMM,0),E.SAL * 12 + NVL(E.COMM,0) 年收入
FROM EMP E;
--注意:NULL参与排序时,永远是最大的
SELECT *
FROM EMP E
ORDER BY E.COMM DESC;
IN判断:用于在指定的范围内进行数据的查询。 IN / NOT IN
--查询10、20、30号部门的员工信息
SELECT *
FROM EMP E
WHERE E.DEPTNO IN (10,30,20);
--查询不在10、30号内的员工信息
SELECT *
FROM EMP E
WHERE E.DEPTNO NOT IN (10,30);
模糊查询: LIKE / NOT LIKE
--'%':通配符,代表任意0、1或者多个字符;
--'_':占位符,代表1个字符。
--查询EMP表中员工姓名首字母为'A'的员工信息
SELECT *
FROM EMP E
WHERE E.ENAME LIKE 'A%';
--查询EMP表中员工姓名第二字母为'A'的员工信息
SELECT *
FROM EMP E
WHERE E.ENAME LIKE '_A%';
--查询EMP表中员工姓名最后一位字母为'S'的员工信息
SELECT *
FROM EMP E
WHERE E.ENAME LIKE '%S';