• 数据库中的五大约束条件


    数据库中的约束条件,在数据库中使用约束条件可以定义规则使得数据能够朝我们希望的方向发展,也就是可以保证数据的完整性。在数据库中有五大约束条件,分别为主键约束,非空约束,唯一约束,检查性约束,外键约束。

    1)主键约束(primary key)

      主键约束通常都是在id字段上使用,它有两个特点,不能为空,不能重复。

      例如:create table p(

              uid number(20) primary key,

              uname varchar2(6) 

              //主键也可以自己指定

              constraint primary_key_name primary key (uid)

              );

    2)非空约束(not null)

      非空约束,就是保证一个字段不能为空,不能有空值存在,如果插入空值,则会报错。

    3)唯一约束(unique)

      如果想让某个字段唯一,则为它加上unique唯一约束,当插入了相同的值时会报错。

      例如:create table p3(

                uname varchar2(6) unique,

                uid number(10) primary key

                //唯一约束也可以自定义

                constraint  unique_name unique(字段)

               );

    4)检查性约束(check (字段名 in (一个合法范围)))

       使用检查性约束可以用来约束某个字段值的合法范围。例如用1表示男,2表示女。

        create table p4(    

                gender number(1) check (gender in(1,2)),

               //检查约束也可以自己指定

                constraint  check_name check(字段 in(1,2))

               );

    5)外键约束

       外键约束用于两张表之间,用来保证关联数据的完整性。例如订单和订单明细表,一对多关系。

      创建订单表:

        create table orders(

                 order_id number(10),

                 total_price number(10,2),

                 order_time date,

                 constraint orders_order_id_pk primary key (order_id)

                 );

       创建订单明细表:

          create table order_detail(

                     detail_id number(10),

                     order_id number(10),//在order表中是主键

                     item_name varchar2(10),

                     quantity number(10),

                     constraint order_detail_detail_id_pk primary key (detail_id),

                     constraint order_detail_order_id_fk foreign key (order_id) referencs orders(order_id)|on delete cascade|on update cascade

                  );

    外键关联时要注意的是:1.外键一定是主表的主键,2.删除表时要先删子表在删主表。

    可以强制删除,而不用管约束条件:drop table orders cascade constraint;

    可以使用级联更新和级联删除,这样在主表中进行更新或者删除操作,子表中的数据也会保证同步更新或者删除。on delete cascade|on update cascade。

  • 相关阅读:
    Android APK反编译
    android 安卓APP获取手机设备信息和手机号码的代码示例
    Android-- ArrayAdapter用法举例(转载)
    Android--ListView 分割线
    Android——检测TXT文件中是否含有双字节字符
    Android--------从一个包中的Avtivity创建另外另外一个包的Context
    百度地图技术大揭秘
    Lotusscript统计在线用户数
    代理中如何获取参数么
    DXL之通过程序修改Domino的设计
  • 原文地址:https://www.cnblogs.com/jasonboren/p/10921508.html
Copyright © 2020-2023  润新知