Oracle数据库总结

Oracle数据库学习总结

Oracle是一个数据存储量较大,数据操控简单的数据库,可使用SQL语言和PL/SQL进行数据操作,灵活性强,但相比于SQLserver 操作难度要大一些;
Oracle的数据类型于SQLserver基本相似, 区别在于整形数字和字符类型 SQLserverv的是int和varchar()类型,Oracle是number和varchar2();其余的基本类似。
Oracle最主要的是支持大量PL/SQL语言,有函数,游标 ,触发器的使用,使得数据存储操作变得更灵活,有一点,PL/SQL不支持对象打印
以emp表为例
函数function :
CREATE OR REPLACE FUNCTION 函数名(随便自己写)
RETURN NUMBER(返回类型)
AS
DECLARE
-----要执行的代码(类似java)
SAL EMP.DEPTNO%TYPE;
BEGIN
SELECT DEPTNO INTO SAL FROM EMP WHERE EMPNO=7698;
IF SAL=10 THEN
DBMS_OUTPUT.PUT_LINE(‘A’);
ELSIF SAL=20 THEN
DBMS_OUTPUT.PUT_LINE(‘B’);
ELSE
DBMS_OUTPUT.PUT_LINE(‘C’);
END IF;
END;

游标 CURSOR:
1 步骤
– 1.定义游标(在declare中)
– cursor myc is select * from xx;
– 2.开启游标(在begin中)
– open myc;
– 3.数据的处理工作(从游标中取出需要的数据)
– fetch myc into xx;
– 4.关闭游标
– close myc;
2.游标的状态
–%found 游标当中有数据
–%notfound 游标当中无数据
–%rowcount 收到受影响的行数
—%isopen 游标是否打开
例:静(查询emp中的名字name和工资sal)
DECLARE
CURSOR MYC IS SELECT *FROM EMP ;
MY_ROW EMP%ROWTYPE;
BEGIN
OPEN MYC ;
LOOP
FETCH MYC INTO MY_ROW ;
EXIT WHEN MYC%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(MY_ROW.ENAME||MY_ROW.SAL);
END LOOP;
CLOSE MYC ;
END;
3.动态游标
– 游标在声明时没有设定,在打开时可以对其进行修改
– 强类型游标 有return
– type my_t is ref cursor return xx%rowtype;
– 弱类型游标 无return
– type c1 is ref cursor;
– 动态游标无法使用for循环遍历

–触发器

–数据发生改变的时候(增删改)
– 系统自己调用

– 触发器的分类

–before 前
–after 后

–分类
–行级触发器 for each row
– 每一行都会触发
–语句级触发器
– 不写 for each row
–执行一次


– 触发器触发时会建立两个表
–增--new
–删-- old
– 改-- new – old

–触发顺序
– before -执行前触发
– SQL 语句执行
–afore 执行后触发

例:

CREATE OR REPLACE TRIGGER TRI_STU_DELETE
BEFORE DELETE–触发时间
ON STUINFO --触发的表
FOR EACH ROW --触发的级别

BEGIN 

IF :OLD.stuName='李斯文' THEN 
   RAISE_APPLICATION_ERROR(-20001,'不能删除此员工');
  END IF;  
END;

–触发器的调用
DELETE STUINFO WHERE stuName=‘李斯文’;
在这里插入图片描述
即触发器已经成功启用。

相较于SQLserver ,Oracle无法使用主键进行自增操作,Oracle却引用了“序列”
实现主键自增
序列 sequence :
create sequence seq_e ;
– 序列即是一个自增的数字
currval–当前的值
nextval – 下一个值
使用:

SELECT SEQ_E.NEXTVAL FROM DUAL;

SELECT SEQ_E.CURRVAL FROM DUAL;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值