• Oracle之主键的创建、添加、删除操作


    一、创建表的同时创建主键约束

        1.1、无命名

    复制代码
    SQL> create table jack (id int primary key not null,name varchar2(20));
     
    Table created
     
    SQL> select table_name,index_name from user_indexes where table_name='JACK';
     
    TABLE_NAME                     INDEX_NAME
    ------------------------------ ------------------------------
    JACK                           SYS_C0011100
    复制代码

        1.2、有命名

    复制代码
    SQL> create table jack (id int ,name varchar2(20),constraint ixd_id primary key(id));
     
    Table created
     
    SQL> select table_name,index_name from user_indexes where table_name='JACK';
     
    TABLE_NAME                     INDEX_NAME
    ------------------------------ ------------------------------
    JACK                           IXD_ID
    复制代码


    二、向表中添加主键约束

    复制代码
    SQL> create table jack as select * from dba_objects;
     
    Table created
     
    SQL> desc jack;
    Name           Type          Nullable Default Comments 
    -------------- ------------- -------- ------- -------- 
    OWNER          VARCHAR2(30)  Y                         
    OBJECT_NAME    VARCHAR2(128) Y                         
    SUBOBJECT_NAME VARCHAR2(30)  Y                         
    OBJECT_ID      NUMBER        Y                         
    DATA_OBJECT_ID NUMBER        Y                         
    OBJECT_TYPE    VARCHAR2(19)  Y                         
    CREATED        DATE          Y                         
    LAST_DDL_TIME  DATE          Y                         
    TIMESTAMP      VARCHAR2(19)  Y                         
    STATUS         VARCHAR2(7)   Y                         
    TEMPORARY      VARCHAR2(1)   Y                         
    GENERATED      VARCHAR2(1)   Y                         
    SECONDARY      VARCHAR2(1)   Y                         
    NAMESPACE      NUMBER        Y                         
    EDITION_NAME   VARCHAR2(30)  Y                         
     
    SQL> alter table jack add constraint pk_id primary key(object_id);
     
    Table altered
     
    SQL> select table_name,index_name from user_indexes where table_name='JACK';
     
    TABLE_NAME                     INDEX_NAME
    ------------------------------ ------------------------------
    JACK                           PK_ID
    复制代码

    ----另外当索引创建好以后再添加主键的效果:

    复制代码
    SQL> create table jack as select * from dba_objects;
     
    Table created
     
    SQL> create index ind_object_id on jack(object_id);
     
    Index created
     
    SQL> select table_name,index_name from user_indexes where table_name='JACK';
     
    TABLE_NAME                     INDEX_NAME
    ------------------------------ ------------------------------
    JACK                           IND_OBJECT_ID
     
    SQL> desc jack;
    Name           Type          Nullable Default Comments 
    -------------- ------------- -------- ------- -------- 
    OWNER          VARCHAR2(30)  Y                         
    OBJECT_NAME    VARCHAR2(128) Y                         
    SUBOBJECT_NAME VARCHAR2(30)  Y                         
    OBJECT_ID      NUMBER        Y                         
    DATA_OBJECT_ID NUMBER        Y                         
    OBJECT_TYPE    VARCHAR2(19)  Y                         
    CREATED        DATE          Y                         
    LAST_DDL_TIME  DATE          Y                         
    TIMESTAMP      VARCHAR2(19)  Y                         
    STATUS         VARCHAR2(7)   Y                         
    TEMPORARY      VARCHAR2(1)   Y                         
    GENERATED      VARCHAR2(1)   Y                         
    SECONDARY      VARCHAR2(1)   Y                         
    NAMESPACE      NUMBER        Y                         
    EDITION_NAME   VARCHAR2(30)  Y                         
     
    SQL> alter table jack add constraint pk_id primary key(object_id);
     
    Table altered
     
    SQL> desc jack;
    Name           Type          Nullable Default Comments 
    -------------- ------------- -------- ------- -------- 
    OWNER          VARCHAR2(30)  Y                         
    OBJECT_NAME    VARCHAR2(128) Y                         
    SUBOBJECT_NAME VARCHAR2(30)  Y                         
    OBJECT_ID      NUMBER                                  
    DATA_OBJECT_ID NUMBER        Y                         
    OBJECT_TYPE    VARCHAR2(19)  Y                         
    CREATED        DATE          Y                         
    LAST_DDL_TIME  DATE          Y                         
    TIMESTAMP      VARCHAR2(19)  Y                         
    STATUS         VARCHAR2(7)   Y                         
    TEMPORARY      VARCHAR2(1)   Y                         
    GENERATED      VARCHAR2(1)   Y                         
    SECONDARY      VARCHAR2(1)   Y                         
    NAMESPACE      NUMBER        Y                         
    EDITION_NAME   VARCHAR2(30)  Y                         
     
    SQL> select table_name,index_name from user_indexes where table_name='JACK';
     
    TABLE_NAME                     INDEX_NAME
    ------------------------------ ------------------------------
    JACK                           IND_OBJECT_ID
    复制代码

    三、修改主键约束

        3.1、禁用/启用主键

    复制代码
    SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
     
    TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
    ------------------------------ ------------------------------ ------------------------------ --------------- --------
    JACK                           PK_ID                          PK_ID                          P               ENABLED
     
    SQL> alter table jack disable primary key;
     
    Table altered
     
    SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
     
    TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
    ------------------------------ ------------------------------ ------------------------------ --------------- --------
     
    SQL> alter table jack enable primary key;
     
    Table altered
     
    SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
     
    TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
    ------------------------------ ------------------------------ ------------------------------ --------------- --------
    JACK                           PK_ID                          PK_ID                          P               ENABLED
    复制代码

        3.2、重命名主键

    复制代码
    SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
     
    TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
    ------------------------------ ------------------------------ ------------------------------ --------------- --------
    JACK                           PK_ID                          PK_ID                          P               ENABLED
     
    SQL> alter table jack rename constraint pk_id to pk_jack_id;
     
    Table altered
     
    SQL> select a.table_name,a.index_name,b.constraint_name,b.constraint_type,b.status from user_indexes a,user_constraints b where b.table_name='JACK'and a.table_name=b.table_name;
     
    TABLE_NAME                     INDEX_NAME                     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
    ------------------------------ ------------------------------ ------------------------------ --------------- --------
    JACK                           PK_ID                          PK_JACK_ID                     P               ENABLED
    复制代码

    四、删除表中已有的主键约束

        4.1、无命名

    复制代码
    ----先利用user_cons_columns表查得主键名:
    SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
     
    OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
    ------------------------------ ------------------------------ ------------------------------ ----------------
    JACK                           SYS_C0011105                   JACK                           ID
    SQL> select table_name,index_name from user_indexes where table_name='JACK';
     
    TABLE_NAME                     INDEX_NAME
    ------------------------------ ------------------------------
    JACK                           SYS_C0011105
    SQL> alter table jack drop constraint SYS_C0011105;
     
    Table altered
    复制代码

        4.2、有命名

    复制代码
    SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
     
    OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
    ------------------------------ ------------------------------ ------------------------------ ------------------------
    JACK                           IXD_ID                         JACK                           ID
     
    SQL> alter table jack drop constraint IXD_ID;
     
    Table altered
     
    SQL> select owner,constraint_name,table_name,column_name from user_cons_columns where table_name = 'JACK';
     
    OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
    ------------------------------ ------------------------------ ------------------------------ ------------------------
     
  • 相关阅读:
    Appium元素定位方式
    Selenium和Appium的关系
    再生龙备份恢复
    删除CentOS更新后的旧内核
    文字识别网站https://ocr.space/
    kubeasz部署高可用kubernetes1.17.2 并实现traefik2.1.2部署 亲测可用
    docker之Dockerfile实践用dockerfile构建nginx环境
    WordPress如何设置先登录再进入主页
    docker 容器使用 systemctl 命令是报错
    bilibili
  • 原文地址:https://www.cnblogs.com/jycjy/p/6952292.html
Copyright © 2020-2023  润新知