mysql primary key有什么作用?

mysql primary key有什么作用?,第1张

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

主键是定义一个表中起主要作用的数据项,这些数据项的数据在表中是唯一的,同时系统按主键为表建立索引。\x0d\x0a\x0d\x0a外键是定义一个表中的某数据项的数据,要参照另一个表的主键数据。既没有在另一个表的主键数据中出现的数据,不允许在这个表的外键数据项中出现。\x0d\x0a\x0d\x0a主键:表中记录的唯一标识\x0d\x0a\x0d\x0a外键:依赖于别的表的数据\x0d\x0a\x0d\x0a唯一键:在表中唯一\x0d\x0a\x0d\x0a键是一个或多个字段的组合\x0d\x0a\x0d\x0a唯一键:可以确定一条记录的字段(或字段组合),一张表可以有多个唯一键,正如可以识别你的身份的可以是身份z,学生证,军人证\x0d\x0a\x0d\x0a主键:你把唯一键的一个选做主键,一张表只能有一个主键\x0d\x0a\x0d\x0a外键:所定义的外键是另一张表的主键,\x0d\x0a\x0d\x0a主键:表中记录的唯一标识,外键:依赖于别的表的数据,唯一键:在表中唯一。\x0d\x0a\x0d\x0a主键和唯一键的一个区别:主键是不允许为NULL的,唯一键则可以,当然你可以加上NOT NULL来限制它\x0d\x0a\x0d\x0a主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。\x0d\x0a\x0d\x0a外键:\x0d\x0a\x0d\x0a若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。\x0d\x0a\x0d\x0aA为基本表,B为信息表。\x0d\x0a\x0d\x0a在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份z号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份z号一样,必须是每个记录的值都不同,这才能根据主键的值来确定不同的记录。\x0d\x0a\x0d\x0a什么是外键?\x0d\x0a\x0d\x0a说明你的表A中的某项a,是引用表B的某列b\x0d\x0a\x0d\x0a为什么要使用外键?\x0d\x0aRDBMS的基本概念,可以维护数据库的完整。\x0d\x0a\x0d\x0a如何来用,涉及到数据库的定义。\x0d\x0a\x0d\x0a唯一约束和主键的区别是什么?\x0d\x0a\x0d\x0a唯一性约束\x0d\x0a\x0d\x0a唯一性约束所在的列允许空值,但是主键约束的列不允空值。\x0d\x0a\x0d\x0a可以把唯一约束放在一个或者多个列上,但是,唯一性约束所在的列并不是表的主键列。\x0d\x0a\x0d\x0a唯一性约束强制在指定的列上创建一个唯一性索引,在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。\x0d\x0a\x0d\x0a主键:\x0d\x0a\x0d\x0a用于标识某行而且与之相关\x0d\x0a\x0d\x0a是不可能更新\x0d\x0a\x0d\x0a不应该允许空\x0d\x0a\x0d\x0a唯一域/字段\x0d\x0a\x0d\x0a用于作为访问某行的可选手段。\x0d\x0a\x0d\x0a只要唯一就可以更新\x0d\x0a\x0d\x0a可以为空\x0d\x0a\x0d\x0a注意唯一和主键的区别,它们都是创建一个唯一的索引,一个表格仅含有一个主键约束列,但是,它有可能在其他列中含有许多的唯一约束。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8741615.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存