什么是SQL主键?详解主键的作用与设置方法

主键是唯一标识每行数据的列。

自然键与 ID 号具有相同的商业含义。
但业务变更却很麻烦。
例如,如果用户更改其电子邮件地址,主键也必须更改,这会弄乱数据。

代理键是一个无意义的数字,例如自动递增的 ID 或 UUID。
自增ID简单高效,UUID适合部署。
但我不明白代理键是什么意思。

建议使用自增ID作为主键,并将ID号设置为唯一约束。
我可以使用自然键吗?这取决于它是否短且稳定。

创建表时,直接添加主键即可。
例如,order_id INT AUTO_INCRMENT PRIMARY KEY。
多列的组合用作主键,例如 PRIMARY KEY(student_id,course_id)。

要更改表并添加主键,请使用 ALTER TABLE ADD PRIMARY KEY()。
要删除主键,请首先删除外键约束,然后使用 DROP PRIMARY KEY()。

复合主键索引较大,数据查询速度慢。
长字符串主键也很慢。
外键不能随意删除。
在进行任何更改之前,请备份并重新运行您的测试环境。

自己掂量一下。

mysql中主键子段可以为空吗 主键字段空值限制说明

等等,我昨天在调试代码时遇到了一些奇怪的事情。
用户表的主键是一个自增标识符,但是我忘记添加NOT NULL,实际上输入了一个空值的主键。
数据库没有崩溃,但是在验证数据时卡住了很长时间。
最后发现索引失效了。
当时我还在想,为什么这张唱片拖慢了整个进度?

sql?语句里?primary?key什么意思??怎么用?

嘿,让我告诉你这个主键。
当我第一次开始使用数据库时,我真的被愚弄了。
早在 2 008 年,我就在上海的一家小公司做一个项目。
我当时使用的是 Access,刚刚向表中添加了三个主键。
结果,系统崩溃了。
老板叫我过去,脸色惨白。
查了一下,发现Access中一张表只能有一个主键。
我就是想不通。

主键是表中的唯一标识符。
它就像一张身份证。
不能重复或为空。
当时我正在一个电子商务网站上工作。
在用户表中,我将用户 ID 设置为主键。
ID自动增加。
每增加一个新用户,ID就会自动加1 ,非常方便。
如果手动添加,很容易出错,而且可能会重复。

另外,主键不一定是数字,可以是字符串,但必须是唯一的。
在此之前,我有一个使用外来代码作为主键的项目。
结果查询非常慢。
然后我把它改成自动递增。
因此,在选择主键类型时必须慎重考虑。

记得有一次,我在做一份订单,客户告诉我,他希望订单号能连在一起,看起来整齐。
我本来想把订单号设为主键,但发现如果订单号设为主键,就不能随意更改。
如果一个订单号错误,那么下面所有相关的订单号也会错误,这就造成麻烦。
后来吸取教训,用自增ID作为orders表的主键。
我创建了一些其他订单并且没有参与索引,这使得它更加灵活。

另外,如果主键被删除,关联的表也必须被删除,否则数据会不一致。
我之前有一个项目,但我忘记设置外键约束。
结果,主表中删除了一条记录,但辅助表仍然有该记录。
当客户查看数据时,他一头雾水。
然后我很快就加上了外键约束,没有什么大问题。

所以,主键虽然简单,但是如果使用得当,可以避免很多麻烦。
如果你在设计手表的时候就不清楚,那么以后改的时候你会真的很困惑。
我建议主键是自增数字,这样简单、初级,而且不容易出错。