本文适用于初学者
where子句
用于提取列满足指定标准的记录(需要给提取的列赋值)
select ename,empno,deptno
2 from emp
3 where deptno=10;
ENAME EMPNO DEPTNO
---------- ---------- ----------
CLARK 7782 10
KING 7839 10
MILLER 7934 10
1.where选择某列中的某个值,可以比较大小(字符和日期要用单引号)
操作符 | 含义 |
---|---|
= | 等于 |
> | 大于 |
>= | 大于或等于 |
< | 小于 |
<= | 小于或等于 |
<> | 不等于 |
between…and… | 在两个值之间包含两个值 |
in | 在选择的列中匹配任何值 |
like | 匹配字符 |
is null | 这是一个空值 |
操作符=,>,>=,<,<=,<>用法一直参考例子↓
SQL> select ename,deptno
2 from emp
3 where deptno>=20;
ENAME DEPTNO
---------- ----------
SMITH 20
ALLEN 30
WARD 30
JONES 20
BLAKE 30
in在以选列里匹配
SQL> select ename,sal
2 from emp
3 where ename in ('SCOTT','KING','dd');
ENAME SAL
---------- ----------
SCOTT 3000
KING 5000
between…and…已选列的值(是一个范围)
SQL> select deptno,hiredate,ename,sal,comm
2 from emp
3 where deptno between 10 and 30
4 and sal;
DEPTNO HIREDATE ENAME SAL COMM
---------- ---------- ---------- ---------- ----------
10 1981-11-17 KING 5000
like匹配已选列里的值(选择条件%代表一个或多个字符,_代表一个字符)
SQL> select ename
2 from emp
3 where ename like 'K%';
is null 声明他是一个空值
SQL> select ename,comm
2 from emp
3 where comm is null;
ENAME COMM
---------- ----------
SMITH
JONES
BLAKE
2.逻辑运算符
操作符 | 含义 |
---|---|
and | 逻辑并,两个条件都为真 |
or | 逻辑或,其中一个条件符合 |
not | 逻辑否,如果条件为假 |
and两个条件同时满足才会输出,or两个条件只要有一个满足就会输出,not不输出某个值
SQL> select deptno,hiredate,ename,sal,comm,job
2 from emp
3 where job='ANALYST'
4 and sal>3000
5 or job='MANAGER';
DEPTNO HIREDATE ENAME SAL COMM JOB
---------- ---------- ---------- ---------- ---------- ---------
20 1981-04-02 JONES 2975 MANAGER
30 1981-05-01 BLAKE 2850 MANAGER
10 1981-06-09 CLARK 2450 MANAGER
3.优先级
在表达式中运算符的优先规则
优先级 | 参数 |
---|---|
1 | 算数运算符 |
2 | 连接符 |
3 | 比较符 |
4 | is null , like ,in |
5 | between |
6 | 不等于 |
7 | not |
8 | and |
9 | or |
括号可以改变优先级的顺序
order by 子句
使用order by 给所选列的内容排序(默认升序,asc升序,desc降序)
SQL> select ename,sal,deptno
2 from emp
3 order by deptno,sal;
ENAME SAL DEPTNO
---------- ---------- ----------
MILLER 1300 10
CLARK 2450 10
KING 5000 10
SMITH 800 20
ADAMS 1100 20
给两列的值排序,第二列的顺序在第一列的基础上进行
替代变量
替代变量用&替代,&&可以临时储存替代变量的值(/返回上一个命令)
SQL> select empno,ename,sal
2 from emp
3 where ename='&name';
Enter value for name: KING
old 3: where ename='&name'
new 3: where ename='KING'
EMPNO ENAME SAL
---------- ---------- ----------
7839 KING 5000
SQL> /
Enter value for name: DORD
old 3: where ename='&name'
new 3: where ename='DORD'
no rows selected
SQL> /
Enter value for name: FORD
old 3: where ename='&name'
new 3: where ename='FORD'
EMPNO ENAME SAL
---------- ---------- ----------
7902 FORD 3000
&可以替代where条件,order by 子句,列表达式,表名,整个select语句
小知识
1.如果觉得表格输出不够完整可以用↓修改
set pages 200
set lines 200
set pages 200修改纵行输出,set lines 200修改横行输出
2.如果觉得时间格式太麻烦可以通过↓修改
alter session set nls_date_format='YYYY-MM-DD';