SQL 如何添加主键列

说白了,使用ALTER TABLE给表添加主键其实很简单,但是却有很多陷阱。

展开来说,有3 个关键点:
我们先来说说最重要的事情。
确保您添加的列没有重复值或空值。
去年我们跑电商项目的时候,没有检查就添加了主键,直接报了ERROR1 06 2 (重复数据)。
上线花了两天时间——记得使用 GROUP BY 和 HAVING COUNT() > 1 检查重复,使用 WHERE IS NULL 检查空值。

此外,复合主键(例如订单表使用Order_ID和Customer_ID的组合)的语法为ADD PRIMARY KEY (column1 ,column2 ),但组合值必须是全局唯一的。
Order_Details表的例子很好,但是有一个关键细节:如果某列是自增ID(比如MySQL的AUTO_INCRMENT),先用它作为主键,这样性能好,也省事。

还有另一个关键细节。
一张表只能有一个主键。
无论是单列还是多列的组合,数据库都会报ERROR1 2 05 (重复定义)。
一开始我以为可以再加两个,后来发现错了。
我可以使用 SHOW CREATE TABLE 直接看到结果。

思考痕迹:等等,还有一件事。
如果表很大(比如3 000万+数据),添加主键就会锁表。
您可能需要等待半个多小时才能使用ALTER TABLE。
建议选择InnoDB引擎,它支持在线DDL(但在MySQL 8 .0之前,仍然必须使用pt-online-schema-change)。

结束:建议在添加主键之前使用pt-table-checksum对表进行备份,这样如果数据出现问题可以快速回滚。
但如果表的最初设计时没有考虑主键(比如使用UNIQUE INDEX代替),那么添加主键可能会降低写入性能,这是值得权衡的。

sqlyog如何设计主键自增的表?MySql教程

SQLyog设置主键自增表。
直接步骤如下:
1 .确保计算机已连接到 Internet 并安装 SQLyog。
2 . 打开SQLyog并连接到MySQL数据库。
3 .找到目标数据库,右键新建表。
4 . 输入主键字段名称,勾选主键和自增。
5 . 添加更多字段并取消选中自动增量。
6 . 单击创建表并输入表名称进行确认。
7 . 查看数据表,验证主键是否递增。

如何使用SQLyog创建数据库表

创建数据库表......老实说,非常简单。
如果您使用 SQLyog...这里是...
首先打开 SQLyogUltimate。
单击左上角的“连接”图标...输入您的服务器地址...输入您的用户名...密码...然后单击“连接”。
等待它连接...
连接后,向左看...将列出您的所有数据库。
单击“+”号展开您要操作的数据库。
有几张桌子,里面也有风景。

然后...右键单击“表”文件夹...并选择“创建表”。
将出现一个新窗口,表格设计界面。

首先,输入表名。
例如,“用户”。
然后单击“添加”按钮开始定义字段。

对于每个字段...必须输入字段名称...必须选择数据类型...例如,使用 INT 表示整数,使用 VARCHAR 表示文本...长度...不能为空或可以为空...必须选择。

主键...非常重要。
您可以通过单击该字段左侧的小钥匙图标将其设置为主键。
或者,您可以转到“索引”选项卡并进行设置。

如果此表应与另一个表相关...在“ForeignKeys”选项卡中设置外键。
例如,Users 表和Orders 表是相关的。

所有字段和约束均已完成。
单击右上角的 保存或按 Ctrl+S。
系统会提示您保存成功。
然后向左看……你会看到一个时钟。

我建议再次刷新...确保表确实已创建。
要再次查看结构​​...右键单击表名称...并选择“设计表”。

小心...对于日期字段使用DATE...对于文本使用VARCHAR...主键通常设置为NOTNULL...它也应该递增,就像AUTO_INCRMENT一样。

复杂的约束(例如唯一索引)在“索引”选项卡中单独处理。

就是这样...在 SQLyog 中创建一个表...只需几个步骤。