zoukankan      html  css  js  c++  java
  • Oracle 数据库应用

    1.表空间

      表空间是数据库逻辑结构的一个重要组件。表空间可以存放各种应用对象,如表、索引。而每个表空间有一个或多个数据文件组成。

    2.表空间的分类

    • 永久性表空间:一般保存表、视图、过程和索引等的数据。SYSTEM  SYSAUX  USERS  EXAMPLE  表空间是默认安装的
    • 临时性表空间:只用于保存系统中短期活动的数据,如排序数据等
    • 撤销表空间:用来帮助回退未提交的事务数据,已提交了的数据在这里是不可以恢复的。一般不需要建临时和撤销表空间,除非把它们转移到其他磁盘中以提高性能

    3.表空间目的

    • 对不同用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户数据的操作,对模式对象的管理
    • 可以将不同数据文件创建到不同的磁盘中,有利于管理磁盘空间,有利于提高I/O性能,有利于备份和恢复数据等

    4.对表空间的操作:

    /*创建表空间*/
    create tablespace wordtbs --表空间名称
    datafile 'E:T142WORDTBS01.dbf' --文件路径
    size 10M --表空间大小
    autoextend on next 10M --自动扩展10M

    /*查看当前用户下的表空间*/
    select * from dba_data_files;

    /*修改表空间大小*/
    alter database
    datafile 'E:T142WORDTBS01.dbf'
    resize 20M;


    /*向表空间内添加数据文件*/
    alter tablespace wordtbs
    add datafile
    'E:T142WORDTBS02.dbf'
    size 10M
    autoextend on;


    /*更改表空间为只读*/
    ALTER TABLESPACE wordtbs READ ONLY;

    /*删除表空间*/
    drop tablespace wordtbs including contents and datafiles;

    6.用户权限管理

    • Sys:是Oracle中的一个超级用户
    • System:是Oracle中默认的系统管理员,又有DBA权限
    • Scott:是Oracle数据库中的一个示范用户,一般在数据库安装时创建

    /*创建用户*/
    create user ab
    identified by 123456
    default tablespace wordtbs

    /*授予权限 连接/创建表*/
    grant connect,resource to A_oe;

    /*授予对表执行操作的权限*/
    grant all on scott.dept to ab;
    grant insert,select,update,delete on scott.emp to ab;

    /*回收权限*/
    revoke connect,resource from ab;

    revoke all on scott.emp from ab;

    /*
    ===========================================================
    | 创建A_oe用户
    ============================================================
    */
    CREATE USER A_oe IDENTIFIED BY bdqn
    DEFAULT TABLESPACE wordtbs
    TEMPORARY TABLESPACE temp
    QUOTA UNLIMITED ON wordtbs

    7.序列

      是用来生成唯一,连续的整数的数据库对象。常用来自动生成主键或唯一键的值。序列可以按升序排序,也可以按降序排序。

    序列的一系列操作:

    --创建表
    create table toys(
    toysid number(4) not null,
    toyname varchar(20)not null,
    toyprice number(3,0) not null
    );

    --创建序列:
    create sequence seql
    start with 10
    increment by 1
    maxvalue 2000
    nocycle
    cache 30;

    /*序列在创建成功后 必须先经过nextval初始化之后才可以使用currval*/
    select seql.nextval from dual;

    select seql.currval from dual;

    --修改序列的语法:
    alter sequence seql
    increment by 30
    maxvalue 300
    minvalue 10
    cycle
    cache 10;

    /*删除序列*/
    drop sequence seql

    /*插入数据*/
    insert into toys(toysid,toyname,toyprice)
    values (seql.nextval,'twenty',25);
    insert into toys (toysid,toyname,toyprice)
    values (seql.nextval,'magic pencil',75);
    insert into toys(toysid,toyname,toyprice)
    values (seql.nextval,'tom',65);

    /*查看toys表数据*/
    select * from toys;

    /*删除表*/
    delete from toys

    --使用GUID 生成唯一标识符 推荐在并行环境下使用
    select sys_guid() from dual;

    8.同义词

      在数据库中,同义词可以提供其他数据库对象的别名。

      用途:

      • 简化SQL语句
      • 隐藏对象的名称和所有者
      • 为分布式数据库的远程对象提供了位置透明性
      • 提供了对对象的公共访问

      分类:

      • 私有同义词:自能对当前模式的用户访问
      • 可被所有的数据库用户访问

    /*
    ===========================================================
    | 创建私有同义词
    ============================================================
    */
    CREATE OR REPLACE SYNONYM emp FOR employee;

    ----以A_oe用户登录
    SELECT * FROM emp;

    /*
    ===========================================================
    | 创建公有同义词
    ============================================================
    */
    CREATE PUBLIC SYNONYM public_emp FOR A_hr.employee;

    ---以aoe登录
    select * from public_emp


    /*
    ===========================================================
    | 删除同义词
    ============================================================
    */
    --删除私有同义词
    DROP SYNONYM emp;
    --删除公有同义词
    DROP PUBLIC SYNONYM public_emp;

     9.索引

      是与表关联的可选结构,是一种快速访问数据的途径,可提高数据库性能。

      作用:

      • 快速取数据;
      • 保证数据记录的唯一性;
      • 实现表与表之间的参照完整性;
      • 在使用ORDER by、group by子句进行数据检索时,利用索引可以减少排序和分组的时间

       优点:

      • 大大加快数据的检索速度;
      • 创建唯一性索引,保证数据库表中每一行数据的唯一性;
      • 加速表和表之间的连接;
      • 在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

      缺点:

      • 索引需要占物理空间。
      • 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

    /*B树索引*/
    create unique index index_empno on employee(empno);

    /*反向键索引*/
    create index index_reverse_empno on employee(empno) reverse;

    /*位图索引*/
    create bitmap index index_bit_job on employee(job);

    /*删除索引*/
    drop index index_bit_job;

    /*重建索引*/
    alter index index_reverse_empno rebuild noreverse;

    10.分区表

      Oracle 允许用户把一个表中的所有行分为几个部分,并将这些部分存储在不同位置。被分区的表称为分区表,分成的每个部分称为一个分区

    --范围分区
    partition by range(hiredate)
    (
    partition p1 values less than (to_date('1981-04-1','yyyy-mm-dd')),
    partition p2 values less than(maxvalue)
    );


    drop table employee

    select * from employee;
    --插入数据
    insert into employee select * from scott.emp;

    --查询所有分区
    select table_name,partition_name from user_tab_partitions
    where table_name=upper('employee');

    --查询分区表
    select * from employee partition(P2);
    --删除分区表

    alter table employee drop partition(P1);

    --创建间隔分区

    PARTITION BY RANGE(hiredate)
    INTERVAL(NUMTOYMINTERVAL(1,'YEAR'))
    ( PARTITION p1 VALUES LESS THAN (to_date('1981-04-01','yyyy-mm-dd')));

  • 相关阅读:
    学习笔记2
    带有循环的存储过程
    经典SQL语句大全
    关于职业的一些看法
    把dataTable表批量的写入数据库
    抽奖接口,每天只能抽奖3次,而且必须先登录才能抽奖的小程序
    调用获取学生信息的接口,保存到excel里面的小程序
    内置函数补充
    好用的模块
    网络编程
  • 原文地址:https://www.cnblogs.com/QQW-HH/p/7641274.html
Copyright © 2011-2022 走看看