微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle主键约束

一 作用
确保表当中每一行数据的唯一性
二 主键特点
非空 唯一
一张表中只能设计一个主键约束
主键约束可以由多个字段构成,这种情况被称为联合主键或复合主键
三 主键约束
1、在创建表时设置主键约束
CREATE TABLE tabl_name(
column_name datatype PRIMARY_KEY,...
)
  1. sql> create table userinfo_p
  2. 2(id number(6,0) primary key,
  3. 3 username varchar2(20),
  4. 4 userpwd varchar2(20));
  5. 表已创建。
  6. sql> desc userinfo_p
  7. 名称是否为空?类型
  8. -----------------------------------------------------------------------------
  9. ID NOT NULL NUMBER(6)
  10. USERNAME VARCHAR2(20)
  11. USERPWD VARCHAR2(20)
CONSTRAINT constraint_name
PRIMARY KEY(column_name1,...)
  1. sql> create table userinfo_p1(
  2. 2 id number(6,0),monospace; margin: 8px 0px;" class="language-sql">4 userpwd varchar2(20),
  3. 5 constraint pk_id_username primary key(id,username));
  4. 表已创建。
  5. sql> desc userinfo_p1;
  6. 名称是否为空?类型
  7. -----------------------------------------------------------------------------
  8. ID NOT NULL NUMBER(6)
  9. USERNAME NOT NULL VARCHAR2(20)
  10. USERPWD VARCHAR2(20)
  11. sql> desc user_constraints
  12. 名称是否为空?类型
  13. -----------------------------------------------------------------------------
  14. OWNER VARCHAR2(30)
  15. CONSTRAINT_NAME NOT NULL VARCHAR2(30)
  16. CONSTRAINT_TYPE VARCHAR2(1)
  17. TABLE_NAME NOT NULL VARCHAR2(30)
  18. SEARCH_CONDITION LONG
  19. R_OWNER VARCHAR2(30)
  20. R_CONSTRAINT_NAME VARCHAR2(30)
  21. DELETE_RULE VARCHAR2(9)
  22. STATUS VARCHAR2(8)
  23. DEFERRABLE VARCHAR2(14)
  24. DEFERRED VARCHAR2(9)
  25. VALIDATED VARCHAR2(13)
  26. GENERATED VARCHAR2(14)
  27. BAD VARCHAR2(3)
  28. RELY VARCHAR2(4)
  29. LAST_CHANGE DATE
  30. INDEX_OWNER VARCHAR2(30)
  31. INDEX_NAME VARCHAR2(30)
  32. INVALID VARCHAR2(7)
  33. VIEW_RELATED VARCHAR2(14)
  34. sql>select constraint_name from user_constraints where table_name='USERINFO_P1';
  35. CONSTRAINT_NAME
  36. ------------------------------
  37. PK_ID_USERNAME
  38. sql>select constraint_name from user_constraints where table_name='USERINFO_P';
  39. CONSTRAINT_NAME
  40. ------------------------------
  41. SYS_C0011056
2、在修改表时添加主键约束
ADD CONSTRAINT constraint_name
PRIMARY KEY(column_name1,...);
  1. sql> alter table userinfo
  2. 2 add constraint pk_id primary key(id);
  3. 表已更改。
  4. sql> desc user_constraints
  5. 名称是否为空?类型
  6. -----------------------------------------------------------------------------
  7. OWNER VARCHAR2(30)
  8. CONSTRAINT_NAME NOT NULL VARCHAR2(30)
  9. CONSTRAINT_TYPE VARCHAR2(1)
  10. TABLE_NAME NOT NULL VARCHAR2(30)
  11. SEARCH_CONDITION LONG
  12. R_OWNER VARCHAR2(30)
  13. R_CONSTRAINT_NAME VARCHAR2(30)
  14. DELETE_RULE VARCHAR2(9)
  15. STATUS VARCHAR2(8)
  16. DEFERRABLE VARCHAR2(14)
  17. DEFERRED VARCHAR2(9)
  18. VALIDATED VARCHAR2(13)
  19. GENERATED VARCHAR2(14)
  20. BAD VARCHAR2(3)
  21. RELY VARCHAR2(4)
  22. LAST_CHANGE DATE
  23. INDEX_OWNER VARCHAR2(30)
  24. INDEX_NAME VARCHAR2(30)
  25. INVALID VARCHAR2(7)
  26. VIEW_RELATED VARCHAR2(14)
  27. sql>select constraint_name from user_constraints where table_name='USERINFO';
  28. CONSTRAINT_NAME
  29. ------------------------------
  30. PK_ID
3、更改约束名称
RENAME CONSTRAINT old_name
TO new_name
  1. 2 rename constraint pk_id to new_pk_id;
  2. sql>select constraint_name from user_constraints where table_name='USERINFO';
  3. CONSTRAINT_NAME
  4. ------------------------------
  5. NEW_PK_ID
4、删除主键约束
disABLE|ENABLE CONSTRAINT constraint_name
  1. 2 disable constraint new_pk_id;
  2. sql>select constraint_name,status from user_constraints where table_name='USERINFO';
  3. CONSTRAINT_NAME STATUS
  4. --------------------------------------
  5. NEW_PK_ID disABLED
DROP CONSTRAINT constraint_name
  1. 2 drop constraint new_pk_id;
  2. 未选定行
DROP PRIMARY KEY[CASCARDE]
CASCARDE用于级联删除
  1. sql> desc userinfo_p
  2. USERNAME VARCHAR2(20)
  3. USERPWD VARCHAR2(20)
  4. sql> alter table userinfo_p
  5. 2 drop primary key;
  6. 表已更改。
  7. ID NUMBER(6)
  8. USERPWD VARCHAR2(20)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐