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'
  • 相关阅读:
    [算法]最长的可整合数组的长度
    [算法]在行列都排好序的矩阵中找数
    [算法]在数组中找到出现次数大于N/K的数
    [算法]需要排序的最短子数组长度
    [算法]找到无序数组中最小的K个数
    [算法]“之”字形打印矩阵
    [java]final关键字、finally关键字与finalize()方法
    [算法]旋转矩阵问题(Spiral Matrix)
    [算法]位运算问题之三(实现加减乘除)
    [IDE]Intellij Idea学习整理
  • 原文地址:https://www.cnblogs.com/vhyc/p/5912858.html
Copyright © 2011-2022 走看看