1. 限制行(过滤) where 子句
在使用where 子句,将不满足条件的行过滤掉:
where子句 紧随 from 子句
**SQL> select ename,empno,deptno,job,hiredate
2 from emp
3 where ename='KING';
ENAME EMPNO DEPTNO JOB HIREDATE
---------- ---------- ---------- --------- ----------
KING 7839 10 PRESIDENT 1981-11-17**
2. 字符和日期
a. 字符和日期要包含在单引号中。
b. 字符大小写敏感,日期格式敏感。
c. 默认的日期格式是 DD-MON-RR
例:“19-APR-87”
3. 比较运算符
3.1 使用比较运算符
日期比较
SQL> select ename,empno,deptno,job,hiredate
2 from emp
3 where hiredate>'1987-04-19';
ENAME EMPNO DEPTNO JOB HIREDATE
---------- ---------- ---------- --------- ----------
ADAMS 7876 20 CLERK 1987-05-23
数字比较
SQL> select ename,empno,deptno,job,hiredate
2 from emp
3 where deptno>=20;
ENAME EMPNO DEPTNO JOB HIREDATE
---------- ---------- ---------- --------- ----------
SMITH 7369 20 CLERK 1980-12-17
ALLEN 7499 30 SALESMAN 1981-02-20
WARD 7521 30 SALESMAN 1981-02-22
JONES 7566 20 MANAGER 1981-04-02
MARTIN 7654 30 SALESMAN 1981-09-28
BLAKE 7698 30 MANAGER 1981-05-01
SCOTT 7788 20 ANALYST 1987-04-19
TURNER 7844 30 SALESMAN 1981-09-08
ADAMS 7876 20 CLERK 1987-05-23
JAMES 7900 30 CLERK 1981-12-03
FORD 7902 20 ANALYST 1981-12-03
11 rows selected.
3.2 使用between 操作符
SQL> select deptno,dname
2 from dept
3 where deptno between 10 and 30;
DEPTNO DNAME
---------- --------------
10 ACCOUNTING
20 RESEARCH
30 SALES
3.3 使用 in 操作符
SQL> select ename,sal
2 from emp
3 where ename in ('SCOTT','KING');
ENAME SAL
---------- ----------
SCOTT 3000
KING 5000
3.4 使用like 操作符
a . 使用like 运算 选择类似的值
b . 选择条件可以包含字符或数字:
—— % 代表零个或多个字符。
—— _ 代表一个字符。
SELECT last_name, hire_date
FROM employees
WHERE hire_date LIKE '%95';
3.5 使用 NULL 条件
使用 is null 操作符 判断空值
SQL> select ename from emp
2 where comm is null;
ENAME
----------
SMITH
JONES
BLAKE
CLARK
SCOTT
KING
ADAMS
JAMES
FORD
MILLER
10 rows selected.
4. 逻辑运算符
4.1 and
要求两边条件都为真
SQL> select ename,deptno,sal,comm,hiredate,job
2 from emp
3 where job='ANALYST'and sal>=3000 or job='MANAGER';
ENAME DEPTNO SAL COMM HIREDATE JOB
---------- ---------- ---------- ---------- ---------- ---------
JONES 20 2975 1981-04-02 MANAGER
BLAKE 30 2850 1981-05-01 MANAGER
CLARK 10 2450 1981-06-09 MANAGER
SCOTT 20 3000 1987-04-19 ANALYST
FORD 20 3000 1981-12-03 ANALYS
4.2 OR
要求只要任一条件为真即可:
SQL> select ename,deptno,sal,comm,hiredate
2 from emp
3 where job='ANALYST'and sal>3000 or job='MANAGER';
ENAME DEPTNO SAL COMM HIREDATE
---------- ---------- ---------- ---------- ----------
JONES 20 2975 1981-04-02
BLAKE 30 2850 1981-05-01
CLARK 10 2450 1981-06-09
5. 优先级
可使用括号改变优先级顺序
6. 排序子句 order by
使用 ORDER BY 子句排序
—— asc : 升序 ,默认为升序
—— desc : 降序
order by 子句 在select 语句结尾
SQL> select ename,sal
2 from emp
3 order by sal;
升序 排序:
SQL> select ename, sal,deptno
2 from emp
3 order by deptno;
ENAME SAL DEPTNO
---------- ---------- ----------
CLARK 2450 10
KING 5000 10
MILLER 1300 10
JONES 2975 20
FORD 3000 20
ADAMS 1100 20
SMITH 800 20
SCOTT 3000 20
WARD 1250 30
TURNER 1500 30
ALLEN 1600 30
ENAME SAL DEPTNO
---------- ---------- ----------
JAMES 950 30
BLAKE 2850 30
MARTIN 1250 30
14 rows selected.
降序排序: 多列排序同时使用列的数字位置进行排序
SQL> select ename,sal,deptno,job
2 from emp
3 order by 3 ,2 desc;
ENAME SAL DEPTNO JOB
---------- ---------- ---------- ---------
KING 5000 10 PRESIDENT
CLARK 2450 10 MANAGER
MILLER 1300 10 CLERK
SCOTT 3000 20 ANALYST
FORD 3000 20 ANALYST
JONES 2975 20 MANAGER
ADAMS 1100 20 CLERK
SMITH 800 20 CLERK
BLAKE 2850 30 MANAGER
ALLEN 1600 30 SALESMAN
TURNER 1500 30 SALESMAN
ENAME SAL DEPTNO JOB
---------- ---------- ---------- ---------
MARTIN 1250 30 SALESMAN
WARD 1250 30 SALESMAN
JAMES 950 30 CLERK
14 rows selected.
7. 替代变量
使用替代变量——使用&和&&临时存储值
可替代以下内容:
——where条件
——order by 子句
——列表达式
——表名
——整个select 语句
7.1 用一个& 替代变量
字符替代变量
SQL> select empno,ename,sal
2 from emp
3 where ename='&name';
Enter value for name: SCOTT
old 3: where ename='&name'
new 3: where ename='SCOTT'
EMPNO ENAME SAL
---------- ---------- ----------
7788 SCOTT 3000
where 条件替代变量:
SQL> select empno,ename,sal
2 from emp
3 where &a;
Enter value for a: ename='KING'
old 3: where &a
new 3: where ename='KING'
EMPNO ENAME SAL
---------- ---------- ----------
7839 KING 5000