mysql多字段独一束缚
在新建表时设定独一束缚
在定义完列之后直接运用 UNIQUE 关键字指定独一束缚,语律例则如下:
<字段名> <数据类型> UNIQUE
新建数据表 tb_dept2,指定部门的名称独一,输入的 SQL 语句和运转效果如下所示。
mysql> CREATE TABLE tb_dept2 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(22) UNIQUE, -> location VARCHAR(50) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_dept2; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(40) | YES | UNI | NULL | | | location | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.08 sec)
提醒:UNIQUE 和 PRIMARY KEY 的区别:一个表可以有多个字段声明为 UNIQUE,但只能有一个 PRIMARY KEY 声明;声明为 PRIMAY KEY 的列不允许有空值,但是声明为 UNIQUE 的字段允许空值的存在。
在修改表时增加独一束缚
在修改表时增加独一束缚的语法格局为:
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
修改数据表 tb_dept1,指定部门的名称独一,输入的 SQL 语句和运转效果如下所示。
mysql> ALTER TABLE tb_dept1 -> ADD CONSTRAINT unique_name UNIQUE(name); Query OK, 0 rows affected (0.63 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_dept1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(22) | NO | UNI | NULL | | | location | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
假如有一个需求是会员给评价点赞,数据库设计是三张表,会员表t_user,评价表t_comment,点赞表t_praise,其中点赞表中有两个外键离别是user_id和comment_id,离别关联会员表的会员id和评价表的评价id,然后规定一个会员只能给统一条评价点赞一次,有一种实现方式就是在插入点赞表以前,先通过user_id和comment_id查询可否有点赞记载,要是没有的话,再施行插入操纵,不然返回您已经点过赞了.这样实现的话就会多一次数据库查询操纵.更好的实现是,修改点赞表的user_id和comment_id为独一束缚,即这两列不克不及同时雷同,这样在施行插入操纵的话,要是已经点过赞了,数据库会抛出违背了独一键束缚,这样的话,就可以以免多一次数据库查询操纵了.概括设定多列为独一束缚的语句是:
UNIQUE KEY <唯一约束名>(<列名>,...,<列名n>)
CREATE TABLE `t_praise` ( `id` int(12) unsigned NOT NULL AUTO_INCREMENT, `comment_id` int(12) NOT NULL, `user_id` int(12) NOT NULL, KEY `FK_t_praise_comment` (`comment_id`), KEY `FK_t_praise_user` (`user_id`), UNIQUE KEY `UK_praise` (`comment_id`,`user_id`) )
以上就是mysql多字段独一束缚的细致内容,更多请关注 百分百源码网 其它相干文章!