mysql 唯一约束 多字段_mysql多字段唯一约束

MySQL唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

00f04d11b925f8cc0e266d67ca27837f.png

在创建表时设置唯一约束

在定义完列之后直接使用 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 (,...,)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`)

)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里顺时针的顺序打印出每一个数字。测试用例如下图:测试数组思路分析这道题目并不难,关键在于边界控制!每一层遍历均从左上角开始,逐层往里完成遍历。Java代码实现/*** 由外向内顺时针打…

java程序表头出不来_JAVA SWING 表头不显示问题

Cats萌萌说明: JScrollPane 也是组件, 你需要把滚动面板也添加到你的布局里.由于你的布局是绝对布局setLayout(null); 那么你还需要为JScrollPane 设置大小和位置效果图参考代码1234567891011121314151617181920212223import javax.swing.*; public class FrameDemo extends JF…

php红色字体颜色,php生成文字颜色渐变 高级用法

项目描述:因为要做打印的产品价格贴,需要美观度,产品名字需要颜色渐变。这里非常感谢ThinkPHP 峰会4 里面的大神们。 [厦门]伍拾步 [上海]beyond [江苏]囧NC 【浙江】幸福 泰安sunny有兴趣的可以加入哦 群号43321338效果图展示$txt"祝群…

php 依赖注入框架,依赖注入模式(Dependency Injection)

依赖注入模式(Dependency Injection)由 学院君 创建于5年前, 最后更新于 10个月前版本号 #318333 views16 likes0 collects1、模式定义依赖注入(Dependency Injection)是控制反转(Inversion of Control)的一种实现方式。我们先来看看什么是控制反转。当调用者需要被调用者的协助…

java bit mask,【JDK源码剖析】Java数值类型的包装类

概述Java是一种强类型语言,必须为每一种变量声明一种类型.在Java中一共有8种基本类型(primitive type),其中有4中整型,2种浮点类型,1中用于表示Unicode编码的字符单元的字符类型char和一种用于真值表示的boolean类型之前曾写过几篇博文这些博文大都是在JVM或者计算机组成原理相…

_Linux 服务器存在某进程 CPU 过高如何追溯其问题根源?

问题描述:在本人运维的一个省级平台系统中,最近有用户反应系统很卡一直转圈圈. 经初步核查发现某web服务器节点存在JAVA进程cpu占比超过100%的情况。为了不影响用户使用,暂时只能采取简单粗暴的方法"重启服务器"。这其中有如下2个疑…

大数乘加运算然后取模 c++_脚本语言系列之Java | Java中的运算符

本文主要介绍java中的常见运算符,如算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符等。一、几个概念int a 3 4; 、就是操作符,是算术运算符,我们还有其他很多的运算符 3,4就是参与运算的操作数 3 4整体…

visio形成数据字典_入职数据产品经理第一天,同事问了我3个问题

什么是数据产品经理?数据产品经理有什么能力要求?数据产品经理的未来发展什么?文章围绕这三个问题进行陈述分析,希望看完能对你有所帮助。最近,前同事老曹跳槽到去了一家初具规模的互联网公司,作为刚入职公…

电脑硬盘内存不足怎么办_电脑内存不足怎么办?三招帮你轻松解决

熟悉PC硬件的小伙伴都知道,内存相对于电脑来说是一个相当重要的部件,内存可以说是相当于CPU的“工作室”,因为PC所有运行的程序都是在内存中运行,它决定了多少、多大的程序能即时运行,如若执行程序过大或者过多就会导致…

ad敷铜后还有部分飞线_种草!车厘子红组合高柜,除了颜美,还有什么好?

最近上新君在AD线下体验店遇到个忍不住一定要推荐的牌子~它是谁呢?卖个关子猜一猜:「家居达人等级测试」开始⏰「线索一」线下店进门右手边这组红色柜子👆「线索二」它是乐高“母国”丹麦的收纳家具品牌,花了37年,就做…

宝塔php开启zip组建,宝塔面板如何开启php扩展

宝塔面板如何开启php扩展?宝塔面板的PHP安装路径为/www/server/php/ 且支持多个PHP版本共存,所以,安装PHP扩展的方法与网上那些示例略有不同。下们通过安装oauth扩展来说明一下如何安装第三方PHP扩展。安装之前,请先到软件列表 –…

win7局域网共享设置_分享几个简单实用的局域网共享设置工具

发现很多朋友对于局域网共享设置都不是很熟悉,特别是现在Windows 10已经越来越普遍,很多用户可能熟悉Windows XP、Winodws7的文件共享、打印机共享比较熟悉,但是一到Windows是就感觉懵逼了!确实Windows 10在共享权限设置这块需要更…

dataframe保存为txt_TxtToMy下载-TxtToMy((txt导入myql数据库))v3.7免费版

TxtToMy是一个数据转换软件,帮助数据库用户导入CSV (TXT)数据到MySQL数据库。用户能够通过TxtToMy更好地将文本(csv)文件数据导入Mysql,十分实用,感兴趣的用户可以自行下载体验。基本简介TxtToMy(txt导入myql数据库)是一款十分优秀的TXT导入到…

外星人台式电脑_推荐|外星人笔记本、主机、台式电脑多少钱?(价格)到底怎么样呢?(双十一)...

自外星人电脑爆火至今,关于它的争议就一直没有断过。有人说外星人电脑是超好用的高配电脑,也有人说买外星人电脑的都是人傻钱多,前段时间我还看到有人还因为这个问题吵了起来。说实话,这真的没有吵架的必要。每个人的消费观念不同…

bpmn流程图_几款流程图制作工具

在流程设计、思路展示、网络布线、工作汇报、简介说明、设计程序等工作中,都少不了要用流程图来形象清晰地说明问题。因此,我们经常需要易用的流程图软件来帮助我们绘制流程图,今天,小编就在这里介绍几款流程图软件。Microsoft Vi…

gdb 没有那个文件或目录_阿黛尔暴瘦变回粉丝喜爱的那个她,依然那样楚楚动人...

阿黛尔(Adele)在《第六夜现场》(Saturday Night Live)主持中首次亮相,穿搭风格再次让人眼前一亮参加15届格莱美奖得主阿黛尔出生于伦敦,已经32岁了,她的R&B音乐获得了两项格莱美奖,在获奖后在表示,她真的不敢相信她…

iphonex售价_库克也非常无奈!颁发新规后:依旧未能阻止苹果12的售价大跳水

【11月2日讯】相信大家都知道,苹果在发布了iPhone 12系列手机之后,为了改变以往iPhone手机首发售价就“破发”的尴尬局面,也是直接颁发了新规,限制了国内补贴力度最强的某电商平台—某多多,试图通过重新掌控供应链渠道…

鼠标连点器电脑版_最值得买的鼠标垫推荐-最佳长款桌垫鼠标垫排行榜【2020年10月】...

超大鼠标垫可以将键盘、鼠标都垫着,大而厚实,操作电脑时更方便,不会出现鼠标垫不够用的情况,而且超大鼠标垫还可作为桌垫,美观大方,适合在家使用。今天给大家推荐最佳长款桌垫鼠标垫排行,希望对大家选购鼠标垫有帮助。第一名 美商海盗船|MM300战场风桌垫海盗船的产品…

superoneclick 2.2_减排二氧化碳2.2万吨!“电能替代”助安吉传统产业绿色转型

近日,安吉县孝丰镇丰缘茶场的茶农夏亚红联系上了国网安吉县供电公司的工作人员,希望对方再来指导一下新安装设备的使用和操作。作为安吉县“节能贷”的用户,夏亚红成为该公司推出的茶农专变新服务的首位受益人,她坦言明年炒茶旺季…

c# spire.xls 设置文字为微软雅黑_只要一分钟,给你的PPT文字加上拼音和声调

每天下午一点,PPT技能进步一点做PPT时必不可少的一项就是字体使用合适的字体可以让我们的PPT更加美观见惯了满屏幕的宋体和微软雅黑你也许想要尝试一下其他的方式来装点的文字何不用拼音?都知道在一些低年级的PPT中会给文字添加拼音相信很多看过语文老师…