zoukankan      html  css  js  c++  java
  • oracle数据库(二)

    oracle数据库模式对象

    模式对象就是存储在用户模式下的数据库对象,Oracle数据库中的模式对象包括表、视图、索引、同义词、序列等,其中表用于存储用户数据,索引用于提高数据的检索效率,视图用于从一个或多个表中导出常用的数据,序列用于自动生成列值,同义词为对象定义别名。

    本文重点:

    1.表和表的完整性约束

    2.了解索引

    3.掌握视图的使用

    4.了解序列

    5.了解同义词

    一.表和表的完整性约束

    1)创建表

    create table person (

    id number(4),

    name varchar2(8),

    sex char(2),

    birthday date

    )tablespace myspace;

    2)管理表中的列

    分别为增加、删除、修改列

    alter table person add email varchar2(20);

    alter table person drop email;

    alter table person rename brithday to age;修改列名。

    alter table person modify age number(4);修改列数据类型。

    3).使用unused关键字

    列设置为unused后,变为不可用状态,但数据仍然保存在数据库中,形式上相当于被删除了。

    alter table person set unused (age);

    4).表的完整性约束

    为了对用户输入的数据进行检验,我们对表中的列进行了约束,完整性约束有NOT NULL、UNIQUE、PRIMARY KEY、FOREGIN KEY、CHECK约束。

    NOT NULL非空约束:alter table person modify id not null;

    删除非空约束:alter table person modify id null;

    UNIQUE约束:alter table person add unique (name);UNIQUE约束允许存在多个NULL值。

    删除UNIQUE约束:alter table person drop constraint constraint_name;

    constraint_name代表约束名字,如果我们添加UNIQUE约束是这样的alter table person add constraint hello unique(name);,那么我们删除UNIQUE约束就有约束名了,如果没有添加约束名,我们可以用数据字典user_cons_columns和user_constraints来查看约束名称。

    PRIMARY KEY主键约束:alter table person add constraint kkk primary key(id);我们设置id为主键并为约束起名kkk。

    删除PRIMARY KEY:alter table person drop constraint kkk;

    CHECK约束:alter table person add constraint o check (sex in ('男','女'));

    FOREGIN KRY约束:有两种添加外键方式

    1.alter table table_name1 add constraint constraint_name foregin key (column_name1) references table_name2(column_name2);

    2.creat table book(

     bid number(4) primary key,

    bname varchar2(20) not null,

    tid number(4),

    constraint book_type foregin key (tid) references type (tid)

    );

    注意:我们使用外键约束,可以定义级联操作CASCADE、SET NULL、NO ACTION。默认NOT ACTION,当删除主表时,如果字表外键值包括主键值,则禁止此操作。

    CASCADE代表删除主表被引用的列数据,级联删除字表对应的行。SET NULL代表删除主表被引用的列时,字表对应的列值设置为NULL.

    5)约束的状态

    约束状态有四种禁用和激活、验证和不验证。

    ENABLE VALIDATE:对以后插入的数据进行约束检查,并对表中已经存在的数据进行约束检查。默认此状态。

    ENABLE NOVALIDATE:对以后插入或更新的数据进行约束检查,对表中已经存在的数据不进行约束检查。

    DISABLE VALIDATE:禁止添加更新数据:

    DISABLE VALIDATE:对以后插入和更新数据和已经在表中的数据都不进行约束检查。

    二.索引

    索引是数据库中用于存放表中每一条记录的位置对象,主要目的是为了加快数据的读取速度和完整性检查。但是索引会占用许多存储空间,删除和更新索引会增加数据库的开销。

    首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。

    添加索引的话,首先去索引列表中查询,而我们的索引列表是B类树的数据结构,查询的时间复杂度为O(log2N),定位到特定值得行就会非常快,所以其查询速度就会非常快。

    索引类型:B数索引、基于函数的索引、位图索引。

    创建索引:create index index_name on person (name);

    三.视图

    视图不占存储空间,也不存储任何实际数据,它的数据来自它的子查询中的引用的表,只是在数据字典中定义它的信息。

    创建视图:create view view_name as select empno,ename,job,sal,depton from emp where sal >1000;

    查询视图:select * from view_name;

    对视图进行DML操作(增加、删除、修改),首先视图只支持没有进行过函数和数学运算的列进行操作。

    insert into view_name(empon,ename,job,deptno) values(6000,'xiaoming','ss',20);

    使用with check option子句,可以限定对视图进行DML操作必须符合子查询条件。

    使用with read only子句限制只能对视图进行读操作,不能进行写操作,因为视图结构和基表结构息息相关。

    删除视图:drop view view_name;

    四.序列

    序列的和试图一样不占内存空间,可以为主键提供唯一值,有序值。

    创建序列:

    create sequence sequence_name 

    start with 1

    increment by 1

    nocache

    nocycle

    order;

    使用序列:两个伪列Currval和nextval。

    我们创建一个表student

    create table student(

    id number(20)primary key ,

    name varchar2(20) not null

    );

    向表中添加值,使用前面创建的序列sequence_name,为id自动赋值。

    insert into student(id,name)values(sequence_name,'xiaoming');

    insert into student(id,name)values(sequence_name,'xiaowang');

    这样id就会自动赋值为1,2。

    五.同义词

    创建同义词,起别名。

    create public synonsy_name  for schema_object; 

  • 相关阅读:
    SOFT-NMS (二) (non maximum suppression,非极大值抑制)
    NMS(non maximum suppression,非极大值抑制)
    读取txt文件的数据,并将其转换为矩阵
    x.append()增加不同维度的区别
    in __init__ self._traceback = tf_stack.extract_stack()的一个原因
    LoadRunner系列之—-03 用Java Vuser协议编写接口测试脚本
    WebLogic篇----02 控制台性能监控
    soapUI系列之—-01 介绍soapUI简介,groovy 简介
    oracle获取字符串长度函数length()和lengthb()
    soapUI系列之—-06 testrunner实现自动化测试
  • 原文地址:https://www.cnblogs.com/zzuli/p/9443958.html
Copyright © 2011-2022 走看看