《01. oralce 对象管理--表》

来源:互联网 发布:node.js 安装教程 编辑:程序博客网 时间:2024/06/06 00:17

    Oracle 中对数据库对象的操作称为DDL 语句, 数据库对象包括 数据表,约束,视图,索引,序列等。对数据库对象的操作基本满足以下语法:

    1)创建:  create  对象

    2)删除: drop  对象

    3)修改: alter 对象


一  Oracle 中常用的数据类型

CHAR(N)固定字符串varchar2(n)可变字符串number(n)数字型: 最多位n为的整数,有时可用int代替number(n,m)浮点型,n-m为整数位,m为小数位,有时用float 代替date日期型,存储时间clob文本,存储海量文字(4G),只能存文本内容blob二进制数据,例如:电影,MP3,图片,用的较少

二  创建表

    1) 语法: 非空约束和默认值仅跟字段后面,主键约束,外键约束,唯一约束,检查约束,使用constraint 定义。这样的话,在插入或更新出现异常时,提示信息会比较明确。

此外,建议数据库关键字用小写,表名,字段名用大写。(pl sql 客户端就是这样的原则)

create table 表名称 (字段类型[default 默认值][not null],字段类型[default 默认值][not null],...constraint ...  //约束...);

    2)示例:

create table STUDENT(SID number(18),NAMEvarchar2(50),SEXchar(1) default 'M',AGEnumber(3) not null ,CONTENTclob,constraint PK_STUDENT_SID  primary key(SID),constraint UK_STUDENT_NAME unique(NAME),constraint CK_STUDENT_AGE  check(AGE between 0 and 250));
    3)测试:

          1. insert into STUDENT(sid,name) values(1,'zong');    //异常:ORA-01400: 无法将 NULL 插入 ("SCOTT"."STUDENT"."AGE")

          2. insert into STUDENT(sid,name,age) values(1,'zong',300); //异常: ORA-02290: 违反检查约束条件 (SCOTT.CK_STUDENT_AGE)

          3. insert into STUDENT(sid,name,age) values(1,'zong',20);

              insert into STUDENT(sid,name,age) values(2,'zong',20);    //异常: ORA-00001: 违反唯一约束条件 (SCOTT.UK_STUDENT_NAME)

          4. insert into STUDENT(sid,name,age) values(1,'zhang',20);  //异常: ORA-00001: 违反唯一约束条件 (SCOTT.PK_STUDENT_SID)


三 复制表

    复制表功能,仅 oracle 支持,其它数据库不一定支持。

    1. 语法:   create table  表名称 as 查询语句。

       

    2. 示例: 

        2.1 复制表结构和数据:   create table STUDENT_1 as  select * from STUDENT;

              

        2.2  仅复制表结构:  create table STUDENT_2 as select * from STUDENT where 1=2;

              


四  删除表

    1. 方式一:  drop  table  表名称;      //此种删除,表会进入回收站,可通过回收站回滚

       

    2. 方式二: drop table 表名称 purger;   //此种删除方式,表不会进入回收站,不能通过回收站进行回滚

       


五 恢复表

    oracle 10g 之后新增了回收站的功能,对删除的表可以进行闪回。

    1. 查询回收站:  show  recyclebin;

       

    2. 恢复表:  flashback  table  表名称 to before drop;

       

    3. 删除回收站:  purge  table  表名称;

      

    4. 清空回收站:  purger recyclebin;

      


六 重命名

        rename 旧表名 To 新表名 ;    // oracle 特有

        

        

七 截断表

    使用delete 清空数据表的时候,清空之后不会立即释放资源,需要执行commit 提交事务才能生效。 而使用Truncate 方式清空表,无需提交事务,立即生效。

   


八 同义词

    oracle 中不同的用户操作其它用户的表时,需要使用  用户名.表名  的方式, 设置同义词之后,即可直接使用表名访问。 同义词的设置方式如下:

    1)create synonym 同义词名称 for 用户名.表名称

    2)create public synonym 同义词名称 for 用户名.表名称

    3)删除同义词: drop synonym 同义词名称


九 修改表结构

    在创建数据表的时候,要谨慎。应设计合理的数据类型,字段约束等,应尽量避免日后有修改数据库表结构的场景。目前世界上性能最快的数据库是IBM 的DB2, DB2 就不支持数据表结构的修改。

    1) 查看表结构: desc  表名称;

          

    2) 新增字段: alter table 表名称  add  字段名称   字段类型  [default  默认值]   [not null];

          

    3)删除字段:alter table 表名称  delete 字段名称;

         

    4)重命名字段: alter table 表名称  rename column 旧字段名称  新字段名称;

       

    4)修改字段:  alter table 表名称  modify 字段名称  字段类型 [default 默认值 ] [not null];

        

    对于表结构字段的修改,对字段类型,非空约束,默认值的修改可使用allter xxx modify 来修改,对于自定义名称的主键约束,外键约束等,需要使用约束的修改方式修改。此种修改并不能对所有的数据类型修改都生效,比如varchar2 转换成clob 就会报错。

       

    此种修改,需要进行一下四步:  1. 新增临字段   2. 临时字段赋值   3. 删除临时字段  4. 重命名临时字段

    

1 0
原创粉丝点击