primary key
用于标识主键,字段被设置为主键后该字段所有值不可重复且不能为null
,每个表仅可有一个主键。unique
设置字段不可重复,但不包括null
值,每张表可以有多个unique
字段,null
并不包括空值
。
简单来说primary key = unique + not null
。
一、用法
1.1 在创建表时创建约束
CREATE TABLE unique_primary_key_test(
id int PRIMARY KEY,
mobile VARCHAR(11) UNIQUE
);
1.2 已经创建好的表添加约束
ALTER TABLE unique_primary_key_test
add CONSTRAINT pk_id PRIMARY KEY (id) -- pk_id是主键名,id是字段名
ALTER TABLE unique_primary_key_test
add CONSTRAINT uk_mobile UNIQUE (mobile); -- uk_mobile是unique键名,mobile是字段名
二、案例
根据上面1.1
创建好测试表,执行测试:
INSERT into unique_primary_key_test(id, mobile) VALUES (1, "123456789");
INSERT into unique_primary_key_test(id, mobile) VALUES (2, "");
-- unique不能插入重复的非null数据:23000 Duplicate entry "" for key "mobile"
INSERT into unique_primary_key_test(id, mobile) VALUES (3, "");
-- unique字段可以出现重复的null
INSERT into unique_primary_key_test(id, mobile) VALUES (3, null);
INSERT into unique_primary_key_test(id, mobile) VALUES (4, null);
-- 主键插入null值报错:[23000][1048] Column "id" cannot be null
INSERT into unique_primary_key_test(id, mobile) VALUES (null, null);
一个表可以多个unique
字段:
-- 添加一个新字段,拥有unique约束
ALTER TABLE unique_primary_key_test
add COLUMN name VARCHAR(20) UNIQUE ;
-- 也可以使用以下方式添加
ALTER TABLE unique_primary_key_test
add COLUMN name VARCHAR(20);
ALTER TABLE unique_primary_key_test
add CONSTRAINT uk_name UNIQUE (name);
此处评论已关闭