zoukankan      html  css  js  c++  java
  • oracle 的数据完整性

      oracle 的数据完整性

    not null(非空)

    unique(唯一)

      当定义了唯一主键约束后,该列值是不能重复的,但是可以为null

    例:

       create table user1(id number primary key,address  nvarchar2(50)  not null,email nvarchar2(30) unique);

    primary key(主键)

    foreign key(外键)

    check

       用于强制行数据必须满足条件,假定在sal列上定义了check约束,并要求sal列值

       在1000~2000之间,如果不在1000~2000之间就会提示出错

    例:

     create table user2(id number primary key,sal number check(sal>1000 and sal<2000));

    综合案例:

    -------------------------------------------------------------------------------------

    create table goods(goodsId  number primary key

    ,goodsName nvarchar2(32)

    ,unitprice number check(unitprice > 0)

    ,category nvarchar2(64)

    ,provider nvarchar2(64)

    );

    create table customer(customerId number primary key

    ,name nvarchar2(32) not null

    ,address nvarchar2(64)

    ,email nvarchar2(32) unique

    ,sex char(2) default ‘男’ check(sex in (‘男’,’女’))

    ,cardId nvarchar2(20)

    );

    create table  purchase (

                   customerId number references customer(customerId)

                  ,goodsId  number references goods(goodsId)               

                 ,nums number check(nums >=1 and nums <=30)

    );

    维护:

    基本语法说明:

        alter table 表名 add constraint  约束名  约束种类【check/unique/primary key/foreign】(字段)

        alter table 表名 modify 字段名 not null

    1.增加商品名布也不能为空?

      alter table goods modify goodsName not null;

    2.增加身份证也不能重复?

      alter table customer add constraint c_cardId unique(cardId);

    3.增加客户的地址只能是“海淀”、“朝阳”……

      alter table customer add constraint c_add check(address in(“海淀”))

    删除约束

    alter table 表名 drop constraint 约束名

     

    :删除有外键引用的主键时,可使用cascade级联删除

    列级定义和表级定义

    列级定义:

       直接在列后定义约束

       比如:id number primary key,name nvarchar2(32)

    表级定义:

           定义完所有的列后再定义约束

           比如:

             create table order(

              customerID number,

              productID  number,

              price number,

              constraint pk_customer_product primary key(customerID, productID )

    );

        结论:一般情况列级别定义够用,但在使用复合主键时,就有必要使用表级定义

  • 相关阅读:
    Spring学习笔记(二)----Spring IOC
    LeetCode----正则表达式匹配「动态规划」
    Markdown----一款轻量级标记语言
    LeetCode----最长回文子串「动态规划」
    数据结构(六)
    数据结构(五)
    HDOJ3613解题报告【拓展KMP】
    HDOJ1358解题报告【KMP算法next数组的使用】
    POJ1990解题报告【树状数组】
    HDOJ1507解题报告【二分图染色】
  • 原文地址:https://www.cnblogs.com/w-gao/p/7325783.html
Copyright © 2011-2022 走看看