Orale查询操作之条件子句及排序

查询是数据库操作中最常见的一种操作,查询也是用的最多的一种操作
Oracle中查询操作用到的关键字是 select
最简单的查询语句是:
select * from 表名
这句sql语句查询的是表中所有字段(*代表所有)
当然你也可以只查询表中的某些字段,那就可以这么写
select 字段1,字段2... from 表名
然而在实际生活中 仅仅查出所有行是满足不了我们的需求的 往往人们都需要查找到自己需要的某些信息 所以就需要用到一些条件筛选子句或者说是关键字
比如 where in like between...and... is null  is not null 
还有一个场景 我们往往对于查找到的数据,需要数据从大到小或者说是时间从后往前 这时就需要用到Oracle中的排序,需要用到 orader by,无非就是升序和降序
以下会一一讲解

where:用于查询语句中的条件筛选 需要条件查询时这个关键字是少不了的
例如:  select name,age 
	from test 
	where  age>18
结果:查找出test表中年龄大于18的对象的名字和年龄

in:用于筛选条件(具体范围)
例如:select name,age
	from test
	where age in(18,19,20)
结果:查找出test表中年龄是18或者19或者20的对象的名字和年龄
其实上述sql等价于
select name,age
from test
where age = 18 or age = 19 or age = 20
所以用in可以减少or的复合使用

like:用于模糊查询
数据库中查询一般都有 精准查询模糊查询之分
所谓 精准查询,可以理解为在查询时用"="筛选条件时,比如"="右边是hello,那么你查询到的一定要是hello才行
模糊查询,可以理解为在查询时用like关键字来筛选条件的,比如like左边是hello,那么你查询到的只要包含"hello"的结果都可以

模糊查询中需要用到两个 通配符%_
%  代表0或者多个字符
_  代表一个字符

例如:select name
	from test
	where name like '%liu%'
结果:查出test表中名字中包含liu的所有名字
例如:select name
	from test
	where name like '%liu’
结果:查出test表中名字中以liu结尾的所有名字
例如:select name
	from test
	where name like 'liu%
结果:查出test表中名字中以liu开头的所有名字
例如:select name
	from test
	where name like '_%liu’
结果:查出test表中名字中任意字符开头并且以liu结尾的所有名字

between...and...
用于 限制条件,并且包含边界,就相当于>=  and  <= 可以用它比较数值,日期,也可以比较文本(纠结吧,比较文本时其实比较的是字典顺序)
例如:select * from test where age between 10 and 20
结果:查询出test表中年龄在10到20之间(包括10和20)的所有行的信息

is null  筛选条件为某字段为空
例如:select * from test where name is null
结果:查询出test表中name为空的所有行的信息

is not null 筛选条件为某字段不为空
例如:select * from test where name is not null
结果:查询出test表中name不为空的所有行的信息

order by
用于 排序,默认的情况下是按照升序进行排序的
asc:代表的是按照升序进行排序。
desc:代表的是按照降序进行排序。

例如:select name from test order by age
结果:按照年龄升序之后,查询出test表中所有名字
例如:select name,age,salary from test order by salary,age desc;
结果:按工资升序后按照年龄降序,查询出test表中 所有名字 年龄 工资
简写:select name,age,salary from s_emp order by 3,2 desc;(结果是一样的 但是通常不这样操作)
注意:
order by后边可以出现的内容,包括列名,列的别名,select中列的索引位置。
order by一定要写在sql语句的最后一句或者最后一行。
order by后边如果跟多列,那么先按照第一列排序,如果第一列重复在按照第二列
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值