• oracle数据库的约束


    约束:
            用于确保数据库数据满足特定的商业规则。
            Oracle中的约束包括:
                         not null:
                         unique:
                         primary key: pk
                         foreign key: fk
                         check:
                         
           a.not null : 非空约束:
               如果在列上定义了not null,那么增加数据时,必须为该列提供数据。
               
           b.unique : 唯一约束:
               当定义唯一约束后,该列的值是不能重复的,但是可以为null。比如:身份证号、产品编号、...
               
           c.primary key : 主键约束:
               用于唯一的标示表行的数据。当定义了主键约束后,该列不但不能重复,而且不能为null。
               注意:一张表最多只能由一个主键(可以有联合主键),但是可以有多个unique约束。
               
           d.foreign key : 外键约束:
               用于定义主表和从表之间的关系。外键约束要定义在从表上,主表则必须具有主键约束或者unique约束。
               当定义外键约束后,要求外键列的数据必须在主表的主键列存在或是为null。
               
           e.check : 检查约束:
               用于强制列数据必须满足条件。
               如:假如在sal列上定义了check约束,并要求sal列值在1000--2000之间,那么在增加数据时,工资少于1000或者大于2000,就会报check约束错误。
               
               
           案例1:商店售货系统表设计案例。
               现在一个商业数据库记录客户及其购物情况,由下面三个表组成
                 a.商业表goods(商品号 goodsId, 商品名 goodsName, 单价unitprice,商品类别 category 供应商provider)
                 b.客户表customer(客户编号 customerId, 姓名 name,  住址 address, 电邮 email, 性别 sex,身份证 cardId)
                 c.销售表 purchase(客户编号 customerId,商品编号goodsId,购买数量 nums)
                 
               请使用SQL语句创建表,并完成下列功能:
               在定义列时,要求声明:
                 a.每个表的主外健;
                 b.客户的姓名不能为空;
                 c.单价必须大于0,购买数量必须在1--30之间;
                 d.电邮不能够重复;
                 e.客户的性别必须是 男 或 女,默认为 男 。
                 
               --创建goods表:
                   create table goods(
                       goodsid char(8) primary key,--主键
                       goodsName varchar2(30),
                       unitprice number(10,2) check (unitprice > 0),--检查约束,单价大于0
                       category varchar2(8),
                       provider varchar2(20)
                     );
                     
                --创建customer表:
                    create table customer(
                        customerId char(8) primary key,--主键
                        name varchar2(30) not null,--不能为空
                        address varchar2(50),
                        email varchar2(30) unique,--唯一约束,不能重复
                        sex char(2) default '男' check (sex in ('男','女')),
                        cardId char(18)
                    );
                 --创建purchase表:
                    create table purchase(
                        customerId char(8) references customer(customerId),
                        goodsId char(8) references goods(goodsId),
                        nums number(5) check (nums between 1 and 30) --购买数量必须在1--30之间
                    );
                 
            案例2:
                如果在创建表的时候,忘记建立必要的约束,则可以在建立表后使用 alter table 命令来为表增加约束。
                注意:增加 not null 约束时,需要使用 modify 选项。
                      增加其它四种约束时,使用 add 选项。
                      
               a.增加 商品名也不能为空;
               b.增加 身份证号也不能重复;
               c.增加客户的住址只能是 '武昌区','洪山区','青山区','江汉区'。
               
               a.SQL>alter table goods modify goodsName not null;
               
               b.SQL>alter table customer add connstraint cardunique unique(cardId);
                                                 约束       约束名   增加的约束类型
               
               c.SQL>alter table customer add connstraint addresscheck check(address in ('武昌区','洪山区','青山区','江汉区'));
                     
  • 相关阅读:
    Dubbo限制大数据传输的解决方案
    出现The folder is already a source folder
    用Eclipse进行远程Debug代码
    Scanner和BufferReader之区别
    IO操作中的建议
    Android Serialization序列化
    flash画图API:解析obj格式
    UVA 6475 Effective Infection Time
    swift user guide.pdf下载
    【cocos2d-x制作别踩白块儿】第一期:游戏介绍
  • 原文地址:https://www.cnblogs.com/hun_dan/p/2245374.html
Copyright © 2020-2023  润新知