27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
主表
在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。
从表
以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。
比如用户表和银行帐号表,没有用户,那来的银行帐号,而且用户可以没有银行帐号,这里主要表现在银行帐号中这个表中必有用户表中的字段用户,这个主表则为用户表,而从表,则依附于主表.
从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。主表可用于存储主要信息,如客户资料(客户编号,客户名称,客户公司,客户单位等),从表用来存储客户扩展信息(客户订单信息,客户地址信息,客户联系方式信息等)
1. 主表中没有的记录,从表不允许插入
2. 从表中有的记录,主表中不允许删除
3. 删除主表前,先删子表
实体完整性是通过主键约束实现的,而参照完整性是通过外键约束实现的,两者都是为了保证数据的完整性和一致性。
若同一个数据库中,B表的外键与A表的主键相对应,则A表为主表,B表为从表。
假设学生表(学号,姓名,性别,专业号),专业表(专业号,专业名称),则学生表中的专业号为学生表的外键,其与专业表中“专业号”属性相关联,因此,专业表为主表,学生表为从表。
外键就是从表中的公共字段
注意:
(1)只有innodb引擎才能支持外键
(2)公共字段的名字可以不一样,但是数据类型要一样
-- 创建表的时候添加外键 drop table if exists stuinfo; create table stuinfo( id tinyint primary key, name varchar(20) )engine=innodb; drop table if exists stuscore; create table stuscore( sid tinyint primary key, score tinyint unsigned, foreign key(sid) references stuinfo(id) -- 创建外键 )engine=innodb; -- 通过修改表的时候添加外键 语法:alter table 从表 add foreign key(公共字段) references 主表(公共字段) drop table if exists stuinfo; create table stuinfo( id tinyint primary key, name varchar(20) )engine=innodb; drop table if exists stuscore; create table stuscore( sid tinyint primary key, score tinyint unsigned )engine=innodb; alter table stuscore add foreign key (sid) references stuinfo(id)
通过外键的名字删除外键
先查看
show create table 表名\g
删除
-- 删除外键 mysql> alter table stuscore drop foreign key `stuscore_ibfk_1`; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0
1、 严格限制(参见主表和从表的特性)
2、 置空操作(set null):如果主表记录删除,或关联字段更新,则从表外键字段被设置为null。
3、 级联操作(cascade):如果主表记录删除,则从表记录也被删除。主表更新,从表外键字段也更新。
注意:
(1)置空、级联操作中外键不能是从表的主键
(2)一般说删除时置空,更新时级联。
语法:
foreign key (外键字段) references 主表名 (关联字段) [主表记录删除时的动作] [主表记录更新时的动作]。 foreign key(sid) references stuinfo(id)
drop table if exists stuinfo; create table stuinfo( id tinyint primary key comment '学号,主键', name varchar(20) comment '姓名' )engine=innodb; drop table if exists stuscore; create table stuscore( id int auto_increment primary key comment '主键', sid tinyint comment '学号,外键', score tinyint unsigned comment '成绩', foreign key(sid) references stuinfo(id) on delete set null on update cascade )engine=innodb;
本站内容均为小米原创,转载请注明出处:小米技术社区>> mysql中的主表和附表,它们的关系,特性以及外键和外键的三种操作方式