oracle入门学习,散碎知识点

简介:一个oracle服务器由 一个oracle数据库+多个oracle实例构成

Oracle 很庞大 占用很多内存和cpu

sql

字符和日期要包含在单引号中

排序 order by  asc desc

 

函数 分为 单行函数 多行函数

函数可以没有入参 但是必须要有返回结果

单行函数 包括

字符函数  lower('') trim('')

日期函数

数字函数 select trunc(2.345,2) from dual   //dual是伪表,用来测试函数和表达式

转换函数(显式to_char()/隐式)

通用函数   NVL(expr1,expr2) :判断某个值是否为空值,若不为空值则输出,若为空值,返回指定值。

嵌套函数(由内向外执行)

 

If-else-then

两种使用方式

1.case when then when then else end sql99语法

2.decode(xxx,0,0.0,1,1.1,2,2.2,333) 函数   oracle语法

 

分组函数

作用于一组函数,对一组数据返回一个值.

会忽略空值,AVG(NVL(col,0))这样就不会忽略

常用的:

AVG 平均值

COUNT 计数

MAX 最大值

MIN 最小值

SUM 求和

 

DISTINCT 去重关键字

Group by 子句 :在select列表中所有未包含在组函数中的列都应该包含在group by 子句中。

Having 子句:过滤分组   ---相应的 where子句不能使用组函数

 

表的别名:1.简化查询 2.使用表前缀能提高执行效率 3. 用了别名不能用真名

多表查询

等值连接 不等值连接 外连接(+) 自连接

内连接    查询满足条件的

外连接    查询所有

左外(可省略)连接   满足条件+左不满足 left outer(可省略) join

满外连接 full outer join

 

子查询

子查询在主查询之前执行

子查询要包含在括号中

 

单行操作符: > < =

多行操作符:in any all

 

集合运算

Union 去重

Union all 直接相加

Intersect 交集

Minus 差集 返回属于第一个的集合但不属于第二个集合的记录

注意:order by 要放到最后,集合的类型和个数 要一致

 

DML 数据操作语言 manipulation 增删改 insert delete update

从其他表拷贝数据用子查询 不需要values

DDL 数据定义语言 definition  创建管理表  create alter drop truncate rename

DCL 数据控制语言 control  commit ;Savepoint xxx 创建保存点  ;Rollback to xxx 回滚到保存点

数据库事务 组成:一个或多个dml + 一个ddl +一个dcl

 

隔离级别:一个事务与其它事务隔离的程度

没有这个 会发生

脏读:对于两个事物T1, T2, T1读取了已经被T2更新但还没有被提交的字段.之后,若T2回滚,T1读取的内容就是临时且无效的.

不可重复读:对于两个事物T1, T2, T1读取了一个字段,然后T2更新了该字段.之后,T1再次读取同一个字段,值就不同了.

幻读:对于两个事物T1, T2, T1从一个表中读取了一个字段,然后T2在该表中插入了一-些新的行.之后,如果T1再次读取同一个表,就会多出几行.

 

隔离级别越高,数据一致性越好,但并发性越弱

隔离性:

数据库系统必须具备隔离并发运行各个事务的能力,使他们不会相互影响,避免各种并发问题。

4种隔离级别

Read uncommitted 读未提交数据

Read committed 读已提交数据

Repeatable read 可重复读

Serializable 串行化

Oracle 支持两种 Read committed(默认) Serializable

Mysql 支持四种 默认 Repeatable read

 

常见的数据库对象

视图  从表中抽出的逻辑上相关的数据集合 view

序列   提供有规律的数值 共享 主键值 放入内存可提高效率  sequence  nextval currval

    回滚,系统异常,多表同时使用 会造成裂缝

索引  提高查询效率

有必要创建索引的三种情况:

  1. 列中数据值范围很广
  2. 列经常在where子句或者连接条件中出现
  3. 表经常被访问且数据量很大,访问数据大概占2%-4%

没必要创建索引:

  1. 表很小
  2. 列不常在where子句或者连接条件中出现
  3. 查询的数据量大于2%-4%
  4. 表常更新

同义词  给对象起别名 synonym

 

Pl/sql

declare

     变量,光标,例外 申明。  %:取已有表字段的类型

begin

     DML语句

exception

   例外处理语句

end;

 

 

if语句

 

1. if 条件 then 语句1;else(可省略) 语句2;end if;

2. if 条件 then 语句1;elsif 语句 then 语句; else 语句;end if;

循环语句

1. while 条件 loop 语句; end loop;

2. for i in ('1','2','3')  loop 语句; end loop;

3. loop exit[when 条件]; 语句; end loop;

光标:cursor    用于存储一个查询返回的多行数据

定义 cursor c is select ..

打开 open c

使用 fetch c into xx

关闭 close c

 

存储过程 可以没有反参  procedure

存储函数 有反参  function

触发器 跟表关联的pl/sql程序 当对这个表做特定操作,oracle自动触发程序。  Trigger

触发器使用场景:

  1. 数据确认
  2. 实施复杂的安全性检查
  3. 做审计,跟踪表上所做的数据操作
  4. 数据的备份和同步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值