11.21

Posted zhanggq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11.21相关的知识,希望对你有一定的参考价值。

一、外键 级联

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

外键的第一种约束
  先建主表
  再建从表

外键的第二个约束
  先插入主表
  再插入从表

外键的第三个约束
  删除记录时
  先删除从表记录
  再删主表记录

外键的第四个约束
  从表更新外键时 必须保证外键是存在的

外键的第五个约束
  更新主表的id时
  必须先删除从表关联的数据
  或者把关联数据 关联其他的主表id

外键的第六个约束
  删除主表时 要先删除从表

 

级联:

create table emp(
id int primary key auto_increment,
name char(20),
d_id int,
foreign key(d_id) references dept(id)
on delete cascade
on update cascade
);

on delete cascade 当主表删除记录时 从表相关联的记录同步删除
on update cascade 当主表id更新时 从表相关联的记录同步更新
注意是单向的 主表变化是 级联操作从表 从表的变化不会级联到主表

二、多表关联

1.多对一

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

create table dept(id int primary key auto_increment,name char(20),job char(20));
create table emp(id int primary key auto_increment,name char(20),d_id int,foreign key(d_id) references dept(id));

2.多对多

  一个中间表 两个外键

create table teacher(id int primary key auto_increment,name char(15));
create table student(id int primary key auto_increment,name char(15));
#中间表
create table tsr(
id int primary key auto_increment,
t_id int,s_id int,
foreign key(t_id) references teacher(id),
foreign key(s_id) references student(id)
);

3.一对一

  一个外键 一个唯一约束

create table customer(c_id int primary key auto_increment,
name char(20),phonenum char(11),addr char(20));
create table student1(s_id int primary key auto_increment,
name char(20),
class char(11),
number char(20),
housenum char(20),c_id int UNIQUE,
foreign key(c_id) references customer(c_id)
);

三、复制表

create table 新的表名 select * from 源表名;
数据
结构
约束不能复制

当条件不成立是 只复制表结构
create table 新的表名 select * from 源表名 where 1 = 2;

四、蠕虫复制

自我复制
insert into 表名称 select *from 表名;
如果有主键 避开主键字段
insert into 表名称(其他字段) select 其他字段 from 表名;

 














































以上是关于11.21的主要内容,如果未能解决你的问题,请参考以下文章

11.21

11.21

11.21团队总结

11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志

11.21

上周热点回顾(11.15-11.21)