SQL 独特约束与主键约束:高阶玩法与实战案例

83 阅读4分钟

嘿,各位后端 MySQL 搬砖侠们!今天咱来唠唠 SQL 里的两个超重要角色 ——UNIQUE 约束和 PRIMARY KEY 约束。这俩家伙就像是数据库世界里的 “秩序维护者”,可别小瞧它们,玩得溜了能让你的数据库操作如丝般顺滑。

一、UNIQUE 约束:“独一无二的小傲娇”

UNIQUE 约束就像是个有洁癖的强迫症患者,它要求某一列或者多列组合的值必须是独一无二的。打个比方,假如你在管理一个超级英雄俱乐部的会员信息表,每个超级英雄的超能力名字就可以用 UNIQUE 约束。要是有两个英雄都叫 “飞天遁地侠”,那不乱套了嘛!

高阶用法

  1. 多列组合的 UNIQUE 约束:有时候,一列数据还不足以保证唯一性,这时候就可以把多列组合起来用 UNIQUE 约束。比如说,在一个电商订单表中,订单号肯定是唯一的,但如果我们想确保每个客户对每个商品只能下一次订单(避免重复下单),就可以对 “客户 ID” 和 “商品 ID” 这两列设置 UNIQUE 约束。就好像你去一家甜品店,店员要保证每个顾客对每种甜品只能点一份,这样才能保证秩序不乱。
  1. 与 NULL 值的关系:这里有个小陷阱哦!UNIQUE 约束允许列中有多个 NULL 值,因为在数据库的世界里,NULL 代表 “不知道”,它认为每个 NULL 都是不一样的 “不知道”。就好比在一个班级点名表中,那些没来上课的同学(NULL 值),老师会认为每个没来的原因都可能不同,所以可以有多个同学没来。

SQL 案例

创建一个员工表,要求员工的邮箱必须唯一:

CREATE TABLE Employees (
    EmployeeID INT AUTO_INCREMENT PRIMARY KEY,
    EmployeeName VARCHAR(255),
    Email VARCHAR(255) UNIQUE
);

插入数据时,如果违反了 UNIQUE 约束,就会像这样报错:

INSERT INTO Employees (EmployeeName, Email) VALUES ('张三', 'zhangsan@example.com');
INSERT INTO Employees (EmployeeName, Email) VALUES ('李四', 'zhangsan@example.com');
-- 第二条插入语句会报错,因为邮箱 'zhangsan@example.com' 已经存在

二、PRIMARY KEY 约束:“绝对的王者”

PRIMARY KEY 约束就像是数据库王国里的国王,它不仅要求列值唯一,而且还不能为 NULL。在一张表里,主键就像是每个人的身份证号,独一无二且不可或缺。

高阶用法

  1. 复合主键:当一列无法唯一标识每一行数据时,可以使用多列组成复合主键。比如在一个学生选课表中,“学生 ID” 和 “课程 ID” 单独都不能唯一确定一条选课记录,只有两者结合起来,才能唯一确定某个学生选了某门课程。这就好比你要在一个大型图书馆找一本书,光知道书名或者作者都不行,得书名和作者一起才能准确找到。
  1. 主键自增:通常我们会给主键设置自增属性,这样在插入新数据时,主键的值会自动依次递增。这就像你在排队买奶茶,店员会按照排队顺序给每个人一个唯一的号码牌,而且这个号码牌是依次增加的。

SQL 案例

创建一个学生表,以 “学生 ID” 为主键,且自增:

CREATE TABLE Students (
    StudentID INT AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(255),
    Age INT
);

插入数据时,不需要手动指定主键的值,数据库会自动帮你搞定:

INSERT INTO Students (StudentName, Age) VALUES ('王五', 20);
INSERT INTO Students (StudentName, Age) VALUES ('赵六', 22);
-- 查看表数据时,StudentID 会自动依次递增为 1, 2

三、两者的区别与联系

  1. 区别:PRIMARY KEY 约束不允许列中有 NULL 值,而 UNIQUE 约束允许有多个 NULL 值;一张表只能有一个 PRIMARY KEY,但可以有多个 UNIQUE 约束。可以把 PRIMARY KEY 想象成皇宫里的皇帝,独一无二且不能空缺;而 UNIQUE 约束就像是皇宫里各个宫殿的主管,每个宫殿的主管名字必须不同,但可以有一些暂时空缺的主管职位(NULL 值)。
  1. 联系:它们都用于确保数据的唯一性,在很多情况下,我们会先考虑使用 PRIMARY KEY 约束,如果某些列不需要像主键那样严格(允许 NULL 值),但又需要保证唯一性,就可以使用 UNIQUE 约束。

总结

UNIQUE 约束和 PRIMARY KEY 约束是数据库设计中非常重要的部分,掌握它们的高阶用法和巧妙运用案例,可以让你的数据库设计更加合理、高效。就像搭建一座坚固的城堡,这两个约束就是城堡的基石和城墙,守护着数据的完整性和一致性。希望大家在以后的数据库开发中,都能和这两位 “秩序维护者” 成为好伙伴,让数据库操作变得轻松又愉快!

#MySQL #SQL 约束 #数据库开发