zoukankan      html  css  js  c++  java
  • 多表关联

    将部门数据与员工数据放到同一张表中,一个部门有多个员工,就意味着数据可能会重复,维护性差,所以我们需要分表,建立他们之间的关联,就通过外键(FOREIGN KEY)来建立约束。

    create table 表名(字段名 类型(长度),
    foreign key (外键的字段名称) 
    references 对方表名(对方主键名));
    书写规范

    强调:使用外键时 必须分清主从关系

    先建主表再建从表;先插入主表记录再插入从表记录;先删除主再删从;在表中更新外键时,必须保证外键是存在的;更换或更新主表主键 必须先删除与主表有关联的从表的数据;删除主表要先删除从表,如果觉得删除麻烦,可以使用级联。

    #主表
    create table school(id int primary key auto_increment);
    
    #从表
    create table stu(id int primary key auto_increment,
    s_id int,
    foreign key (s_id) references school(id)
    on delete cascade
    on update cascade);
    
    on delete cascade#当主表删除记录时 从表相关联的记录同步删除
    on update cascade#当主表id更新时 从表相关联的记录同步更新
     
    注意:从表的变化不会级联到主表,只有主表的变化级联操作从表
    
    级联示例
    级联示例
    #多对多关系
    一个老师可以教多个学生,而多个学生也可以有多个老师
    #主表
    create table teacher(id int primary key auto_increment ,name char);
    
    #从表
    create table stu(id int primary key auto_increment,name char);
    
    #中间表
    create table t_s(id int primary key auto_increment,
    t_id int ,s_id int,
    foreign key(t_id) references teacher(id),
    foreign key(s_id) references stu(id));
    
    用一个中间表来专门存储关联关系,老师和学生都是主表,中间表是从表
    多对多示例
    #一对一关系
     
    一个居民只有一张身份证,一张身份证也只能对应一个居民
    需要加上unique
    #主表
    create table people(id int primary key auto_increment,
    name char ,addr char);
    #从表
    create table idcard(id int primary key auto_increment,
    name char,
    num int,
    p_id int unique,
    foreign key(p_id) references people(id));
    一对一示例

    修改表、复制表

    add   添加字段 after|first
                after 添加字段到哪个字段后面
                first 添加字段到最前面
    modify 修改字段类型
    change 修改字段名称  或 类型
    drop  删除字段
    rename 改表名
    修改表
    create table 新表名 select *from 原表名
    #能复制数据结构 不能复制约束
    
    create table 新表名 select *from 原表名 where 1=2
    #条件不成立时,只能复制表的结构
    复制表
  • 相关阅读:
    Mysql(二)
    Mysql(一)
    JS图表插件(柱形图、饼状图、折线图)
    如何让Table中的第一列和第二列的值相乘然后赋值给第三列
    js生成验证码并验证
    IIS配置默认文档
    DropDownList如何添加一个空白的选项
    GridView如何合并同类项
    .NET后台如何获取前台HMTL控件的值
    Json数据报错
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9997665.html
Copyright © 2011-2022 走看看