mysql primary key有啥作用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql primary key有啥作用?相关的知识,希望对你有一定的参考价值。
mysql primary key有什么作用,解释的通俗易懂详细点,用这个修饰了的字段,和没有用着个字段修饰的区别讲讲
primary key主键,是一个标志,标志着这一行的内容不能重复(唯一),而且必须是非空的(也就是不能出现null或空白的状态)。一般来说主键是这一行数据的最基础数据(并不是说最基础数据都是主键),根据主键你可以找到其他的相关信息,但是一般来说反过来可能就会出现问题。
举例:几个人姓名可能一样,长相可能一样,住址可能一样(这个真的出现过,假设一个人买房后重新入户换了身份证,住址变了,但是前一个房主虽然卖了房子,但是并没有去变更,也就出现了,住址一样),出生日期一样,但是有一个东西一定不一样,就是身份证号码,这个身份证号码就是唯一标识他们中每一个人的标志,这个标志是唯一的,而且是非空的(应该没有人没有身份证号的,不然他什么都干不了)。
那么不加会怎么样,不加不会怎么样,该用还是用,很多表都没有主键,也是能用的,要不要加主键要看实际情况,并不能一概而论。
举例来说,还是上面身份证的例子,如果同一个医院一天生了10个小孩,这10个小孩都要马上户口,也就是需要身份证号,如果没有主键的限制,那么可能就会出现两个小孩身份证号一样的情况,若干年后,一个小孩出了事故没了,户口注销,那么因为是根据身份证号查询的,那么跟他同样身份证号的小孩的户口也会被注销,这样的话,这个还活着的小孩,以后不管干什么都干不了,因为查无此人。(如果加了主键,那么这种情况就不会发生)
但是如果是一张交易表,那么就不需要主键,一个人因为某种原因分三次买了同样的商品,那么交易表就会记录三次,这时除了交易时间不同以外,其他的内容全部相同,这个就可以没有什么主键,仅仅是一个记录的作用,在后面的汇总、统计、分析表中可能存在主键,但是交易表中是可以没有主键的。(当然其实也是有主键的,比如订单号一类的,不然万一客户要取消交易,那么这三个中要取消的到底是哪一个就说不清楚了)
如果上面的理解不了,我们换一个思路,现实中你去商店买本,15分钟内买了3个,每5分钟买一个,那么你的交易信息中除了时间以外,其他的信息是完全一样的,然后你去退其中的一个本(我们假设商店给退),你认为商店会去确认你退的到底是哪一次买的本子吗?肯定不会,只要他确定你退的是在这里买的本子就可以了。(这个交易的过程其实也是一张表,一张存在于人脑中的表,对于双方而言唯一不同点就是时间,但是有必要去纠结时间吗,没必要,所以就这个交易(这里是重点,就这个交易来说,不要提人没换这是这个交易以外的事情)也就没有主键的概念)
最后还是那句话,表中有没有主键,需不需要有主键,看需求和设计的需要,如果需要有,那么就应该有,如果不需要有那么没有也可以,我们经常会设计一些没有主键的表,很多都是流程表交易表一类的,这类表经常没有主键一说(有标识,但是标识并不是主键)。 参考技术A 你好,很高兴回答你的问题。
primary key是主键,一个表中的所有数据的主键值是不可以重复的。
也就是说主键值可以唯一确定一条数据。
就好比身份证号,一个人的姓名可能会变,年龄会增长,甚至性别也可以改,但是身份证号是不变的。
另外用主键值可以快速定位一条数据。
如果有帮助到你,请点击采纳。
以上是关于mysql primary key有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章
Flink 实战系列Incremental snapshot for tables requires primary key, but table test.ab doesn’t have pri
Flink 实战系列Incremental snapshot for tables requires primary key, but table test.ab doesn’t have pri