PLSQL数据库

发布于:2024-04-23 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

什么是PLSQL数据库

PL数据库的实现方法

PL数据库的基本语法

1.作用

2.语法

3.赋值输出

4.引用

5.异常处理

6.if 判断

7.loop循环

8.while循环

9.for循环

10.游标

11.参数游标

12.索引

13.分区表


什么是PLSQL数据库

        PL/SQL(Procedure  Language/SQL)是 Oracle 对 sql 语言的过程化扩展,指 在 SQL 命令语言中增加了过程处理语句(如分支、循环等),使 SQL 语言具有 过程处理能力。把 SQL 语言的数据操纵能力与过程语言的数据处理能力结合起来,使得 PLSQL 面向过程但比过程语言简单、高效、灵活和实用。

PL数据库的实现方法

1.首先,启动VMvare虚拟机以启动PLSQL Developer,连接Oracle数据库

2.利用已登录的管理员用户创建新用户(详见之前章节)

3.在DataGrip中编写相应代码,利用虚拟机PLSQL运行,语法见本章下

PL数据库的基本语法

1.作用

        plsql也可以实现复杂的业务逻辑
        为不直接使用编程语言 而是学习plsql
        plsql会比直接使用 编程语言 速度更快

2.语法
        [declare
            -- 声明变量 (变量名 表名.字段名%type;  引用变量)
        ]
        begin -- PL代码块
            -- 代码逻辑
            [exception
    -- 异常处理
    ]
end;
3.赋值输出
        a:=1; -- 把1赋值给a
        select 表中字段 into 变量名 from 表名; -- 变量赋值
        dbms_output.put_line('单价:'||变量名); -- 输出
4.引用
        声明变量 (变量名 表名.字段名%type;  引用变量)
        声明行变量(变量名 表名%rowtype;  引用一行变量)
        begin
            select * into 变量名 from 表名 where id = 1;
            变量名=表名.字段名···(赋值编辑)
        end;
5.异常处理
-- 引用行变量where不可筛选多行或不存在的id
exception
    when 错误类型 then
        输出;
-- 处理
exception
    when no_data_found then
        dbms_output.put_line('数据找不到!');
    when too_many_rows then
        dbms_output.put_line('数据太多!');
    when other then
        dbms_output.put_line('异常:'||sqlcode||sqlerrm);
6.if 判断
-- if 条件 then
--   业务逻辑
-- elsif 条件 then
--   业务逻辑
-- else
--   业务逻辑
-- end if;
7.loop循环
loop/end loop;
loop
    dbms_output.put_line(···);
    变量=变量+1;
    exit when 变量>100;
end loop;
8.while循环
while 条件判断  -- 符合条件才能进入循环
loop
    dbms_output.put_line(···);
    变量=变量+1;
    exit when 变量>100;
end loop;
9.for循环
declare
begin
    for 变量 in 起始值..终止值
    loop
    dbms_output.put_line(···);
    end loop;
end;
10.游标

游标是系统为用户开设的一个数据缓冲区,存放 SQL 语句的执行结果。

我们可以把游标理解为 PL/SQL 中的结果集。

declare
    行变量 表名%rowtype;
-- 记录数据获取的位置,存储每一行数据
    cursor 游标名称 is sql语句;
    select * from 表名 where ownertypeid=1;
begin
-- 使用游标语法
    open 游标名称 -- 打开游标
    loop
    业务逻辑(fetch 游标名 into 行变量)
        输出 dbms_output.put_line('价格:'||表名.字段名);
    exit when 游标名称%notfound
    业务逻辑
    end loop;
close 游标名称; -- 关闭游标
11.参数游标
declare
    cursor 游标名(参数名 number) is select *from 表名 where id列名 = 参数名;
begin
    for i in 游标名(1)
    loop
    dbms_output.put_line('价格:'||i.列名||'吨位:'||i.列名||'吨位:'||i.列名);
    end loop;
end;
12.索引
-- 加快查询速度
create index 索引名称  on 表名(列名);
13.分区表
范围分区(range,用时间分区)
HASH 分区(散列分区,不连续)
列表分区
复合分区(范围+HASH)