初学oracle--数据完整性的语法实现

一、域完整性

1、check约束
①在创建表时创建约束

CREATE TABLE <表名>
(   <列名> <数据类型> [DEFAULT <默认值>] [NOT NULL | NULL]
        [CONSTRAINT <CHECK约束名>] CHECK(<CHECK约束表达式>)     /*定义为列的约束*/
    [,…n]
    [CONSTRAINT <CHECK约束名>] CHECK(<CHECK约束表达式>)         /*定义为表的约束*/
)
--eg
CREATE TABLE KCB2
(   
    课程号      char(3)        NOT NULL,
    课程名      char(16)       NOT NULL,
    开课学期    number(1)   NULL,
    学时        number(2)     NULL, 
    学分        number(1) CHECK (学分>0 AND 学分<=10) NOT NULL
                            /*定义为列的约束*/
);

②在修改表时创建约束

ALTER TABLE <表名> ADD( CONSTRAINT <CHECK约束名> CHECK(<CHECK约束表达式>))
--eg
--通过修改XSCJ数据库的books表,增加trade_price(批发价)**字段**的CHECK约束。
ALTER TABLE books ADD(CONSTRAINT ch_price CHECK(trade_price<=300));

③删除约束

ALTER TABLE <表名> DROP CONSTRAINT <CHECK约束名>
--eg
--删除XSCJ数据库中books表批发价**字段**的CHECK约束。
ALTER TABLE books DROP CONSTRAINT ch_price;

二、实体完整性

1、主键及唯一约束
①创建表时创建约束

CREATE TABLE <表名>                           /*指定表名*/
    (<列名> <数据类型> [NULL |NOT NULL]           /*定义字段*/
        {[CONSTRAINT <约束名>]             /*定义约束名*/
          PRIMARY KEY | UNIQUE}                 /*定义约束类型*/
        [,…n]
    [, [CONSTRAINT <约束名>] {PRIMARY KEY | UNIQUE}(<列名>,[,…n]) ]  
]
)
--eg
CREATE TABLE XSB2
(
    学号     char(6)      NOT NULL CONSTRAINT PK_XH PRIMARY KEY,--按照语法PK_XH是约束名
    姓名     char(8)      NOT NULL,
    身份证号 char(20)     NOT NULL CONSTRAINT UN_ID UNIQUE,
    性别     char(2)      DEFAULT '1' NOT NULL,
    出生时间 date         NOT NULL,
    专业     char(12)     NULL,
    总学分 number(2)     NULL
);

②通过修改表来创建约束

ALTER TABLE <表名> ADD([CONSTRAINT <约束名>] {PRIMARY KEY | UNIQUE} (<列名>[,…n])
--eg
ALTER TABLE XSB3 ADD(PRIMARY KEY(学号));

③删除约束

ALTER TABLE <表名> DROP CONSTRAINT <约束名>[,…n];
--eg
ALTER TABLE XSB3 DROP CONSTRAINT UN_XS;

三、参照完整性

1、表间参照关系
①创建表的同时定义外键约束

CREATE TABLE <从表名>
(    <列定义> [ CONSTRAINT <约束名> ] REFERENCES <主表名>[ ( <列名> [ ,...n ] ) ]
      [,…n]
     [ [ CONSTRAINT <约束名> ] [ FOREIGN KEY ( <列名> [,...n ] ) [<参照表达式>]]
);
--其中:
--<参照表达式>::=
     REFERENCES <主表名>[ ( <列名> [ ,...n ] ) ] 
     [ ON DELETE { CASCADE | SET NULL } ]
--eg
CREATE TABLE stu
(
     学号     char(6)     NOT NULL REFERENCES XSB (学号),
     姓名     char(8)     NOT NULL
);
--eg
CREATE TABLE point
(
     学号     char(6)         NOT NULL,
     课程号    char(3)         NOT NULL,
     成绩     number(2)       NULL,
     CONSTRAINT FK_point FOREIGN KEY (学号,课程号) REFERENCES CJB (学号,课程号) ON DELETE CASCADE
);

②通过修改表定义外键约束

ALTER TABLE <表名>
    ADD CONSTRAINT <约束名>
        FOREIGN KEY( <列名>[,…n])
        REFERENCES <主表名>(<列名>[,…n]) <参照表达式>

③删除表间参照关系(同上约束删除语法)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值