主键是表里身份唯一的身份证,外键是串门找关系的通行证。简单说,主键负责标识一条数据是不是唯一的,而外键是负责让两个表之间扯上关系的。比如学生表里的学号一般是主键,成绩表里的学号就成了外键,用来关联到学生信息。嗯,写 SQL 时这俩的用法不一样,主键不能重复也不能为空,而外键得在另一个表里能找到相同的值才行。系统还会给主键自动建索引,查询的时候贼快。

还有个点蛮多人容易搞混:唯一键和主键长得挺像,但它可以有空值,主键不行;而且唯一键一个表能设好几个,主键只能有一个。别问为什么,就这么设的。

你要是经常写 SQL,左联接右联接也挺常见。LEFT JOIN是把左表的都留着,右边找得到就连上,找不到就补个NULLRIGHT JOIN就是反过来。写报表、查历史数据的时候管用。

数据库设计里,主外键真的关键。设计得好,后面维护和查询都省事。要是你经常建表,不妨多用点主键约束,数据完整性更好。

推荐几个蛮有参考价值的资源,有时间可以看看:

如果你正好在优化查询、做数据建模,那主键和外键的设计可别马虎。