Oracle学习笔记(三)——限定查询
对数据行的筛选/掌握限定查询符号的使用
语法结构:
SELECT [DISTINCT] * | 列名称 [别名],列名称 [别名],列名称[别名]…(第三个执行,针对数据的筛选操作)
FROM 表名称 [别名](第一个执行,确定数据来源)
WHERE 过滤条件(第二个执行,确定满足条件的数据行)
限定查询符号:
关系运算符:>、<、>=、<=、<>(!=);
逻辑运算符:AND、OR、NOT;
范围运算符:BETWEEN…AND;
谓词范围:IN、NOT IN;
空判断:IS NULL、IS NOT NULL;
模糊查询:LIKE;
关系运算符:大小关系比较操作。
范例:查询基本工资高于1500的雇员的信息
SELECT *
FROM emp
WHERE SAL>1500;
范例:查询smith的基本信息(数据区分大小写)
SELECT *
FROM emp
WHERE ENAME=’SMITH’;
范例:查询工资5000的雇员信息(=可以在数字上使用,也可以在字符串上使用)
SELECT *
FROM emp
WHERE sal=5000;
范例:查询职位不是销售人员的编号姓名职位(<>)
SELECT empno,ename,job
FROM emp
WHERE job!='SALESMAN';
逻辑运算符:与连接,或连接
范例:查询出工资范围在1500~3000之间的雇员信息
SELECT *
FROM emp
WHERE sal>=1500 AND SAL<=3000;
范例:查询工资大于2000或者职位是办事员所有雇员信息
SELECT *
FROM emp
WHERE sal>=2000 OR JOB='CLERK';
范例:查询所有工资小于2000的雇员信息
SELECT *
FROM emp
WHERE sal<2000;
SELECT *
FROM emp
WHERE NOT sal>=2000;
范围运算符:between and;
BETWEEN 最小值(数字,日期,字符串也可以,字符串按照首字母)AND 最大值(此语句包含最大最小值)
范例:查询工资在1500~2000之间的雇员信息
SELECT *
FROM emp
WHERE SAL BETWEEN 1500 AND 2000;
范例:查询所有在1981年雇佣的雇员
SELECT *
FROM emp
WHERE HIREDATE BETWEEN '01-1月-1981' AND '31-12月-1981';
空判断,空在数字列上不表示0
对于NULL的判断不能用关系运算符,只能用IS NULL或者IS NOT NULL
范例:查询所有领取佣金的雇员信息(佣金存在,不为空)
SELECT *
FROM emp
WHERE comm IS NOT NULL;
SELECT *
FROM emp
WHERE NOT comm IS NULL;
谓词范围
IN操作符类似于BETWEEN AND (给了一个大范围),IN(指定的可选范围)IN操作最简短。
范例:查询出雇员编号是7369、7566、7788、9999的雇员信息
SELECE *
FROM emp
WHERE EMPNO=7369 OR EMPNO=7566 OR EMPNO=7788 OR EMPNO=9999;
SELECE *
FROM emp
WHERE EMPNO IN(7369,7566,7788,9999);
NOT IN判断的时候如果范围里包含NULL,那么不会有结果返回。
(如果查询所有的数据行几乎是判了一个程序的死刑)
NOT IN NULL即为查询不为空,查询全部
模糊查询
LIKE(输入关键字查找)在使用LIKE时候可以用两个通配符
说明一:LIKE可以应用在各种数据类型上。
说明二:如果不设置关键字,表示查询全部。
范例:查询姓名是以A开头的雇员信息
SELECT *
FROM emp
WHERE ename LIKE 'A%';
范例:查询姓名第二个字母是A的雇员信息
SELECT *
FROM emp
WHERE ename LIKE '_A%';
范例:查询姓名任意位置包含A的雇员信息
SELECT *
FROM emp
WHERE ename LIKE '%A%';
(限定查询)总结
- 执行顺序:FROM(表)WHERE(行)SELECT(列)。
- SELECT中定义的别名无法在WHERE子句中使用。
- 要求完整掌握各个限定查询符号。