zoukankan      html  css  js  c++  java
  • 主外键约束

    主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

    外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。

    constraint  a_b foreign key(Kno) references  Key1

    a_b约束名   ,  Kno外键    ,Key1 主键在的表

    分insert , update ,alter 三大法则

    insert 时 ,能插了主键的才能 插入 外键的

    update时 ,主外键有相同的值时候,不能修改。没有时,主键可以改其他,外键可以改已经存在的主键值

    delete时, 能 删除 外键的才能 删 主键的(有点倒过来的味道吧

    约束的add 和 drop

    alter table key2--消除了外键约束,上面的语句都可以执行
    drop constraint K_k
    
    alter table key2  --通过这个把外键约束加回来,上面的语句又不可以用了
    add constraint K_k foreign key(Kno) references key1

    全部测试代码如下

    create table key1( --定义两个表
    Kno int primary key,
    Ksex char(5))
    
    create table Key2(
    Kmo int primary key,
    Kno int,
    constraint K_k foreign key(Kno) references key1)
    
    insert   --抛出错误,有外键,不能直接插入,要在主键那里先插入
    into Key2
    values(12,12)
    
    insert   --现在先执行了这行,然后执行上面那行就没有问题了
    into Key1
    values(12,'b')
    
    update key2--修改无关的值,可以
    set kmo=0
    
    update key2--修改外键,不可以
    set kno=2
    
    update key1--修改主键,也不可以
    set kno=2
    
    alter table key2--消除了外键约束,上面的语句都可以执行
    drop constraint K_k
    
    alter table key2  --通过这个把外键约束加回来,上面的语句又不可以用了
    add constraint K_k foreign key(Kno) references key1
    
    delete --删除主键是不可以
    from key1
    where kno='12'
    
    delete --删除外键的却可以
    from key2
    where kno='12'
  • 相关阅读:
    C++中两种获取UUID的方法(编程)
    在python中发送自定义消息
    lib,dll的位置
    GetWindowText
    SuspendThread and ResumeThread
    创建线程检查按钮的状态
    C++检测句柄的权限
    POJ2186 强联通
    POJ2186 强联通
    POJ 1201 差分约束(集合最小元素个数)
  • 原文地址:https://www.cnblogs.com/vhyc/p/5912858.html
Copyright © 2011-2022 走看看