Oracle主键约束

前端之家收集整理的这篇文章主要介绍了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)
原文链接:https://www.f2er.com/oracle/208183.html

猜你在找的Oracle相关文章