Sql 简明教程
SQL - Unique Key
The SQL Unique Key
SQL Unique Key (或,唯一约束)不允许表中的列有重复的值。它防止两条记录在某一列上具有相同的值。
假设我们有一个名为 CUSTOMERS 的表,用于存储银行中的客户记录,如果列名称之一为 MOBILE_NO,那么可在此列上创建唯一约束,以防止输入多个具有相同移动号码的记录。
Creating SQL Unique Key
可以使用 SQL 中的 UNIQUE 关键字在数据库表上创建唯一键。在创建数据库表时,指定此 SQL 关键字以及要在此列中定义键的列。
Syntax
以下是在表中的列上创建唯一键约束的语法:
CREATE TABLE table_name(
column1 datatype UNIQUE KEY,
column2 datatype,
.....
.....
columnN datatype
);
Example
使用以下 SQL 查询,我们在其中创建了一个名为 CUSTOMERS 的表,其中有五个字段:ID、NAME、AGE、ADDRESS 和 SALARY。在此,我们在 ID 列上创建了唯一键。
CREATE TABLE CUSTOMERS (
ID INT NOT NULL UNIQUE KEY,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2)
);
Verification
由于我们在名为 ID 的列上创建了唯一约束,因此我们不能在其中插入重复的值。让我们通过向 CUSTOMERS 表中插入具有重复 ID 值的以下记录进行验证:
INSERT INTO CUSTOMERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(1, 'Khilan', 25, 'Delhi', 1500.00 );
执行后,显示了以下错误,证明 UNIQUE 约束确实在 ID 列中定义:
ERROR 1062 (23000): Duplicate entry '1' for key 'customers.ID'
Multiple Unique Keys
我们可以在 SQL 表中的一个或多个列上创建唯一键。
Syntax
以下是在表的多个列上创建唯一键约束的语法:
CREATE TABLE table_name(
column1 datatype UNIQUE KEY,
column2 datatype UNIQUE KEY,
.....
.....
columnN datatype
);
Example
假设我们在 SQL 数据库中使用 CREATE TABLE 语句创建了一个名为 CUSTOMERS 的表。使用 UNIQUE 关键字在 ID 和 NAME 列上定义唯一键,如下所示:
CREATE TABLE BUYERS (
ID INT NOT NULL UNIQUE KEY,
NAME VARCHAR(20) NOT NULL UNIQUE KEY,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2)
);
Verification
由于我们在名为 ID 和 NAME 的列上创建了 UNIQUE 约束,因此我们不能向其插入重复值。让我们通过使用以下 INSERT 语句向 BUYERS 表中插入重复记录来验证:
INSERT INTO BUYERS VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(1, 'Rajesh', 25, 'Delhi', 1500.00 );
显示了以下错误 −
ERROR 1062 (23000): Duplicate entry '1' for key 'customers.ID'
同样,如果你尝试为 NAME 列插入另一个重复值记录,则为:
INSERT INTO BUYERS VALUES (2, 'Ramesh', 36, 'Chennai', 1700.00 );
生成以下错误:
ERROR 1062 (23000): Duplicate entry 'Ramesh' for key 'buyers.NAME'
Unique Key on an Existing Column
到目前为止,我们只看到如何在创建新表时为列定义唯一键。但是,我们还可以在表的现有列上添加唯一键。这通过 ALTER TABLE… ADD CONSTRAINT 语句完成。
Syntax
以下是在表的现有列上创建唯一约束的语法:
ALTER TABLE table_name ADD CONSTRAINT
UNIQUE_KEY_NAME UNIQUE (column_name);
Note - 在此处,UNIQUE_KEY_NAME 只是 UNIQUE KEY 的名称。指定它是可选的,用于从表中的列中删除约束。