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


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

    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。

  • 相关阅读:
    微信小程序之某个节点距离顶部和底部的距离 createSelectorQuery
    js正则手机号 验证
    算法将一个对象中的某一个key值变为true,其他值都为false
    更改上传框的大小
    Educational Codeforces Round 85 (Div. 2)
    Codeforces Round #632 (Div. 2)
    AtCoder Beginner Contest 161
    Codeforces Round #631 (Div. 2)
    Codeforces Round #630 (Div. 2)
    Codeforces Round #629 (Div. 3)
  • 原文地址:https://www.cnblogs.com/jasonboren/p/10921508.html
Copyright © 2020-2023  润新知