primary key
用于标识主键,字段被设置为主键后该字段所有值不可重复且不能为null
,每个表仅可有一个主键。unique
设置字段不可重复,但不包括null
值,每张表可以有多个unique
字段,null
并不包括空值
。
简单来说primary key = unique + not null
。
一、用法
1.1 在创建表时创建约束
1 2 3 4 |
CREATE TABLE unique_primary_key_test( id int PRIMARY KEY, mobile VARCHAR(11) UNIQUE ); |
1.2 已经创建好的表添加约束
1 2 3 4 |
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
创建好测试表,执行测试:
1 2 3 4 5 6 7 8 9 10 11 12 |
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
字段:
1 2 3 4 5 6 7 8 9 |
-- 添加一个新字段,拥有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); |
评论