Oracle之SQL

##### Oracle物理存储结构
```
1.数据文件:包含真实数据,一个数据文件只能属于一个表空间
2.控制文件:每个oracle数据库都有一个包含元数据的控制文件
联机重做日志文件:

```
##### Oracle逻辑存储结构
```
数据块:映射到磁盘块
范围(区):是数据块的集合
段:是区的集合,存在于表空间
表空间:由多个数据文件组成
```
##### oracle做项目遇到的
```
rownum:
row_number() over
rank()..over
dense_rank()  over

```


##### 基本select语句
```
算术运算符:
乘除优先级高于加减
优先级相同,从左到右
括号改变优先级

空值:包含空值的数学表达式的值都为空值
连接符: "||"" ,将列与列,列与字符连接在一起,合成一列
distinct 去重关键字


操作符:
BETWEEN .. AND ..  两个值之间,包含边界
IN(SET)  等于值列表中的一个
LIKE  模糊查询的 % 与 _ 符号
IS NULL


优先级:
1.算术运算符
2.连接符
3.比较符
4. IS NULL LIKE IN
5.BETWEEN
6.NOT
7.AND
8.OR
括号可以改变优先级

```

### 单行函数
```
操作数据对象
接受参数返回一个结果
只对一行进行变换
每行返回一个结果
可以转换数据类型
可以嵌套
参数可以是一列或一个值


```


##### 字符函数
```
大小写控制函数:
LOWER:将字符串转成小写
UPPER:转为大写
INITCAP:每个单词首字母转为大写

字符控制函数:
CONCAT:将两个字符串连接到一起
SUBSTR:截取字符串
LENGTH/LENGTHHB:获取字符串长度
INSTR:字符串出现的位置
LPAD|RPAD:左填充,右填充
TRIM:去掉某个字符串
REPLACE:替换某个字符串

```

##### 数组函数
```
round:四舍五入
trunc:截断(保留几位小数) 例:trunc(45.926,2) 45.92
MOD:求余
```

##### 日期函数
```
MONTHS_BETWEEN:两个日期相差的月数 
ADD_MONTHS:向指定日期加上若干月数
NEXT_DAY:指定日期的下一个日期
LAST_DAY:本月的最后一天
ROUND:日期四舍五入
TRUNC:日期截断
```

##### 转换函数
```
数据类型转换:隐式,显式
隐式:oracle自动转换数据类型 例如:number转为varchar等
显式:
to_number:
to_date(date,'format_model'):format_model为日期格式
to_char:

```

##### 通用函数
```
nvl(expr1,expr2):expr1为null,返回expr2
nvl2(expr1,expr2,expr3):expr1为null,返回expr3,不为null,返回expr2
nullif(expr1,expr2):不等返回第一个值,相等返回null
coalesce(expr1,...,exprn):遇到非null值返回该值,停止

```

##### 条件表达式
```
case: 类似java--if else

decode:类似case的表达式

```

### 多行函数
```
多行函数参与计算时会忽略null值


count:求个数 例:count(distinct name),求不同姓名的个数
sum:求和
max:
min:
avg:

求不同部门的平均薪水:
select deptno,avg(sal) from emp  group by deptno;
where 与having的区别:
where 后面不能使用多行函数
having是先分组再过滤
where是先过滤再分组


group by增强 使用rollup(),cube();
select deptno,job,sum(sal) from emp group by rollup(deptno,job);

rollup():生成简单的group by聚合行以及小计行或超聚合行,还生成一个总计行
cube():生成简单的group by 聚合行,rollup超聚合行和交叉表格行

```
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值