zoukankan      html  css  js  c++  java
  • Oracle(修改表结构和约束)

    目标:

    1.添加和修改列

    2.添加,enabledisable,或者remove约束

    3.删除表

    4.删除表中所有数据并回到表定义的初始状态(截断表)

    5.修改对象的名字

    6.给对象添加注释,从数据字典中查看注释

    用到的命令:

    1.Alter table

    1.添加和修改列

    2.添加和删除约束

    3.enabledisable约束

    2.drop table命令移除表中所有行和表结构

    3.renametruncatecomment

    4.当执行以上DDL语句时,事务自动提交

    功能:

    1.增加列

       语法:

    alter table tb_name

    add column datatype [default val] constraint .....

    note:

    1.如果添加not null(primary key约束要求值也不能为null)约束,需要保证当前表中没有数据存在。

    2.新添加的列,相当于表定义中最后一个定义的列。

        例如:

    alter table test add name varchar2(10) default 'test' not null ;

    alter table s_stu add (sname varchar2(20),sage number);

    alter table husband add sage number constraint husband_sage_check check(sage<=100);

    2.删除列:

    语法:alter table tableName drop column column_name;

    例如:alter table test drop column name;

    3.修改列属性:(数据类型和约束)

    语法:ALTER TABLE table

      MODIFY (column datatype [DEFAULT expr][NOT NULL]

    [, column datatype]...);

    note

    修改列的规则:

    1.可以增加字段的宽度或者精度

    2.如果列的值为null或者表中没有数据,可以降低宽度和精度

    3.给当前列,后续添加的数据指定默认值。

    4.当且仅当当前列中没有null值时,可以定义当前列为not null.

    5.当前列中的值为null时,可以修改列的数据类型

    6.如果需要给某个字段添加not null约束,只能使用modify

    例如:

    alter table test modify id number constraint test_pk_id primary key;

    alter table test modify id char(20);

    4.增加约束

    语法:alter table tb_name add 约束的完整定义

    note

    1.只能增加能够使用表级约束的约束

    2.不能修改约束

    例如:

    alter table test add constraint test_pk_id primary key(id);

    alter table test add check(gender in ('F','M'));

    5.删除约束:

    语法:alter table tb_name drop 约束名。

    例如:

    alter table test drop constraint test_pk_id;

    删除组件约束时,同时删除和他依赖的外键约束

     alter table test drop constraint test_pk_id cascade;

    6.使一个约束失效:

        语法:alter table tb_name disable constraint constraint_name [cascade];

    note:添加cascade表明要让所有的依赖约束都失效。

    7.是一个约束生效:

        语法:alter table tb_name enable constraint constraint_name;

    note

    1.当启用uniqueprimary key约束时,会自动创建索引。

    例如:alter table test enable constraint test_id_pk;

    8.删除表:

       drop table tb_name [cascade constraint];

       note

    1.删除表中所有数据

    2.所有的索引被删除

    3.使用cascade constraint,级联删除所有的依赖完整性约束

       例如:

    drop table test cascade constraint;

    删除之后,可以通过:

    select column_name,constraint_name

    from user_cons_columns

    查看是否约束还在。

    9.重命名:rename

    重命名表:

    rename old_tb_name to new_tb_name;

    重命名列:

    alter table tb_name rename column old_col_name to new_col_name;

    note:

    1.重命名可以用来修改tableviewsequencesynonym

    2.只有是这个对象的拥有者,才能重命名。

    例如:

    rename emp to emp2;  将表名重n名为emp2

     alter table emp rename column id to eid;

    10.截断表:truncate

    语法:truncate table tb_name

    note:

    1.清空表记录

    2.释放当前表所占用的表空间。返回建表初始状态

    3.是一个DDL命令。

    4.一旦删除,事务不能回滚。

    例如:truncate table emp;

    deletetruncate的比较:

    delete:可以指定删除某些列,也可以清空表,但是不释放表空间,在事务没有提交之前可以回滚。

    truncate:只能清空表,释放表空间,不能回滚。

    11.给表加注释:comments

    语法:

    comment on table talbe_name is '注释内容'

    comment on column table_name.column_name is '注释内容';

    note:

    1.添加的注释可以在如下数据字典中查看

    ALL_COL_COMMENTS

    USER_COL_COMMENTS

    ALL_TAB_COMMENTS

    USER_TAB_COMMENTS

    例如:

    comment on table emp is '测试';

    comment on column emp.eid  is 'haha';

  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/yzqm666/p/5886894.html
Copyright © 2011-2022 走看看