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

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
------------------------------ ------------------------------ ------------------------------ ------------------------

Oracle之主键的创建、添加、删除操作的更多相关文章

  1. Oracle通过主键id删除记录很慢

    问题描述: Oracle通过主键id删除2000条记录很慢,需要花费十二分钟. 解决过程: 1.首先查看SQL的执行计划,执行计划正常,cost只有4,用到了主键索引. 2.查看等待事件, selec ...

  2. Oracle中主键、外键、索引、序列、唯一性约束的创建

    1.主键的创建 方法一:直接在sql语句中声明字段主键约束 create table table_name (id type[length] constraint pk_name primary ke ...

  3. Oracle删除主键约束的同时删除索引

    继续昨天的折腾(Oracle修改主键约束),删掉主键约束后,发现唯一索引并未删掉.仔细看了下,主键约束跟唯一索引名称不一样,这说明是先创建了唯一索引,后创建的主键约束.我们来试验下: SQL> ...

  4. ORACLE中主键约束跟唯一索引的区别

    分类: DB 2011-12-03 21:34 611人阅读 评论(0) 收藏 举报 oracleconstraintsimmutableusertabledomain 1.  分别用两种方法创建主键 ...

  5. Python--MySql(主键的创建方式、存储引擎、存储过程、索引、pymsql)

    主键的创建方式 1. create table stud( id int not null unique, name ) ); mysql> desc stud; +-------+------ ...

  6. MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键

    MyBatis自动获取主键,MyBatis使用Oracle返回主键,Oracle获取主键 >>>>>>>>>>>>>> ...

  7. oracle中主键自增

    oracle中主键自增 下面用一个例子来说明自增主键的创建: 1.建用户数据表 drop table dectuser; create table dectuser( userid integer p ...

  8. Oracle 设置主键自增长__Oracle

    转自:https://yq.aliyun.com/ziliao/258074 如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现.不过对于这个数据库的 ...

  9. dir(dict)|字典的创建-添加-删除-修改-判断存在-取值等相关操作

    dir(dict) ####字典操作:创建-添加-删除-修改-判断存在-取值 #(一)创建字典: {} .等号. zip(). [(),()] #1.创建空字典 dict0 = {} #2.等号创建 ...

随机推荐

  1. Android设计模式源码解析之外观模式(Facade)

    https://github.com/simple-android-framework/android_design_patterns_analysis/tree/master/facade/elsd ...

  2. VC++ 修改资源页面语言

    选中 资源文件,在“属性”页面中更改 “language”选项: 资源视图中: 属性 页面中:

  3. Java学习——Java运算符

    位运算符 A = 0011 1100 B = 0000 1101 ----------------- A&b = 0000 1100 A | B = 0011 1101 A ^ B = 001 ...

  4. Silverlight以列表显示数据库数据_DataGrid

    效果图:      前台代码: 里面有一部分是我测试统计图的代码,不想改,感觉应该不影响理解.... <UserControl x:Class="Task_One.MainPage&q ...

  5. thttpd增加gzip压缩响应报文体功能,以减少传输数据量

    thttpd thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他web server(如Apache, Z ...

  6. 查找文件并执行的shell命令

    来由 经常我们需要找到某类文件, 并对进行处理. 例如找到.svn文件夹, 然后删除掉. 如果不使用shell,你可以选择手动删除, 前提是没有几个此类文件, 但是svn信息文件很多, 不能采用手动删 ...

  7. 自动档车的P档和N档的区别

    P档时,驻车齿轮在变速箱内被部分锁死,所以此时平地上不踩刹车,车辆有一定的驻车效果.N档就是空档,发动机与传动轴在变速器位置彻底分离,没有连接.因此P档适合停车和驻车,就是到地方了,要熄火时挂P档,拉 ...

  8. java jps命令

    jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写.非常简单实用. 命令格式:jps [option ...

  9. TIJ——Chapter Two:Everything Is an Object

    If we spoke a different language, we would perceive a somewhat different world. Ludwig Wittgenstein( ...

  10. Topcoder SRM 598 div2

    e,不知道为啥进不去了,这个B题贪心,从最小和最大的匹配如果超过了就只去最大的! 然后就没了- -! 这场比赛时不知为啥,string出问题了,可能是编译器挂了!0蛋- -!