`
cakin24
  • 浏览: 1406565 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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),
  3. 3 username varchar2(20),
  4. 4 userpwd varchar2(20),
  5. 5 constraint pk_id_username primary key(id,username));
  6. 表已创建。
  7. SQL> desc userinfo_p1;
  8. 名称是否为空?类型
  9. -----------------------------------------------------------------------------
  10. ID NOT NULL NUMBER(6)
  11. USERNAME NOT NULL VARCHAR2(20)
  12. USERPWD VARCHAR2(20)
  13. SQL> desc user_constraints
  14. 名称是否为空?类型
  15. -----------------------------------------------------------------------------
  16. OWNER VARCHAR2(30)
  17. CONSTRAINT_NAME NOT NULL VARCHAR2(30)
  18. CONSTRAINT_TYPE VARCHAR2(1)
  19. TABLE_NAME NOT NULL VARCHAR2(30)
  20. SEARCH_CONDITION LONG
  21. R_OWNER VARCHAR2(30)
  22. R_CONSTRAINT_NAME VARCHAR2(30)
  23. DELETE_RULE VARCHAR2(9)
  24. STATUS VARCHAR2(8)
  25. DEFERRABLE VARCHAR2(14)
  26. DEFERRED VARCHAR2(9)
  27. VALIDATED VARCHAR2(13)
  28. GENERATED VARCHAR2(14)
  29. BAD VARCHAR2(3)
  30. RELY VARCHAR2(4)
  31. LAST_CHANGE DATE
  32. INDEX_OWNER VARCHAR2(30)
  33. INDEX_NAME VARCHAR2(30)
  34. INVALID VARCHAR2(7)
  35. VIEW_RELATED VARCHAR2(14)
  36. SQL>select constraint_name from user_constraints where table_name='USERINFO_P1';
  37. CONSTRAINT_NAME
  38. ------------------------------
  39. PK_ID_USERNAME
  40. SQL>select constraint_name from user_constraints where table_name='USERINFO_P';
  41. CONSTRAINT_NAME
  42. ------------------------------
  43. 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. SQL> alter table userinfo
  2. 2 rename constraint pk_id to new_pk_id;
  3. 表已更改。
  4. SQL>select constraint_name from user_constraints where table_name='USERINFO';
  5. CONSTRAINT_NAME
  6. ------------------------------
  7. NEW_PK_ID
4、删除主键约束
DISABLE|ENABLE CONSTRAINT constraint_name
  1. SQL> alter table userinfo
  2. 2 disable constraint new_pk_id;
  3. 表已更改。
  4. SQL>select constraint_name,status from user_constraints where table_name='USERINFO';
  5. CONSTRAINT_NAME STATUS
  6. --------------------------------------
  7. NEW_PK_ID DISABLED
DROP CONSTRAINT constraint_name
  1. SQL> alter table userinfo
  2. 2 drop constraint new_pk_id;
  3. 表已更改。
  4. SQL>select constraint_name,status from user_constraints where table_name='USERINFO';
  5. 未选定行
DROP PRIMARY KEY[CASCARDE]
CASCARDE用于级联删除。
  1. SQL> desc userinfo_p
  2. 名称是否为空?类型
  3. -----------------------------------------------------------------------------
  4. ID NOT NULL NUMBER(6)
  5. USERNAME VARCHAR2(20)
  6. USERPWD VARCHAR2(20)
  7. SQL> alter table userinfo_p
  8. 2 drop primary key;
  9. 表已更改。
  10. SQL> desc userinfo_p
  11. 名称是否为空?类型
  12. -----------------------------------------------------------------------------
  13. ID NUMBER(6)
  14. USERNAME VARCHAR2(20)
  15. USERPWD VARCHAR2(20)
1
0
分享到:
评论

相关推荐

    Oracle中两个主要的用户、三个重要权限的区别和联系

    ### Oracle中两个主要的用户、三个重要权限的区别和联系 #### 一、Oracle中的两个主要用户:SYS与SYSTEM 在Oracle数据库系统中,SYS与SYSTEM是两个非常重要的内置用户,它们各自拥有不同的权限和功能。 - **SYS...

    Oracle 约束错误约束错误

    常见的约束类型包括主键约束、外键约束、唯一性约束和检查约束等。在 Oracle 中,可以使用 ALTER TABLE 语句来创建、修改或删除约束。 在本文中,我们将讨论 Oracle 中的约束错误,特别是 ORA-02292 错误,该错误...

    Oracle所有约束基本语法

    创建新表时,可以将主键约束直接添加到字段定义中,如`Create table UserInfo(UserID varchar2(20) Primary Key, ...)`。或者,也可以在表创建后通过`Alter table`语句添加,例如`Alter table UserInfo add ...

    oracle删除主键查看主键约束及创建联合主键

    本篇文章将详细讲解如何在Oracle中删除主键、查看主键约束,以及创建联合主键。 1. 删除主键 在Oracle中,删除主键约束有几种方法。首先,你可以尝试使用`ALTER TABLE`语句删除主键,语法如下: ```sql ALTER ...

    Oracle的约束【Constraint】

    5. **FOREIGN KEY约束**:用于建立表之间的引用关系,确保子表中的外键值在父表的主键或唯一键中存在。 ##### 延迟约束检查 除了上述基本约束,Oracle还支持**延迟约束检查**,允许在事务提交后检查约束,这对于...

    oracle批量添加主键

    在添加主键约束时,Oracle会检查主键列是否存在重复值。如果存在,将会抛出错误。为了避免这个问题,可以先进行重复数据的检查: ```sql SELECT * FROM jk_upczyd_max WHERE Id IN ( SELECT Id FROM jk_upczyd_max...

    oracle 创建id主键序列 脚本

    创建表时,我们可以将序列与主键约束关联,使得每次插入新行时自动获取序列的下一个值: ```sql CREATE TABLE table_name ( id NUMBER PRIMARY KEY DEFAULT seq_id.NEXTVAL, column2 VARCHAR2(50), column3 ...

    oracle基本约束语法

    1. 主键约束(Primary Key): 主键是用于唯一标识表中每一行的一组列,不允许有重复值,且不能为空。创建主键约束有两种方式: - 在创建表时指定:`CREATE TABLE 表名 (字段1 类型 PRIMARY KEY, 字段2 类型, ...)...

    oracle 主键自增相关命令

    以下是对创建和使用Oracle主键自增的相关知识点的详细说明: 1. **创建表并定义主键**: 当我们创建表时,可以指定某列为主键。例如,创建名为`book`的表,`id`列为整数类型的主键: ```sql CREATE TABLE book ...

    Oracle字段约束.docx

    本文将深入探讨Oracle字段约束的五种主要类型:主键约束、唯一性约束、非空约束、检查约束以及外键约束。 首先,主键约束(PRIMARY KEY)是表的核心组成部分,它定义了一个或一组列,其值必须唯一且不能为NULL。...

    oracle主键和外键[文].pdf

    主键约束保证了主表中的唯一性,而外键约束则维护了子表与主表之间的关联,`ON DELETE CASCADE` 规则使得删除操作能自动更新相关联的子表。在实际数据库设计中,要充分考虑这些约束的设置,以确保数据的完整性和业务...

    oracle约束和索引笔记

    - **主键约束(PRIMARY KEY)**: 主键是一个或多个字段的组合,它们共同定义表中的唯一记录。主键约束同时包含了非空和唯一约束,不允许有重复或NULL值。 - **外键约束(FOREIGN KEY)**: 外键约束用于建立表之间的...

    oracle创建表空间、表、主键、外键、序列

    ALTER TABLE 表名 ADD CONSTRAINT 主键约束名 PRIMARY KEY (列名); ``` 4. 外键: 外键用于在两个表之间建立关系,确保引用完整性。创建外键的语法如下: ```sql ALTER TABLE 参照表 ADD CONSTRAINT 外键约束名 ...

    数据库,索引,主键,约束,sql

    这些规则可以是实体完整性(如主键约束),确保数据不为空;参照完整性(如外键约束),保证引用的外键值存在于被引用表的主键中;或者用户自定义完整性,如检查约束,确保数据符合特定条件。约束帮助防止错误数据的...

    08 oracle的 约束 ppt

    主键约束用于唯一标识表中的每一行记录,一个表只能有一个主键,并且该主键不能包含NULL值。例如,在员工信息表中,可以将员工ID设置为主键,因为每个员工都有一个唯一的ID号。主键不仅可以确保数据的唯一性,还可以...

    oracle约束

    详细介绍了oracle的常见约束,表级约束(主键),列级约束,唯一性约束,外键约束,并介绍了如何给相应的约束命名

    oracle约束键解析.docx

    本文将详细介绍四种主要的约束类型:主键约束(Primary Key)、唯一约束(Unique)、外键约束(Foreign Key)和检查约束(Check),以及它们在Oracle数据库中的应用。 首先,数据库约束是数据库模式设计中的重要...

    如何在oracle中查询所有用户表的表名、主键名称、索引、外键等

    通过设置 `constraint_type = 'P'` 来筛选出主键约束。`constraint_name` 在两个表中被用作关联字段,从而能够获取到准确的主键信息。 ### 3. 查询所有用户表的唯一性约束 #### SQL 语句: ```sql SELECT column_...

    Oracle定义约束 外键约束

    ### Oracle定义约束:外键约束详解 #### 一、引言 在数据库设计与管理过程中,维护数据的一致性和完整性是非常重要的。Oracle数据库系统提供了一系列的机制来帮助开发者和管理员达到这一目标,其中最重要的机制之一...

Global site tag (gtag.js) - Google Analytics