oracle数据库对象

本文详细介绍了Oracle数据库中的关键对象,包括表、视图、序列、索引、同义词、存储过程、存储函数及触发器等。每个部分都涵盖了基本概念、创建与管理语法以及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 数据库对象:

    • 1.表 –> 基本的数据存储集合,由行和列组成.

      • create table
        • 语法:
          CREATE TABLE [schema.]table
          (column datatype [DEFAULT expr][, …]);
        • 示例:
          create table mytab(id number(20),name varchar(20),birthday date);
        • 使用子查询创建表:
          • create table emp0
            as
            select * from emp where 1=2;
            这条语句相当于拷贝emp的表结构到emp0
      • alter table
          1. 增加列:
            alter table emp add imag blob;
          1. 修改列的类型:
            alter table emp modify ename varchar(30);
          1. 删除列:
            alter table emp drop column imag;
          1. 删除表:
            drop table emp;
            • 注意这样删除只是将emp表放到oracle回收站里了
          1. 查看回收站
            show recyclebin
          1. 清空回收站
            purge recyclebin
          1. 彻底删除表:
            drop table emp purge;
    • 2.视图

      • 概述:从表中抽取的逻辑上相关的数据集合
      • 语法:
        CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
        [(alias[, alias]…)]
        AS subquery
        [WITH CHECK OPTION [CONSTRAINT constraint]]
        [WITH READ ONLY [CONSTRAINT constraint]];
        • WITH READ ONLY:表示该视图只读.
      • 优点:
        • 1.限制数据访问
        • 2.简化复杂查询
        • 3.提供数据的相互独立
        • 4.同样的数据,可以有不同的显示方式
        • 注意:1.视图不能提高性能. 2.不建议使用视图进行表的修改(会受很多限制).
      • 1.视图是一张虚表
      • 2.视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
      • 3.向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
        视图向用户提供基表数据的另一种表现形式
      • 删除视图:drop view 视图名称.
    • 3.序列

      • 概述:可供多个用户用来产生唯一数值的数据库对象
        • 1.自动提供唯一的数值
        • 2.共享对象
        • 3.主要用于提供主键值
        • 4.将序列值装入内存可以提高访问效率
      • 语法:
        CREATE SEQUENCE sequence
        [INCREMENT BY n]
        [START WITH n]
        [{MAXVALUE n | NOMAXVALUE}]
        [{MINVALUE n | NOMINVALUE}]
        [{CYCLE | NOCYCLE}]
        [{CACHE n | NOCACHE}];

        • NOCYCLE:表示不循环.
        • CACHE:缓存.
      • 注意:

        • 1.NEXTVAL:返回序列中下一个有效的值,任何用户都可以引用
        • 2.CURRVAL:存放序列的当前值
      • 修改序列:修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存
        • 语法:
          ALTER SEQUENCE dept_deptid_seq
          INCREMENT BY 20
          MAXVALUE 999999
          NOCACHE
          NOCYCLE;
        • 注意事项:
          • 1.必须是序列的拥有者或对序列有 ALTER 权限
          • 2.只有将来的序列值会被改变
          • 3.改变序列的初始值只能通过删除序列之后重建序列的方法实现
      • 删除序列:
        • Drop sequence 序列名称。
    • 4.索引: 提高查询的效率

      • 概述:
        • 1.一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中
        • 2.索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度
        • 3.索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引. 用户不用在查询语句中指定使用哪个索引
        • 4.在删除一个表时, 所有基于该表的索引会自动被删除
        • 5.通过指针加速 Oracle 服务器的查询速度
        • 6.通过快速定位数据的方法,减少磁盘 I/O
      • 语法:
        CREATE INDEX index
        ON table (column[, column]…);
      • 创建索引:
        • 1.自动创建
        • 2.手动创建
      • oracle索引类型:
        • 1.B树索引
        • 2.位图索引
      • 什么时候创建索引:
        • 1.列中数据值分布范围很广
        • 2.列经常在 WHERE 子句或连接条件中出现
        • 3.表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%
      • 什么时候不创建索引:
        • 1.表很小
        • 2.列不经常作为连接条件或出现在WHERE子句中
        • 3.查询的数据大于2%到4%
        • 4.表经常更新
    • 5.同义词

      • 概述:给对象起别名,方便访问其它用户的对象,缩短对象名字的长度
      • 语法:
        CREATE [PUBLIC] SYNONYM synonym
        FOR object;
        *删除同义词:
        DROP SYNONYM 同义词名称
    • 6.存储过程

      • 概述:指存储在数据库中的供用户调用的子程序叫存储过程或者存储函数.
      • 语法:
        create [or replace] procedure 过程名(参数列表)
        as
        PL/SQL子程序
        • 注意:这里的参数需要指定是输入参数还输出参数(in:输入,out:输出)
      • 存储过程调用方式:

          1. execute[exec] 过程名;

          1. begin
            过程名
            end;
            /
    • 7.存储函数

      • 概述:
        函数(Function)为一命名的存储程序,可带参数,并返回一计算值.
        函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值.
        函数说明要指定函数名,结果值的类型,以及参数类型等.
      • 语法:
        CREATE [OR REPLACE] FUNCTION 函数名(参数列表)
        RETURN 函数值类型
        AS
        PLSQL子程序体
      • 调用:

        • 1.
          begin
          dbms_output.put_line(‘salary is:’ || queryEmpSalary(7934));
          end;

        • 2.
          declare
          v_sal number;
          begin
          v_sal:=queryEmpSalary(7934);
          dbms_output.put_line(‘salary is:’ || v_sal);
          end;
          /

    • 8.触发器

      • 概述:
        数据库触发器是一个与表相关联的,存储的PL/SQL程序。
        每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列
      • 类型:
        • 1.语句级触发器(针对表)
          *在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行
        • 2.行级触发器(FOR EACH ROW)(针对行)
          • 触发语句作用的每一条记录都被触发.在行级触发器中使用old和new伪记录变量,识别值的状态.
      • 语法:
        CREATE [or REPLACE] TRIGGER 触发器名
        {BEFORE | AFTER}
        {DELETE | INSERT | UPDATE [OF 列名]}
        ON 表名
        [FOR EACH ROW [WHEN(条件) ] ]
        PLSQL 块
      • 作用:
        • 1.数据确认 
        • 2.实施复杂的安全性检查
        • 3.做审计,跟踪表上所做的数据操作等
        • 4.数据的备份和同步
      • *
    • 注意:

      • 1.存储过程与存储函数的区别:
        • 存储过程没有返回值,存储函数有返回值.
        • 当只有一个返回值时,用存储函数,否则(无返回值/多个)就用存储过程.
      • 2.查看触发器,过程,函数
        • Select * from user_triggers;
        • Select * from user_source;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值