带有限制条件的查询 oracle中的运算符 运算符顺序 对查询后的数据进行排序

简单查询语句


带有限制条件的查询

使用where子句限定返回的记录(加入查询条件对记录进行过滤);

select * 
from emp
where deptno=10;

查询emp表里所有所属部门为10的员工记录


对于字符型的数据和日期型的数据必须要使用单引号


这里查询子句中字符型的数据是严格区分大小写
where name=‘Li Lao Tou’;
限制条件:查找name为Li Lao Tou的记录


对于日期型的数据,格式是敏感的,使用日期型数据的格式是XXX-DD-YYYY(日 - 月 - 年)
注意 如果选择的字符编码是中文版的则查询的时候 需要在DD(月份)后面加上一个月字(where hiredate =‘20-2月-1999’; )
where hiredate =‘20-2-1999’;
限制条件:查找hiredate为20-2-1999的记录

限制条件中可以使用关系运算符来表示查找条件
如 > / < / = / >= / <= / <> / !=

select *
from emp
where sal >=2000;
--查询sal中记录大于等于2000的
--where sal !=3000;
--where sal <>3000;
--这两个都是查询记录不等于3000的<>和!=的效果一样

其他运算符

between…and…(在两者之间 (包含))

select * 
from emp
where  sal between 2000 and 3000;
--where sal>=2000 and sal<=3000;
--上下两个限制条件都一样 与java不同的是oracle中“与”用and表示 Java中用&&

查找emp表中sal值大于等于2000小于等于3000的记录


in(list)(运算符匹配列出的值 括号中填入指定字段中列表里的数据)

select *
from emp
where job('mamam','mbmbm');
--与之相对应的是这个子句 where job='mamam' or job='mbmbm';
--oracle中用or来替代java中的||(或)

查询emp表中字段job列表里数据为mamam和为mbmbm的记录


like(匹配一个字符模式 用于字符型数据的查询,可以进行模糊查询)

select *
from emp
where name like '%a%';
--where name like 'a%';
--where name like '_a%';
--where name like '%\%%' escape'\';

%表示一个或多个字符
这里%a%表示name字段列表里含有a这个字符的
a%表示开头字母是a的数据
_这个下划线表示一个字符 即_a%表示第二个字符为a的数据
当查找带%字符的时候 可以用转义符 用escape’‘指定\为转义符 然后’%%%'表示字符里含有%的


is null(是空值 对于要用is null进行查找过滤)

select *
from emp
where comm is null;
--查询不为空
--where comm is not null;
--特殊情况 not夹在is和null中间

查询emp表中 comm字段中为空的记录


not运算符(类似于Java中的!运算符)

select *
from emp
where sal not between 2000 and 3000;
--where sal<=2000 or sal>=3000;(同上 与上面同一个意思)

查询sal字段中不在2000到3000的数据


运算符顺序
1级最高 往下等级递减
1级 所有的比较运算符
2级 not
3级 and
4级 or


改变当前会话中的日期格式
会话:即我们用sql语句与服务器的交互称为会话
alter session set nls_date_format=“YYYY-MM-DD HH:MI:SS”;


对查询后的数据进行排序

order by子句
默认按照从低到高排序

select *
from emp
where sal >2000
order by sal;
--order by sal desc;
--在要查询的字段后面跟上desc就可改变默认顺序 从高到低排序

这是先查找sal大于2000的 然后对查出来的数据根据sal数值按照从低到高进行排序
注:每个子句都可单独使用 解释如下

select *
from emp
order by sal;

这里不用where 直接找出所有的记录然后按照sal从低到高排序 即每个子句都可单独使用


按照多个字段进行排序

select *
from emp
order by deptno,sal;

先按照deptno字段中的数据进行排序 数据相同的记录再用sal进行排序


使用字段的别名进行排序

select empno,name,(sal*12) "年薪"
from emp
order by "年薪"

对sal*12起的新别名“年薪”照样可以正常排序

猜你喜欢

转载自blog.csdn.net/qq_45821251/article/details/108746780
今日推荐