百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql多字段独一束缚
分享文章到:

mysql多字段独一束缚

发布时间:08/01 来源:未知 浏览: 关键词:
MySQL独一束缚(UniqueKey)请求该列独一,允许为空,但只能涌现一个空值。独一束缚可以确保一列或者几列不涌现反复值。在建表时运用UNIQUEKEY`UK_praise`(字段1....字段n),来新建多字段独一束缚。 MySQL独一束缚(Unique Key)请求该列独一,允许为空,但只能涌现一个空值。独一束缚可以确保一列或者几列不涌现反复值。

在新建表时设定独一束缚

在定义完列之后直接运用 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多字段独一束缚的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板