Oracle-select语句相关

筛选

where筛选

精确筛选

select * from 表名 where 精确条件;

范围筛选

> =  <  <=  !=

逻辑筛选

and  or  not

包含筛选

in
between ... and ... --左右都是闭区间
select * from emp where sal>=1000 and sal<=3000;  
--等于下面的句子
select * from emp where sal between 1000 and 3000;

空值筛选

is null
is not null

模糊查询

like

通配符

--  %  通配符  表示0-N个任意字符
--  _   通配符  表示1个任意字符

转义符

escape 指定转义符
select * from emp where ename like '%\%%' escape '\';

单行函数

数字相关

四舍五入

round(数字, 小数精度)

数字截取

trunc(数字, 小数精度)
  • 绝对值 abs(数字)

  • 向下取整 floor(数字)

  • 向上取整 ceil(数字)

  • 幂运算 power(数字, 次方)

  • 取余数运算 mod(数字, 除数)

字符串相关

截取字符串

substr(字符串, 开始位置, 连续长度)

拼接字符串

concat(str1, str2)
str1 || str2
  • 计算字符串的字符个数 length(字符串)

  • 字符串内容的替换 replace(字符串, 要被替换的内容,替换后的新内容)

  • 去除左右两边的空格 trim() ltrim() rtrim()

  • 填充内容 lpad() rpad()

时间相关

当前系统时间

sysdate

月份偏移

add_months(时间, 月的数量)

时间间隔

months_between(时间1, 时间2) --时间1-时间2

类型转换

转成字符串

to_char()
--处理时间时
yyyy - 年
mm   - 月
dd   - 日
hh   - 时
mi   - 分
ss   - 秒
day  - 星期几

转成数字

to_number()

转成时间

to_date('时间字符串', '时间字符串的规则')

分组聚合排序

分组

group by

聚合函数

数据统计

count()

求和

sum()

最大值最小值

max()
min()

平均值

avg()

排序

order by

SQL语句查询的顺序

select 列,聚合函数(列)							 5
from 表											1
where 筛选									   2
group by 列										3
having 筛选									   4
order by 列 asc/desc								6

1.先找到表from,从哪个表里面查
2.进行where筛选,分组前的筛选
3.分组group by
4.进行having筛选,分组后的筛选
5.查询需要的内容,列或者聚合函数后的值
6.排序order by

多表查询

子查询

嵌套查询:将一个表格的查询结果,当成另一个表格查询的条件。

子查询中关键字

all

大于最大的,小于最小的

any

大于最小的,小于最大的

联合查询

内连接

(inner) join

可以省略inner,查询两张表符合条件的共同部分

左连接

left join

显示两个表格的共同数据,然后显示左边表的数据

右连接

right join

显示两个表格的共同数据,然后显示右边表的数据

全连接

full join

显示两个表格的共同数据,然后分别显示左边和右边表的数据

连接时and和where的区别

使用and时,先进行筛选字再进行表连接

使用where时,先进行表连接再进行筛选

posted @ 2020-10-07 16:59  Hedger_Lee  阅读(150)  评论(0编辑  收藏  举报