MySQL中添加惟一约束和联合惟一约束

<div class="htmledit_views" id="content_views">html

<p><span style="font-size:18px;"><br></span></p> <p><span style="font-size:18px;"><span></span>在MySQL数据库中,常常会碰到因为业务须要添加惟一键约束,惟一键约束,能够在一个列上添加约束,也能够在多个列上添加惟一约束。</span></p> <p><span style="font-size:18px;"><br></span></p> <p><span style="font-size:18px;"><span></span><strong>1、单列惟一约束</strong></span></p> <p><span style="font-size:18px;"><span></span>在一列上添加惟一约束,主要是让该列在表中只能有惟一的一行,例如注册邮箱时的邮箱名、手机号等信息,相关操做以下:</span></p> <p></p> <pre style="color:rgb(51,51,51);line-height:26px;"><span style="font-size:18px;">1.建表时加上惟一性约束:</span></pre> <span style="font-size:18px;">CREATE TABLE `t_user` (<br> &nbsp; &nbsp; `Id` int(11) NOT NULL AUTO_INCREMENT,&nbsp;<br> &nbsp; &nbsp; `username` varchar(18) NOT NULL unique,&nbsp;<br> &nbsp; &nbsp; `password` varchar(18) NOT NULL,&nbsp;<br> &nbsp; &nbsp; PRIMARY KEY (`Id`)&nbsp;<br> ) ENGINE=InnoDB AUTO_INCREMENT=1018 DEFAULT CHARSET=gbk;&nbsp;<br></span> <p></p> <p><span style="font-size:18px;"><br></span></p> <p><span style="font-size:18px;">2.<span style="color:rgb(51,51,51);line-height:26px;">给已经建好的表加上惟一性约束:</span></span></p> <p><span style="font-size:18px;">ALTER TABLE `t_user` ADD unique(`username`);<br></span></p> <p><span style="font-size:18px;">或者:</span></p> <p><span style="font-size:18px;">create unique index UserNameIndex on 't_user' ('username');<br></span></p> <p><span style="font-size:18px;"><br></span></p> <p><span style="font-size:18px;"><span></span><strong>2、多列联合惟一约束</strong></span></p> <p><span style="font-size:18px;">若是业务中要求两个字符联合起了是惟一的,好比“地址”+“名称”是惟一的,这就须要对两列,甚至多列添加联合惟一约束,具体命令以下:</span></p> <p><span style="font-size:18px;"><span></span>1.确认表结构</span></p> <p><span style="font-size:18px;">mysql&gt; <span style="color:#ff0000;">show create table jw_resource;</span></span></p> <p><span style="font-size:18px;">FIELD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TYPE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;COLLATION &nbsp; &nbsp; &nbsp; NULL &nbsp; &nbsp;KEY &nbsp; &nbsp; DEFAULT &nbsp;Extra &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PRIVILEGES &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;COMMENT<br> ------------- &nbsp;------------ &nbsp;-------------- &nbsp;------ &nbsp;------ &nbsp;------- &nbsp;-------------- &nbsp;-------------------- &nbsp;-------<br> id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BIGINT(20) &nbsp; &nbsp;(NULL) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NO &nbsp; &nbsp; &nbsp;PRI &nbsp; &nbsp; (NULL) &nbsp; AUTO_INCREMENT &nbsp;SELECT,INSERT,UPDATE &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br> resource_name &nbsp;VARCHAR(128) &nbsp;gbk_chinese_ci &nbsp;YES &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (NULL) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SELECT,INSERT,UPDATE &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br> resource_type &nbsp;TINYINT(4) &nbsp; &nbsp;(NULL) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;YES &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (NULL) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SELECT,INSERT,UPDATE&nbsp;<br><br><br><span></span>2.给resource_name和resource_type添加联合惟一约束:</span></p> <p><span style="font-size:18px;">mysql&gt;<span style="color:#ff0000;"> show index from jw_resource;</span></span></p> <p><span style="font-size:18px;">mysql&gt;<span> </span><span style="color:#ff0000;">ALTER TABLE jw_resource<br> ADD UNIQUE KEY(resource_name, resource_type);</span><br><br><br><span></span>3.确认表结构添加约束后结果:</span></p> <p><span style="font-size:18px;">mysql&gt; &nbsp;<span style="color:#ff0000;">show create table jw_resource;</span><br> CREATE TABLE `jw_resource` (<br> &nbsp; `id` BIGINT(20) NOT NULL AUTO_INCREMENT,<br> &nbsp; `resource_name` VARCHAR(128) DEFAULT NULL,<br> &nbsp; `resource_type` TINYINT(4) DEFAULT NULL,<br> &nbsp; PRIMARY KEY (`id`),<br><strong>&nbsp; UNIQUE KEY `resource_name` (`resource_name`,`resource_type`)</strong><br> ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;</span></p> <p><span style="font-size:18px;"><span></span>mysql&gt; <span style="color:#ff0000;"> show index from jw_resource;</span></span></p> <p><span style="font-size:18px;"><span></span><strong><span style="color:#ff0000;">注意:</span></strong>惟一键约束添加后,在建表的元数据中,默认的惟一键约束名称为第一列的名称。<br><br><span></span>4.添加约束后,进行插入测试效果:</span></p> <p><span style="font-size:18px;">msyql&gt; INSERT INTO&nbsp;`jw_resource`(`resource_name`,'resource_type') values('aa','11');</span></p> <p><span style="font-size:18px;">msyql&gt; INSERT INTO&nbsp;`jw_resource`(`resource_name`,'resource_type') values('aa','22');</span></p> <p><span style="font-size:18px;">msyql&gt; INSERT INTO&nbsp;`jw_resource`(`resource_name`,'resource_type') values('bb','11');</span></p> <p><span style="font-size:18px;">msyql&gt; INSERT INTO&nbsp;`jw_resource`(`resource_name`,'resource_type') values('aa','11');<br><br><span></span>5.删除惟一约束<br> mysql&gt; <span style="color:#ff0000;"><strong>ALTER TABLE&nbsp;jw_resource&nbsp;DROP INDEX&nbsp;`resource_name`;</strong></span><br></span></p> <p><span style="font-size:18px;">mysql&gt;<span style="color:#ff0000;"> show index from jw_resource;</span></span></p> <p><span style="font-size:18px;"><span></span><strong><span style="color:#ff0000;">注意:</span></strong>惟一键约束添加后,实际上创建了一个索引,将该索引删除后,就等于删除了联合惟一约束。</span></p> <p><br></p> 原文地址:https://blog.csdn.net/yumushui/article/details/38960619 </div>mysql

相关文章
相关标签/搜索