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中final是修饰符么_Java final修饰符详解

final 在 Java 中的意思是最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变。使用 final 关键字声明类、变量和方法需要注意以下…

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)的一种实现方式。我们先来看看什么是控制反转。当调用者需要被调用者的协助…

php点加等于0,php 做数学运算时结果为0的原因

MSSQL—字符串分离(Split函数)前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分离,大家肯定会想到SPLIT函数,这个在.NET,Java和JS中都有函数,很可惜在SQL SERVER中没有,我们只能自己来写这么一个 ...更好的使用chromeCtrltab 在标…

php守护进程内存溢出,$serv-close($fd); 服务端主动断开客户端有问题!

core > array(reactor_num > 2, // 线程数. 一般设置为CPU核数的1-4倍worker_num > 16, // 工作进程数量. 设置为CPU的1-4倍最合理max_request > 0, // 防止 PHP 内存溢出, 一个工作进程处理 X 次任务后自动重启 (注: 0,不自动重启)max_conn > 10000, // 最大连…

apache php显示成列表,centos中设置apache显示目录列表

miniui中常用的状态显示方式1.查询sys_code表得到对应的状态 考生状态:oracle中文显示为问号在用PL/sql查询时,中文显示为问号.经查证,发现问题为oracle字符集不支持中文导致的.修改oracle字符集,改为支持中文即可. 方法: 第一步:修改注册表. 开始-运行-输入regedit- ...PHP&am…

php 反射对象属性,php面向对象之反射功能的用法详解

这篇文章主要介绍了php面向对象之反射功能与用法,结合实例形式简单分析了php5面向对象反射的概念及具体用法,需要的朋友可以参考下本文实例讲述了php面向对象之反射功能与用法。分享给大家供大家参考,具体如下:个人对反射定义的理解:首先得说…

mac php errorlog,Mac下使用php的error_log()函数发送邮件

在开发web项目或者其他场景下,有时候我们需要设置“报警”。比如当数据库的某一项指标达到某一个值时,需要通知网站管理员。今天跟大家分享一个比较简单的php报警的功能。先介绍一个php中用来记录log的一个函数error_log,它用来发送错误到某个地方。函数…

matlab 数值格式转换,Matlab字符串转换及数值格式转换

Matlab字符串转换及数值格式转换字符串转换函数abs 字符串到ASCII转换dec2hex 十进制数到十六进制字符串转换fprintf 把格式化的文本写到文件中或显示屏上hex2dec 十六进制字符串转换成十进制数hex2num 十六进制字符串转换成IEEE浮点数int2str 整数转换成字符串lower 字符串转换…

matlab算hht,关于MATLAB中HHT谱图的问题【百度知道悬赏100积分】

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼附上MATLAB内置的hht绘图函数hhtPlot.m的代码:classdef hhtPlotpropertieshfigendmethodsfunction [this] hhtPlot(insFreq, insEnergy, tvec, FRange, MinThres, FreqLoc, isNormFreq)isYAxis strcmpi(FreqLoc,yaxis…

基于matlab的彩色图像分割,彩色图像分割MATLAB

【实例简介】基于HSV彩色空间的图像分割,包含测试图片,MATLAB源程序,可以参考一下【实例截图】【核心代码】彩色图像分割└── 基于matlab的彩色图像的分割算法└── 公园与青椒的彩色图像分割├── pcnnseg│ └── PCNN彩色图像分割│…

ecshop api.php,ecshop2.72 api.php 文件鸡肋注入

/api.php.........................switch ($_POST[act]){case search_goods_list: search_goods_list(); break;//............................default: api_err(0x008, no this type api); //输出系统级错误:数据异常}.........................function search_goods_list(…

matlab 求解进度,报告测试运行进度的插件

在工作文件夹下的文件中,创建一个名为 cylinderPlotTest 的基于函数的测试。function tests cylinderPlotTesttests functiontests(localfunctions);endfunction setupOnce(testCase)testCase.TestData.Figure figure;addTeardown(testCase,close,testCase.TestD…

php 不喜欢用对象,为什么PHP不在其默认库中使用对象?

我已经用PHP编写了半年多的时间,虽然我还远没有成为一名专家,但我可以很容易地解决问题,并根据我的需要编写脚本.我来自面向对象的背景,这似乎是PHP在其默认库中使用的很少(如果有的话).我使用或创建的大多数外部库都使用面向对象的设计,而默认设置似乎使用下一个示例.我将使用…

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整体…

java终结者,动态语言是否会成为JAVA的终结者?

节选自《程序员》2006年第9期《茶杯里的风暴》一文,作者:金尹。如下:P2P网络向传统应用的渗透,将对Ruby、Python这些新兴的编程语言提出巨大的挑战。首先在P2P网络中单个运算节点上的程序并不需要像Web服务那样保持&am…