首页 > 代码库 > MySql -- UNIQUE唯一约束
MySql -- UNIQUE唯一约束
3、UNIQUE 约束
约束唯一标识数据库表中的每条记录。
创建一张测试表:
CREATE TABLE `test`.`info`( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `idCard` VARCHAR(18) UNIQUE NOT NULL, -- 直接在字段上添加唯一约束 `mobile` VARCHAR(11), PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_estonian_ci;
添加唯一约束UNIQUE:
/* 除了上面的添加唯一约束的方法以外, 如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,写法如下: uc_idCard约束由mobile和idCard组合成唯一约束。 */ CREATE TABLE `test`.`info`( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `idCard` VARCHAR(18) UNIQUE, `mobile` VARCHAR(11), PRIMARY KEY (`id`), CONSTRAINT uc_idCard UNIQUE (mobile,idCard) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_estonian_ci; 如果在存在表的情况下,添加唯一约束
-- 无名字的约束 ALTER TABLE `info` ADD UNIQUE (`idCard`);
-- uc_idCard约束由mobile和idCard组合成唯一约束 ALTER TABLE `info` ADD CONSTRAINT uc_idCard UNIQUE (mobile,idCard);
撤销 UNIQUE 约束
-- 移除指定字段的约束 ALTER TABLE `info` DROP INDEX `idCard`; -- 移除有名字的约束 ALTER TABLE `info` DROP INDEX uc_idCard;
向 UNIQUE 约束添加数据:
-- 添加一条基础数据 INSERT INTO `info`(`idCard`,`mobile`) VALUES(‘99999‘,‘1111‘); -- 添加一条idCard重复的记录 INSERT INTO `info`(`idCard`,`mobile`) VALUES(‘99999‘,‘2222‘); 结果: 错误代码: 1062 DUPLICATE entry ‘99999‘ FOR KEY ‘idCard‘; -- 在唯一约束中添加 NULL INSERT INTO `info`(`idCard`,`mobile`) VALUES(NULL,‘1111‘); -- 再次添加NULL INSERT INTO `info`(`idCard`,`mobile`) VALUES(NULL,‘2222‘); 结果: id idCard mobile ------------------------- 6 (NULL) 1111 7 (NULL) 2222
原因:因为 NULL != NULL
MySql -- UNIQUE唯一约束
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。