• ADADADADAD

    sql中参照完整性的示例分析[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:24:50

    作者:文/会员上传

    简介:

    一、参照完整性参照完整性指的就是多表之间的设计,主要使用外键约束。多表设计: 一对多、多对多、一对一设计1.一对多关联主要语句:constraint cus_ord_fk foreign key (cust

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    一、参照完整性

    参照完整性指的就是多表之间的设计,主要使用外键约束。
    多表设计: 一对多、多对多、一对一设计

    1.一对多

    关联主要语句:
    constraint cus_ord_fk foreign key (customer_id) REFERENCES customer(id)
    创建客户表——订单表
    一个客户可以订多份订单,每份订单只能有一个客户。

    --关联(1对N)createtablecustomer(idintPRIMARYKEYauto_increment,namevarchar(20)notnull,adressvarchar(20)notnull);createtableorders(order_numvarchar(20)PRIMARYKEY,priceFLOATnotNULL,customer_idint,--进行和customer关联的字段外键constraintcus_ord_fkforeignkey(customer_id)REFERENCEScustomer(id));insertintocustomer(name,adress)values("zs","北京");insertintocustomer(name,adress)values("ls","上海");SELECT*fromcustomer;INSERTINTOordersvalues("010",30.5,1);INSERTINTOordersvalues("011",60.5,2);INSERTINTOordersvalues("012",120.5,1);SELECT*fromorders;

    notice: constraint: 约束的意思。foreign key: 外键。references: 参照
    创建一个名叫customer_id_fk的外键约束,其中外键指的是customer_id,并且参照的是 customers表中的id列

    扩展:

    字表的删除更新策略:

      1)CASCADE 级联策略。使用此种策略时主表的记录被删除或者主键字段被修改时会同步删除或修改子表

      2) NO ACTION 无动作策略。使用此种策略时要删除主表必须先删除子表,要删除主表的记录必须先删除子表关联的记录,不能更新主表主键字段的值。

      3) RSTRICT 主表约束策略。此种策略对主表的约束跟 NO ACTION 一样

      4)SET NO 置空策略。使用此种策略时,如果主表被删除或者主键被更改,则将子表中的外键设置为NULL。需要注意的是,如果子表的外键是主键或者是设置为NOT NULL的,则主表的删除和主键的更改跟 NO ACTION 一样。

    2. 多对多

    创建学生——老师关系表格
    其中一个学生可以有多个老师,一位老师也可以有多个学生

    --多对多关系--创建teacher表格CREATETABLEteacher(idINT,NAMEVARCHAR(20)NOTNULL,genderCHAR(2)NOTNULL,PRIMARYKEY(id));--创建学生表格CREATETABLEstudent(idINT,NAMEVARCHAR(20)NOTNULL,ageINTNOTNULL);ALTERTABLEstudentADDPRIMARYKEY(id);--第三张关系表CREATETABLEtch_std(teacher_idINT,student_idINT,CONSTRAINTfk_teacherFOREIGNKEY(teacher_id)REFERENCESteacher(id),CONSTRAINTfk_studentFOREIGNKEY(student_id)REFERENCESteacher(id));DELETEFROMteacherWHEREid=3;SELECT*FROMteacher;SELECTDISTINCT*FROMtch_std;

    attention:多对多是三张表,第三张表创建外键约束对应前两张表中的id

    3. 一对一

    两种形式:

    1)按照外键关联
    在IdCard表中的外键添加唯一约束
    2)按照主键关联
    对主键添加外键约束

    --一对一--创建users表格CREATETABLEusers(idINT,NAMEVARCHAR(20)NOTNULL,genderCHAR(2)NOTNULL,PRIMARYKEY(id));--创建card表格CREATETABLEcard(idINT,adressVARCHAR(100)NOTNULL,user_idINTUNIQUE,constraintusers_id_fkforeignkey(user_id)referencesusers(id));ALTERTABLEcardADDPRIMARYKEY(id);

    此种为方法1,给外键添加唯一约束unique

    sql中参照完整性的示例分析.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: sql