02主键

主键是表中列的唯一标识表中的行的一列或多列的组合。


以下是设置列成为主键的规则:
主键列不能包含NULL值或空字符串。
主键值在整个表中必须是唯一的。
主键值不应随时间而改变。

1.内联约束:

CREATE TABLE purchase_orders (

po_nr NUMBER PRIMARY KEY,
    vendor_id NUMBER NOT NULL,
    po_status NUMBER(1,0) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE NOT NULL
);

 

2.表约束:
CREATE TABLE purchase_orders (
    po_nr NUMBER,
    vendor_id NUMBER NOT NULL,
    po_status NUMBER(1,0) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE NOT NULL,
    CONSTRAINT pk_purchase_orders PRIMARY KEY(po_nr)---上面语句中明确地给PRIMARY KEY主键约束分配了一个名称:pk_purchase_orders。
);
 
 
3、列级主键约束与表级主键约束的区别 :
在列定义同时定义的约束称为列级完整性约束定义,作为表的独立的一项定义的完整性约束称为表级完整性约束。在列级完整性约束定义处可以定义如下约束:
一、NOT NULL:限制列取非空值
二、DEFAULT:指定列的默认值,使用形式为:DEFAULT 常量
三、UNIQUE:限制列取值不重
四、CHECK:限制列的取值范围,使用形式为:CHECK(约束表达式)
五、PRIMARY KEY:指定本列为主码
六、FOREIGN KEY:定义本列为引用其他表的外码。使用形式为:
【FOREIGN KEY(<列名>)】REFERENCES<外表名>(<外表列名>)
在上述约束中,除了NOT NULL和DEFAULT不能在表级完整性约束处定义之外,其他约束均可在表级完整性约束处定义。但有几点需要主义:第一,如果CHECK约束是定义多列之间的取值约束,则只能在表级完整性约束处定义;第二,如果表的主码由多个列(超过1列)组成,则这样的主码也只能在表级完整性约束处定义,并注意将主码列用括号括起来,即PRIMARY KEY(列1{【,列2】...});第三,如果在表级完整性约束处定义外码,则FOREIGN KEY 和<列名>均不能省略。
 

4.将主键添加到表中

有时,您可能需要将主键约束添加到一个存在的表。要做到这一点,只需要使用ALTER TABLE语句,如下所示:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name 
PRIMARY KEY (column1, column2, ...);
​

 

5.删除Oracle PRIMARY KEY约束 一般很少会从表中删除PRIMARY KEY约束。 如果必须要删除主键,则使用以下ALTER TABLE语句。

ALTER TABLE table_name DROP CONSTRAINT primary_key_constraint_name;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值