MySQL里面的主键外键都是什么意思,看不太明白,谁能通俗的说下,谢谢~~ 怎么样理解好。

 我来答
来自滑雪场欣慰的钢铁侠
2012-01-27 · TA获得超过256个赞
知道答主
回答量:38
采纳率:100%
帮助的人:35.5万
展开全部
其实不止是mysql里,所有的数据库都有主键外键的概念。举个简单的例子。
因为在中国有不少人姓名相同,所以虽然在你家里能用名字做统一标识,但是在中国这个范围却不行,所以就有了身份证号,这是主键,保证每一个人有一个。
然后你会上学,上学的话就有学籍这么个东西,虽然有学籍号还有学籍信息,但是我现在想要通过身份证号知道你的学历的话,在学籍这个表中,就要加入你的身份信息,这个身份信息与学籍信息当然不是在一个表里的,最简单的方法,是把身份信息都复制到学籍信息这个表里,不过很显然,这样数据库就有两份记录,一份在身份信息表里,一份在学籍信息表里,而且都是身份信息。这叫做冗余,不但占多了空间,还不能保证修改时候的同步,而且你也许还有社会保险啦,驾驶证之类更多的信息存在,我也不可能每个表都复制身份信息过去。这时就出现在外键,我只需要在这些表中插入身份证号这个列做为外键,那我到时候通过这个唯一的编号去身份信息这个表里找就好了,而且修改身份信息的话也只要在身份信息这个表做就好了,很方便很简单不是吗
上修与人蝇1E
2012-01-27
知道答主
回答量:30
采纳率:0%
帮助的人:19.9万
展开全部
废话少说,直接进入主题。 主键:指的是,唯一标识这张表的字段,例如,书号是图书表的主键
外间:指的是 可以跟其他表建立关系的字段,例如 图书表的书名 可以在 借阅信息表中出现,这样图书表和借阅信息表之间建立了关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8243043
2012-02-03 · TA获得超过247个赞
知道小有建树答主
回答量:240
采纳率:100%
帮助的人:157万
展开全部
约束的分类:
在实际中,约束主要分为以下五种约束:
主键约束: 主键表示一个唯一的标识,本身不能为空
例如:身份证编号是唯一的,不可重复的,不可为空的
唯一约束: 在一个表中只允许建立一个主键约束,而其他如果不希望出现重复的话,则
就可以使用唯一约束。
检查约束: 检查一个列的内容是否合法
例如: 年龄,只能在0-150岁
例如: 性别,只能是男、女
非空约束: 姓名这样的字段里面的内容就不能为空
外键约束: 在两张表中进行约束操作
例子:
外键约束是对于两张表:一张学生表student ,另一张课程表course。一门课程里面必须有一个字段属于哪个学生
create table tb_person(
p_id int(11) ,
name varchar(50),
age varchar(2),
sex varchar(10),
address varchar(200)
);
create table tb_book(
b_id int(11) auto_increment primary key,
name varchar(100)
p_id int(11) // 表示对应的那个人是谁 直接指向 t_peson表的的id编号
);
首先插入:t_peson表的数据
insert into tb_peson (p_id,name,age,sex,address) values(1,'ttt','22','男','地球');
再向t_book 表插入数据:
insert into tb_book (b_id,name,'00000',2); 的话就会插入成功
(如果此编号人都不存在的话,则该数据不应该插入。解决问题就是要使用主-外键关联; 关联之后子表的数据要跟随父表数据的内容变动)
就好比一个儿子要有一个父亲,你不能说没有父亲突然蹦了一个儿子出来,就违反常理了。
外键加这句内容: constraint t_peson_book_p_id_fk foreign key(p_id) references t_person(p_id)
如下:
create table tb_book(
b_id int(11) auto_increment primary key,
name varchar(100)
p_id int(11),
constraint t_peson_book_p_id_fk foreign key(p_id) references t_person(p_id)
);

如果你不加外键约束的话: 就会出现
再插入这句就不会成功: insert into tb_book (b_id,name,'00000',2);(违反约束条件)

这样就狂野保证表的完整性,不会出现找不到对应数据的情况
在使用主-外键关联时要注意:
1、在子表中设置外键在父亲中必须是主键
2、删除时应该先删除子表,再删除父表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式