主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。
外键:
若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。
A为基本表,B为信息表。
在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份z号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份z号一样,必须是每个记录的值都不同,这才能根据主键的值来确定不同的记录。
关系:外键一定是另外某个表的主键。
可以,这说明这两张表的主键相关联,只是那张是主表(就是该表的主键作为从表的外键),那张是从表(该表的主键同时也是外键),需要自己定义好。
CREATE TABLE `baidispatch_cost` (
`id` varchar(50) NOT NULL COMMENT 'id',
`belong` varchar(15) DEFAULT NULL COMMENT '设计交付日期',
primary key (`id`),
constraint `FK_DISPATCH_ID` foreign key (`id`) references `dispatch_order` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='成本表';
扩展资料:
主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
参考资料来源:百度百科-数据库主键
A表必须有记录,B表才能有,这个时候A表是主键表,B表外键表。(A表里面的记录可以随便录入,但一般必须唯一,是主键;B表里面录入的东西就不是乱录了,必须A表里面有的记录,才能录入到B表中。B表里面出现的任何一条记录都必须在A表中找到与之对应的记录,当然它可以重复出现,如果是1:N的话)
例如:学生表,成绩表。学生表里面必须有某个学生的信息,成绩表里面才可能有这个学生的成绩。这个时候学生表示主键表,成绩表示外键表。如果学生表中一个学生都没有,成绩表里面也不能有,但是反之则可以。
一句话,主键表限制外键表的数据。谁限制谁主键,谁被限制谁外键。
你在建立外键的时候要指定更新的关联,这样删除User中的一笔记录,所有以User表的UserId为外键的表的记录都会删除,修改User中UserId的值,所有所有以User表的UserId为外键的表的记录都会更新这个UserId的值
比如MSSQL中:
alter table tbl_xxx
add constraint FK_xxx foreign key (lodNo)
references tbl_aaa (loNo)
on update cascade on delete cascade
注意on update cascade on delete cascade
主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。 身份z号是唯一能确定你这个人的,其他都可能有重复,所以,身份z号
2 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持
以上就是关于什么是主键什么是外键它们之间有什么关系全部的内容,包括:什么是主键什么是外键它们之间有什么关系、请问 sql 字段 可不可以 即是主键又是外键、设置数据库外键时如何区分那个为主键表那个为外键表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)