Oracle带where的查询语句我的Oracle数据库学习笔记
Day 6带where的查询语句
⽂章⽬录
带条件的查询 (结果集中仅显⽰满⾜条件的记录)
1. 语法:
select列名列表
from表名
[where查询条件];
2. 运算符:
1)算术运算符: + - * / %
2)条件运算符 : =,!=(<>),>,>=,<,<=, any,all,some
注意: any, all不能单独使⽤,要和其他 6个条件运算符⼀起使⽤
any和some是等价的
3) 逻辑运算符:not, and ,or not -->and–>or
4)SQL运算符: like, in, between and , is null, 相反值: not like ,not in,not between and ,is not null.
Like 与通配符⼀起使⽤:
%:任意长度的字符
_:⼀个字符
5)sql连接符:
concat(s1,s2)
s||s2: || 连接符
1.查询10部门的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where deptno=10;
2.查询不是10号部门的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where deptno !=10;
与上⾯的语句等效
3.查询⼯资⾼于1500(不含)的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where sal>1500;
查询⼯资⾼于1500(含)的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where sal>=1500;
4 .在查询语句使⽤逻辑运算符 not ,and, or
4.1 查询10号部门中⼯资⾼于1500的员⼯(编号,姓名,职位,⼯资,部门编号) -->and
select empno,ename,job,sal,deptno
from emp
where deptno=10and sal>1500;
4.2 查询⼯资⾼于3000(含)或⼯资低于1000(含)的员⼯信息(编号,姓名,职位,⼯资,部门编号)–>or
select empno,ename,job,sal,deptno
from emp
where sal >=3000or sal <=1000;
5 .在条件中判断select语句部分的表达式的值
查询年薪⾼于15000(含)员⼯信息(编号,姓名,职位,⼯资,年薪)
select empno,ename,job,sal,sal*12 yearsal
from emp
--where yearsal >=15000; --条件出现错误:"yearsal 标识符⽆效",错误原因为:此名为别名,不能在where条件中使⽤别名判断
where sal *12>=15000;
6 .在条件中使⽤SQL运算符: like ,between … and , in , is null
6.1 like ‘使⽤通配符的表达式’
like 与 通配符⼀起使⽤进⾏判断 。通配符:
%:有任意长度的字符 (包含0个)
_:表⽰此处有⼀个字符
适⽤于字符类型的值
查询员⼯姓名中包含A字符的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where ename like'%A%';
查询员⼯姓名中以A字符开头的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where ename like'A%';
查询员⼯姓名中以S字符结尾的员⼯信息(编号,姓名,职位,⼯资,部门编号)
查询员⼯姓名中第⼆个字符为A字符的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where ename like'_A%';
查询员⼯姓名中倒数第三个字符为M的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job ,sal,deptno
from emp
where ename like'%M__';--注意,两个下划线之间没有空格的
查询员⼯姓名以A开头或者以’S’结尾的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where ename like'A%'or ename like'%S';
------------------------------ like 取反: not like
查询员⼯姓名不以‘A’开头的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where ename not like'A%';
查询员⼯姓名不以A开头并且也不以’S’结尾的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where ename not like'A%'and ename not like'%S';
与上⾯的效果等效
select empno,ename,job,sal,deptno
from emp
where not(ename like'A%'or ename like'%S');
6.2 between …and
指定范围的条件: between … and
between 下限值 and 上限值。 (包含上限值与下限值的)
适⽤于:数值类型和⽇期类型
注意: between …and 前后的值如果写反:
between 上限值 and 下限值
查询结果为: 不出现错误,同时没有任何数据显⽰
查询⼯资在1000~3000之间的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where sal >=2000and sal <=3000;
-- between and
select empno,ename,job,sal ,deptno
from emp
where sal between2000and3000;
思考⼀下,下⾯的SQL语句的结果为?
where sal between3000and2000;-- 结果为:A, 出现错误 B 正确显⽰结果 C 不报错,同时没有任何信息显⽰选项为:C --------------between ... and 取反: not between .. and ..
查询员⼯⼯资不在2000~3000之间的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno ,ename,job,sal,deptno
from emp
where sal <2000or sal >3000;
与上⾯的SQL等效
select empno,ename,job,sal,deptno
from emp
where not(sal >=2000and sal <=3000);
与上⾯的SQL等效
select empno,ename,job,sal,deptno
from emp
where sal not between2000and3000;
6.3 in in(值列表)匹配值列表中任意⼀个值,值列表之间使⽤逗号
分隔 .注意:值列表中的值不能带有通配符
查询10部门和20部门的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where deptno =10or deptno=20;
-- in
select empno,ename,job,sal,deptno
from emp
where deptno in(10,20);
查询职位为‘CLERK’或者是‘MANAGER’的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno ,ename,job,sal,deptno
from emp
where job ='CLERK'or job='MANAGER';
--in
select empno,ename,job,sal,deptno
from emp
where job in('CLERK','MANAGER');
----------------in 取反 not in
查询不是10部门也不是20部门的员⼯信息(编号,姓名,职位,⼯资,部门编号)
select empno,ename,job,sal,deptno
from emp
where deptno!=10and deptno <>20;
-- not
select empno ename,job,sal,deptno
from emp
where not(deptno=10or deptno=20);
--not in
select empno ename,job,sal,deptno
from emp
where deptno not in(10,20);
查询职位不是‘CLERK’同时也不是‘MANAGER’的员⼯信息(编号,姓名,职位,⼯资,部门编号)–>not in
select empno,ename,job,sal,deptno
from emp
where job not in('CLERK','MANAGER');
6.4 is null 判断值是否为null 不包含‘null’也不包含’’,也不包含0
查询奖⾦为null的员⼯信息(编号,姓名,职位,⼯资,奖⾦,部门编号)
select empno,ename,job,sal,comm,deptno
from emp
where comm is null;
查询公司的总裁的信息(编号,姓名,职位,部门编号)
select empno,ename,job,deptno
from emp
where mgr is null;
-- is null 取反 is not null
查询有奖⾦的员⼯信息(编号,姓名,职位,⼯资,奖⾦,部门编号)
select empno,ename,job,sal,comm,deptno
from emp
where comm is not null;
7.使⽤连接符把多列的值连接为⼀列显⽰
7.1 使⽤函数 concat(s1,s2) 把s2的值连接到s1的后⾯,成为⼀个新的字符值
查询员⼯的信息(编号姓名,职位,⼯资)
select concat(empno,ename) empInfo,job,sal
from emp;
查询员⼯的信息(编号姓名职位,⼯资)
select concat(empno,ename,job),sal --出现错误,参数个数先效,原因:concat仅写两个参数
from emp;
解决⽅式,嵌套调⽤concat函数 ,
concat(concat(concat(s1,s2),s3),s4)
select concat(concat(empno,ename),job) empinfo,sal
from emp;sql语句查询结果取反
7.2 使⽤ || 连接符
> 查询员⼯的信息(编号姓名,职位,⼯资)
select empno||ename as empinfo,job,sal
from emp;
查询员⼯的信息(编号姓名职位,⼯资)
select empno||ename||job||sal empinfo
from emp;
查询员⼯信息(编号–>姓名)
select empno||'-->'||ename as empInfo
from emp;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
oracle plsql
« 上一篇
sql 多条件判断
下一篇 »
发表评论