加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle光速入门二 ——马士兵Oracle视频讲义笔记

发布时间:2020-12-12 15:26:33 所属栏目:百科 来源:网络整理
导读:其实Oracle的管理没传说中那么难,刚到地税局搞运维,我基本就不会Oracle,仅仅熟悉MySQL,这东西听听课,只要笔记做得好,根本不用往脑子里记,用的时候翻出来照着颜色往上敲,就这么简单,又不是搞开发,大家真别被这破东西吓住了,不信往下看,绝对看一遍

其实Oracle的管理没传说中那么难,刚到地税局搞运维,我基本就不会Oracle,仅仅熟悉MySQL,这东西听听课,只要笔记做得好,根本不用往脑子里记,用的时候翻出来照着颜色往上敲,就这么简单,又不是搞开发,大家真别被这破东西吓住了,不信往下看,绝对看一遍半小时全部掌握,不用记,用的时候看颜色往上敲就行了。本人blog全部位原创,转载请注明源地址。

第四代语言

查询语句、dml数据操作语句、ddl数据定义语句

PL/SQL

declare 从这里变量声明

begin

exception catch到exception

when others then ---其他异常进行执行,任何错误的捕获

end; 结束,必须有分号

set serveroutput on; 执行了这一句才能看到输出结果

dbms_output.put_line('要打印的字符') --不能打印布尔类型

变量声明:

declare

1 binary_integer 整数,主要用来计数,效率很高

2 number 整数 小数

3 char

4 varchar2

5 date

6 long

7 boolean 可以true 可以false 也可以null,建议使用时一定要给个初始值,否则为null

%type 获取某字段/变量的属性

复合类型

table:

相当于java中的数组

type[说明一种新的类型]类型名is table of某表的一列%typeindex by binary_integer[下标使用binary_integer 下标可以是负数]

table定义变量:变量名类型名

record:

相当于java中的class

typeis record

(

字段名变量基本类型

);

record定义变量:类型名

record使用:变量名.字段名:= 值

--使用%rowtype声明record变量

declare

变量名 某表%rowtype --此时的该变量就是一个record类型,它的列就是这个表所有的列

--PL/SQL语言的语句运用

1、select必须返回一条记录,并且只能返回一条记录,如果不用游标,就必须用into 给某变量

select某列,某列into变量名,变量名 from 表名

select的一种用法:

先用%rowtype声明一个record类型的变量AT表%rowtype

然后 select*intoAfrom T表; --就可以将该表中所有字段的值放到A里

sql%rowcount --刚刚执行的sql语句被影响了多少行

--PL/SQL语言的DDL

begin

execute immediate'create table T ......' --外层有单引号如果语句中有单引号,改为双引号

end;

--PL/SQL语言的分支

if (...) then

elsif (...) then ...; --elsif elsif的else没有"e"要注意

else ...;

end if;

--PL/SQL语言的循环

loop

end loop;

forkin1...10loop

end loop;

reverseloop--逆序

whilej<10loop

...;

j:=j+1;

end loop;

--PL/SQL错误处理

exception

when某类异常[异常名,oracle中已经定义了一些异常类型]then

........;

when others then --其他异常类型没有捕获到的,这里全部捕获

........;

end;

*游标(重点)

select 返回的是一个结果集,游标是在这个结果集上方的一个指针,游标和迭代器差不多。

游标的定义:

declarecursor游标名is --声明一个游标

select * from 表名; --这个游标就会指在这个结果集的脑袋上

声明record类型变量游标名%rowtype; --可以存一条游标指向结果集的一条记录

begin

open游标名; --打开游标,打开时plsql才会真正的执行这条select语句

loop --遍历游标

fetch游标名intorecord类型变量; --从游标中拿出一条记录,放到(into)这个record变量中去,fetch后,游标自动往下移一条记录;

exit when(notfound) --判断什么时候结束,如果fetch指到尾部还fetch,指针一直在尾部

dbms_output.put_line(游标名.字段名);

close游标名; --最后用完游标记得把游标给关闭掉

end loop;

while 循环写法:

declarecursor游标名is --声明一个游标

select * from 表名; --这个游标就会指在这个结果集的脑袋上

声明record类型变量游标名%rowtype; --可以存一条游标指向结果集的一条记录

begin

open游标名; --打开游标,打开时plsql才会真正的执行这条select语句

fetch游标名intorecord类型变量; --从游标中拿出一条记录,放到(into)这个record变量中去,fetch后,游标自动往下移一条记录;

while (游标名%found) loop

dbms_output.put_line(游标名.字段名);

fetch游标名intorecord类型变量;

end loop;

close游标名; --最后用完游标记得把游标给关闭掉

for循环的写法

declare

cursor 游标名is

select * from 表名;

begin

for record变量名 in 游标名 loop --用for循环cursor不用open,他会帮你打开,也不需要fetch,for自动帮你fetch;record变量也不需要声明

dbms_output.put_line(record变量名.表的字段名);

end loop; --cursor也不需要关闭,for自动帮你关闭

end;

所以for循环是最简单的循环,也不需要判断cursor是否结束。不容易出错

游标四属性:

1、isopen

2、notfound 最近的一条fetch语句没有返回记录

3、found 找着记录了,返回true

4、rowcount 当前返回的总数是多少

带参数的游标

declare

cursor 游标名(参数1,参数2 ...) is

select 列1,列2 ... from 表名 where 某列1=参数1 and 某列2=参数2;

例子:

declare

cursor c(v_deptno emp.deptno%type,v_job emp.job%type)

-- 参数1 emp表的deptno列类型 参数2 emp表的job列类型

可更新的游标(update )

例:

declare

cursor c is

select * from emp2for update;

begin

for v_temp iscloop

if(v_temp.sal<2000) then

update emp2 set sal = sal *2 wherecurrent ofc; --在当前游标位置更新

elsif (v_temp.sal =6000) then --等于号,赋值时是 :=

delete from emp2 wherecurrent ofc;

end if;

end loop;

commit;

end;

存储过程

带有名字的PL/SQL程序块

除了create or replace procedure 存储过程名 is替代了 declare 之外,其他语句与PL/SQL的写法一模一样

执行 存储过程:

exec 存储过程名

或者:

begin

存储过程名;

end;

/

带参数的存储过程

in 传入参数 只能传入,不能用

out 传出参数 可以运算赋值传出

create or replace procedure 存储过程名

(参数1 in 类型,参数2 类型,参数3 out 类型,参数4 in out 类型)

-- in 默认in out 既传入也传出:传入同时可以但与运算传出

is

函数

create or replace function 函数名 (参数1 类型,参数2 类型)

return 类型

is

begin

... ...

end;

触发器

create or replace trigger 触发器名

数据库设计三范式

范式:数据库的一个规则,减少冗余

三范式的规则:不存在冗余数据

第一范式:1 任何表都要有主键 2 列不可分

第二范式:多对多表设计所要遵循的原则:当一张表里有多个字段作为主键,非主键不能依赖于部分主键,即:不能存在部分依赖

第三范式:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读