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时,先进行表连接再进行筛选