6.过滤查询
语法格式
SELECT {DISTINCT}列名1 [AS 别名1], 列名2, …, 列名n FROM 表名 WHERE 条件 ORDER BY 列名1 ASC|DESC, 列名2 ASC|DESC,…. ; |
范例:查询部门10下的所有员工的empna,ename。
SELECT empno,ename FROM emp WHERE deptno = 10; |
6.1 比较运算符
1) >
范例:查询工资大于800的人的信息
SELECT ename,sal FROM emp WHERE sal>800; |
2) <
3) >=
4) <=
5) =
范例:查询姓名是smith的信息。
SELECT ename,sal,deptno FROM emp WHERE ename = 'SMITH'; |
6) 不等于:!= <>(<>为Oracle正牌不等于)
范例:查询部门10以外的员工信息。
SELECT ename,deptno FROM emp WHERE deptno !=10; |
7) BETWEEN AND
范例:查询部门10-20的员工信息。
SELECT ename,deptno FROM emp WHERE deptno BETWEEN 10 AND 20; |
8) IN
范例:查询岗位是CLERK或SALESMAN的人的信息
SELECT ename,job FROM emp WHERE job in('CLERK','SALESMAN'); |
9) LIKE:模糊查询
a) %:代表零或多个字符
b) _:代表一个字符
范例:查询姓名中包含字母A的雇员的姓名。
SELECT ename FROM emp WHERE ename LIKE ‘%A%’; |
范例:查询姓名中第二个字母是A的雇员的姓名。
SELECT ename FROM emp WHERE ename LIKE ‘_A%’; |
注:特殊字符,查job前面为man_的姓名
SELECT ename,job
FROM emp
WHERE job LIKE 'man@_%' ESCAPE '@';
/****其中@符号也可以换成其他字符,重要的是ESCAPE********/
10) is null
范例:查询没有补助的人的信息
select ename,comm from emp where comm is null; |
6.2 逻辑运算符
1) AND
2) OR
3) NOT:
范例:查询部门10或部门20下的员工的信息。
SELECT ename,deptno FROM emp WHERE deptno=10 OR deptno = 20; |
范例:查询工资在800-2000之间的雇员的信息。
SELECT ename,sal FROM emp WHERE sal>=800 AND sal<=2000; |
范例:查询工资不在800-2000之间的雇员的信息。
SELECT ename,sal FROM emp WHERE sal NOT BETWEEN 800 AND 2000; |
范例:查询有补助的人的信息。
SELECT ename,sal FROM emp WHERE comm IS NOT NULL; |
6.3 括号运算符()
范例:查询工资在800-2000之间的雇员的信息。
SELECT ename,sal FROM emp WHERE (sal>=800) AND (sal<=2000); |
6.4 优先级
优先级 | 运算符 |
1 | 算术运算符 |
2 | 连接运算符 |
3 | 比较运算符 |
4 | IS[NOT] NULL LIKE, [NOT] IN |
5 | [NOT] BETWEEN AND |
6 | NOT |
7 | AND |
8 | OR |
注:括号可以改变优先级顺序