mysql primary key有什么作用? mysql primary key于key关键字的作用和区别

作者&投稿:笃怨 (若有异议请与网页底部的电邮联系)
primary key主键,是一个标志,标志着这一行的内容不能重复(唯一),而且必须是非空的(也就是不能出现null或空白的状态)。
一般来说主键是这一行数据的最基础数据(并不是说最基础数据都是主键),根据主键你可以找到其他的相关信息,但是一般来说反过来可能就会出现问题。
举例:几个人姓名可能一样,长相可能一样,住址可能一样(这个真的出现过,假设一个人买房后重新入户换了身份证,住址变了,但是前一个房主虽然卖了房子,但是并没有去变更,也就出现了,住址一样),出生日期一样,但是有一个东西一定不一样,就是身份证号码,这个身份证号码就是唯一标识他们中每一个人的标志,这个标志是唯一的,而且是非空的(应该没有人没有身份证号的,不然他什么都干不了)。
那么不加会怎么样,不加不会怎么样,该用还是用,很多表都没有主键,也是能用的,要不要加主键要看实际情况,并不能一概而论。
举例来说,还是上面身份证的例子,如果同一个医院一天生了10个小孩,这10个小孩都要马上户口,也就是需要身份证号,如果没有主键的限制,那么可能就会出现两个小孩身份证号一样的情况,若干年后,一个小孩出了事故没了,户口注销,那么因为是根据身份证号查询的,那么跟他同样身份证号的小孩的户口也会被注销,这样的话,这个还活着的小孩,以后不管干什么都干不了,因为查无此人。(如果加了主键,那么这种情况就不会发生)
但是如果是一张交易表,那么就不需要主键,一个人因为某种原因分三次买了同样的商品,那么交易表就会记录三次,这时除了交易时间不同以外,其他的内容全部相同,这个就可以没有什么主键,仅仅是一个记录的作用,在后面的汇总、统计、分析表中可能存在主键,但是交易表中是可以没有主键的。(当然其实也是有主键的,比如订单号一类的,不然万一客户要取消交易,那么这三个中要取消的到底是哪一个就说不清楚了)
如果上面的理解不了,我们换一个思路,现实中你去商店买本,15分钟内买了3个,每5分钟买一个,那么你的交易信息中除了时间以外,其他的信息是完全一样的,然后你去退其中的一个本(我们假设商店给退),你认为商店会去确认你退的到底是哪一次买的本子吗?肯定不会,只要他确定你退的是在这里买的本子就可以了。(这个交易的过程其实也是一张表,一张存在于人脑中的表,对于双方而言唯一不同点就是时间,但是有必要去纠结时间吗,没必要,所以就这个交易(这里是重点,就这个交易来说,不要提人没换这是这个交易以外的事情)也就没有主键的概念)
最后还是那句话,表中有没有主键,需不需要有主键,看需求和设计的需要,如果需要有,那么就应该有,如果不需要有那么没有也可以,我们经常会设计一些没有主键的表,很多都是流程表交易表一类的,这类表经常没有主键一说(有标识,但是标识并不是主键)。

你好,很高兴回答你的问题。
primary key是主键,一个表中的所有数据的主键值是不可以重复的。
也就是说主键值可以唯一确定一条数据。
就好比身份证号,一个人的姓名可能会变,年龄会增长,甚至性别也可以改,但是身份证号是不变的。
另外用主键值可以快速定位一条数据。
如果有帮助到你,请点击采纳。

mysql中key和primary key的区别~

KEY通常是INDEX同义词。如果关键字属性PRIMARY KEY在列定义中已给定,则PRIMARY KEY也可以只指定为KEY。这么做的目的是与其它数据库系统兼容。 PRIMARY KEY是一个唯一KEY,此时,所有的关键字列必须定义为NOT NULL。如果这些列没有被明确地定义为NOT NULL,MySQL应隐含地定义这些列。一个表只有一个PRIMARY KEY。如果您没有PRIMARY KEY并且一个应用程序要求在表中使用PRIMARY KEY,则MySQL返回第一个UNIQUE索引,此索引没有作为PRIMARY KEY的NULL列

primary key 是主键索引,一个表不能有多个,key也就是说的索引,快速找到记录的一种数据结构,这个可用多个,engine 和type 只是数据库版本不同吧