在本教程中,我们将学习SQL的唯一约束以及如何确保指定的列中没有重复的值。
唯一约束用于确保指定的列(不是主键列)中没有重复的值。一个表只能有一个主键约束,但是可以有多个唯一约束。与主键约束不同,可以为具有唯一约束的列输入空值NULL。但是,只允许一个空值NULL。
可以使用CREATE TABLE或ALTER TABLE语句在表的一列或多列上创建唯一约束。
考虑以下用户表user:
它有一个userid列作为主键,唯一地定义表中的每一行。但是,用户名必须是唯一的,以便系统能够在两个用户登录时进行区分。要强制用户名的唯一性,可以额外创建一个唯一约束,如下所示:
CREATE
TABLE
users (
userid
int
(11)
NOT
NULL
AUTO_INCREMENT,
username
varchar
(25)
DEFAULT
,
password
firstname
(45)
lastname
created
date
email
(255)
PRIMARY
KEY
(userid),
UNIQUE
(username)
)
如果您尝试输入用户名重复的一行,数据库系统将发出错误消息。
用户的电子邮件也必须是唯一的,以便当系统发出任何通知时,相应的用户将收到它。同时还可以防止一个具有相同电子邮件地址的用户在系统中创建多个帐户。您可以添加一个唯一的约束来强制执行此操作。
为了方便,SQL允许您为多个列定义一个唯一的约束,要定义多个列上的唯一约束,我们将用逗号分隔的字段列表放在UNIQUE关键字后面的括号内。如下所示:
CONSTRAINT
user_info
(username,email)
这将确保用户名和电子邮件值对在用户表中是唯一的。
注意,我们使用CONSTRAINT关键字为惟一约束进行命名。如果需要,我们可以使用这个名称来删除唯一约束。
还可以使用ALTER table语句向现有表添加唯一约束。
例如,下面的语句为用户名和电子邮件这两列添加了惟一约束。
ALTER
users
ADD
(username, email)
要删除现有的唯一约束,您还可以使用如下的ALTER TABLE语句:
table_name
DROP
constraint_name
例如,要删除我们在上面例子中创建的user_info唯一约束,我们可以使用以下命令:
原文链接:https://codingdict.com/