oracle怎么条件查询数据,Oracle学习笔记三-条件查询(where)

更新时间:2023-07-18 22:32:01 阅读: 评论:0

oracle怎么条件查询数据,Oracle学习笔记三-条件查询
(where)
Oracle学习笔记 3 --条件查询( where )
之前的查询,结果是表中所有的记录。如果想要只是显⽰满⾜⼀定条件的记录,就要使⽤条件查询或者称为限定查询。
条件查询的基本语法:
SELECT  * |(具体的列名,如 ename ,empno)
FROM  table(表名)
WHERE 限定条件
⼩记:where字句要紧跟在from字句之后。
例:查询emp表中,⼯资⼤于2000的员⼯的所有信息
SQL> lect * from emp where sal > 2000 ;
韭菜补什么EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
美丽的花仙子
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839 KING PRESIDENT 1981/11/17 5000.00 10
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
6 rows lected
在上例中,使⽤了 >  ,在操作条件中,还可以使⽤ >= ,= ,<= ,都是可以的。
例:查询员⼯号不是7566的雇员信息。
SQL> lect * from emp where empno != 7566 ;SQL> lect * from emp where empno <> 7566 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839 KING PRESIDENT 1981/11/17 5000.00 10
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20
7900 JAMES CLERK 7698 1981/12/3 950.00 30
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
13 rows lected上⾯两种⽅式的查询结果都是⼀样的。
逻辑运算:
1)AND ,逻辑并;
2)OR , 逻辑或;
3)NOT,逻辑否;
例:查询员⼯部门号为10且⼯资⼤于2000的雇员信息。
SQL> lect * from emp where deptno = 10 and sal > 2000 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7839 KING PRESIDENT 1981/11/17 5000.00 10
如果要同时满⾜两个甚⾄是多个条件,使⽤and 连接条件字句。
例:查询员⼯部门号为10 或者员⼯⼯资⼤于2000 的雇员信息。
SQL> lect * from emp where deptno = 10 or sal > 2000 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839 KING PRESIDENT 1981/11/17 5000.00 10
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
7 rows lected两个条件之间是⼀种或者的关系,我们使⽤逻辑或  OR ,来连接两个条件。
例:查询员⼯⼯资⼤于2000,同时可以领取奖⾦的员⼯信息。上⾯的查询结果中,comm是空的,表⽰查询结果是null。SQL> lect * from emp where sal > 1000 and comm is not null;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
上⾯查询的是奖⾦不为空,所以使⽤了not ,如果要查询comm为空的雇员信息,则条件改为 comm is null 。
其他⽐较运算符:
BETWEEN ... ON ...在两个值之间,包括边界
IN(t)值为列表t中的⼀个
LIKE模糊查询
IS NULL查询空值
between on 语法格式:
字段 between ⼩值 on  ⼤值
例:查询⼯资在1500 到 2500 的雇员信息
SQL> lect * from emp where sal between 1500 and 2500 ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30上⾯的查询结果和语句  lect * from emp where sal>1500 and sal < 2500; 的查询结果是⼀样的。
IN的语法格式:
in(值1, 值2 , 值3 )
例:查询雇员编号为 7499  , 7782 , 7844 的雇员信息
SQL> lect * from emp where empno in (7499 , 7782 , 7844) ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
作文素材初中----- ---------- --------- ----- ----------- --------- --------- ------
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
LIKE的使⽤要注意通配符的问题,有两种通配符:
% --任意多个字符的匹配
_--只匹配⼀个字符
例;查询名字中第⼆个字符是M的雇员信息。
SQL> lect * from emp where ename like '_M%';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
-
---- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
转译字符:上⾯中使⽤了 % , _ 作为了匹配字符,如果名字中含有下划线,要如何查询呢?此时我们就要进⾏转译;赵桂兰
语法格式:
SELECT ename
FROM  emp
WHERE  ename LIKE ‘IT\_%‘ escape ‘\‘;
判空操作:
例:查询表中没有奖⾦的员⼯信息
SQL> lect * from emp where comm is null ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
貔貅怎么带
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7839 KING PRESIDENT 1981/11/17 5000.00 10
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20
7900 JAMES CLERK 7698 1981/12/3 950.00 30
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
10 rows lected
如果在where条件语句中含有,字符或者是⽇期,要⽤单引号将其引起来。
格式如下:
SELECT ename, hiredate, sal
FROM  emp
WHERE
hiredate = '7-6⽉-1994'
SELECT ename, deptno
FROM  emp
WHERE  ename ='Whalen';
字符⼤⼩写敏感,⽇期的格式敏感,⽇期格式为 dd-m⽉-yy 。
排序:
使⽤ ORDER BY 字句对查询的结果进⾏排序。
语法格式:
lect distinct * | (具体的列名)
from 表名
where 查询的条件
ORDER BY 排序的字段 1 , 字段2 , 字段3  (asc | desc ) ;
asc-> 表⽰的升序 ,desc –> 表⽰的是降序 ,默认的是升序排列。排序除了可以按照 表中的字段进⾏排序,还可以使⽤别名来排序。财神位置
例:查询emp表中所有的信息,对结果进⾏排序,⾸先对部门号进⾏排序,部门号⼀样则按⼯资降序进⾏排列,如果⼯资⼀样,则按员⼯号进⾏降序排列。
SQL> lect * from emp order by deptno ,sal desc ,empno desc;
足球蛋糕
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
7839 KING PRESIDENT 1981/11/17 5000.00 10
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
7902 FORD ANALYST 7566 1981/12/3 3000.00 20
缤纷假日
7788 SCOTT ANALYST 7566 1987/4/19 3000.00 20
7566 JONES MANAGER 7839 1981/4/2 2975.00 20
7876 ADAMS CLERK 7788 1987/5/23 1100.00 20
7369 SMITH CLERK 7902 1980/12/17 800.00 20
7698 BLAKE MANAGER 7839 1981/5/1 2850.00 30
7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
7844 TURNER SALESMAN 7698 1981/9/8 1500.00 0.00 30
7654 MARTIN SALESMAN 7698 1981/9/28 1250.00 1400.00 30
7521 WARD SALESMAN 7698 1981/2/22 1250.00 500.00 30
7900 JAMES CLERK 7698 1981/12/3 950.00 30
14 rows lected

本文发布于:2023-07-18 22:32:01,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1086932.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   条件   结果
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图