• [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View


    本系列链接导航:

    [独孤九剑]Oracle知识点梳理(一)表空间、用户

    [独孤九剑]Oracle知识点梳理(二)数据库的连接

    [独孤九剑]Oracle知识点梳理(三)导入、导出

    [独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL

    [独孤九剑]Oracle知识点梳理(五)数据库常用对象之Table、View

    [独孤九剑]Oracle知识点梳理(六)数据库常用对象之Procedure、function、Sequence

    [独孤九剑]Oracle知识点梳理(七)数据库常用对象之Cursor

    [独孤九剑]Oracle知识点梳理(八)常见Exception 

    [独孤九剑]Oracle知识点梳理(九)数据库常用对象之package

    [独孤九剑]Oracle知识点梳理(十)%type与%rowtype及常用函数

    5、数据库对象

      Oracle的常用字段类型有:

    • varchar2(128) 用于存储字符,
    • char(4)固定长度的字符串,不设置长度默认值为1,
    • number(p,s)数字型p是位数总长度,s是小树的长度,可存储负数,最长38位,不够位时会四舍五入
    • date 日期和时间类型
    • lob超长字符,最大可达4G
    • clob 超长文本字符串
    • blob超长二进制字符串
    • bfile超长二进制字符串,保存在数据库外的文件里是只读的

    5.1、table的操作

    5.1.1、创建表时可以给字段加上约束条件

    • 默认值,如date类型的 设置default sysdate,这样每次插入、修改时,不用程序操作这个字段,都能得到动作时间
    • 例如: 非空 NOT NULL
    • 不允许重复 UNIQUE
    • 关键字/主键 PRIMARY KEY
    • 按条件检查 CHECK (条件)
    • 外键 REFERENCES 表名(字段名)

    5.1.2、创建表:

     1 create table person
     2 (
     3   ID number primary key,
     4   name varchar2(32),
     5   gender char default 1
     6 )
     7 tablespace tablespaceName; --设置表空间,不加就默认为当前用户所在表空间
     8 
     9 comment on table person is '人员表'; --添加备注
    10 comment on column person.ID is '编号';
    11 comment on column person.name is '姓名';
    12 comment on column person.gender is '性别';

    5.1.3、修改表

    1 rename person to people; --修改表名
    2 alter table person rename column name to xingming; --修改列名
    3 alter table person add phonenumber varchar2(11);--添加列
    4 alter table person add birthday date default sysdate not null; --添加列,设置默认值,不可为空
    5 alter table person drop column phonenumber; --删除列
    6 alter table person modify name varchar2(64); --修改列长度
    7 alter table person modify gender char(2); --修改列精度
    8 alter table person modify gender varchar2(2); --修改列的数据类型
    9 alter table person modify gender default 2;--修改列的默认值

    5.1.4、约束操作

    • primary key
    alter table person add constraint pk_person_id parmary key(id);--将id列设置为主键
    • foregin key
    alter table person add constraint fk_person_gender foreign key(gender); --将gender列设置为外键
    • check
    alter table person add constraint ck_person_gender check (gender in (1,2));--检查gender列的值必须在1、2中
    • not null
    alter table person modify name constraint not_null_person_name not null;--name列不能为空
    • unique
    alter table person add constraint uq_emp_name unique(name); --设置name列唯一约束
    • default
    alter table person modify birthday date default sysdate; --设置birthday列的默认值
    • 约束的控制
    1 --禁用约束
    2 alter table person disable constraint uq_person_name;--禁用uq_person_name这个约束
    3 --启用约束
    4 alter table person enable constraint un_person_name;
    5 --延迟约束
    6 alter table person drop constraint fk_person_gender;
    7 alter table person add constraint fk_person_gender foreign key(gender)
         reference genderInfo(genderNo) deferrable initially deferred;

    5.1.5、清除、删除表

    1 truncate table person where id>10; --清除表person中的数据,不可恢复
    2 delete table person where id>10; --删除表person中的数据,可恢复
    3 drop table person; --删除表

    5.2、View的操作

      这里泛指普通视图view,Oracle还包含一种叫物化视图(materialized view)的视图。这里暂不涉及。
      视图分为简单视图( 基于单个基表,且不包含函数和数据分组操作 ) 和复杂视图( 基于多个基表或视图);简单视图可以通过视图修改数据. 这些修改包括插入数据. 更新数据和删除数据. 但是对于复杂视图来说, 通过视图修改数据必须满足一定的规则.

      在视图定义中没有设定READ ONLY 的前提下, 如果视图包含了下面的内容, 那么不能通过视图删除表中的数据:

    1. 分组函数, 如SUM,AVG,MIN,MAX 等 * GROUP BY 子句
    2. 包含了表达式 * ROWNUM 伪列

      [关于通过视图修改数据的操作这里不做介绍]

    5.2.1、创建view

    1 create or replace view v_person --创建或修改视图
    2 [columnName1,columnName2]    --设置列名,也可在select中设置别名
    3 as    -- 注1
    4 select a.f1,b.f2 from table1 a,table2 b where a.f0=b.f0;

    注1:关于Oracl的is和as,

      在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别,
      在视图(VIEW)中只能用AS不能用IS,
      在游标(CURSOR)中只能用IS不能用AS。

    5.2.2、union 和union all

      使用union关键字进行合并查询的时候,数据库引擎会自动过滤掉结果集中的重复记录。
      使用union all关键字进行合并查询的时候,数据库引擎就不会过滤结果集中的重复数据,因此在执行效率上将union all比union要高上很多。

    5.2.3、删除视图

    drop view v_person;
  • 相关阅读:
    20170822xlVBA ExportCellPhone
    【C/C++】C++ warning: control reaches end of non-void function return
    【C/C++】例题3-5 生成元/算法竞赛入门经典/数组与字符串
    对象类型的参数传递
    对象的创建和使用
    方法的重载
    构造方法
    方法
    修饰符
    类的一般形式
  • 原文地址:https://www.cnblogs.com/cloud915/p/4340681.html
Copyright © 2020-2023  润新知