写点什么

SQL PRIMARY KEY 约束 - 唯一标识表中记录的关键约束

作者:小万哥
  • 2023-12-09
    广东
  • 本文字数:2159 字

    阅读完需:约 7 分钟

SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束

SQL NOT NULL 约束

SQL NOT NULL 约束用于强制确保列不接受 NULL 值。这意味着该字段始终包含一个值,而不允许插入新记录或更新记录时不提供此字段的值。

在 CREATE TABLE 时使用 SQL NOT NULL

以下 SQL 确保在创建 "Persons" 表时,“ID”、“LastName” 和 “FirstName” 列将不接受 NULL 值:


CREATE TABLE Persons (    ID int NOT NULL,    LastName varchar(255) NOT NULL,    FirstName varchar(255) NOT NULL,    Age int);
复制代码

在 ALTER TABLE 时使用 SQL NOT NULL

要在已创建的 "Persons" 表上的 "Age" 列上创建 NOT NULL 约束,使用以下 SQL:

对于 SQL Server / MS Access:

ALTER TABLE PersonsALTER COLUMN Age int NOT NULL;
复制代码

对于 MySQL / Oracle(10G 之前的版本):

ALTER TABLE PersonsMODIFY COLUMN Age int NOT NULL;
复制代码

对于 Oracle 10G 及更高版本:

ALTER TABLE PersonsMODIFY Age int NOT NULL;
复制代码


通过这些 SQL 语句,您可以确保指定列不会包含 NULL 值,从而增强数据的完整性。

SQL UNIQUE 约束

SQL UNIQUE 约束确保列中的所有值都是不同的。UNIQUEPRIMARY KEY 约束都为列或一组列提供了唯一性的保证。PRIMARY KEY 约束自动具有 UNIQUE 约束。每个表只能有一个 PRIMARY KEY 约束,但可以有多个 UNIQUE 约束。

在 CREATE TABLE 时使用 SQL UNIQUE 约束

以下 SQL 在创建 "Persons" 表时在 "ID" 列上创建了一个 UNIQUE 约束:

对于 SQL Server / Oracle / MS Access:

CREATE TABLE Persons (    ID int NOT NULL UNIQUE,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int);
复制代码

对于 MySQL:

CREATE TABLE Persons (    ID int NOT NULL,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int,    UNIQUE (ID));
复制代码


要为 UNIQUE 约束命名,并在多列上定义 UNIQUE 约束,请使用以下 SQL 语法:

对于 MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons (    ID int NOT NULL,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int,    CONSTRAINT UC_Person UNIQUE (ID, LastName));
复制代码

在 ALTER TABLE 时使用 SQL UNIQUE 约束

要在表已经创建的情况下在 "ID" 列上创建 UNIQUE 约束,请使用以下 SQL:

对于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD UNIQUE (ID);
复制代码


要为 UNIQUE 约束命名,并在多列上定义 UNIQUE 约束,请使用以下 SQL 语法:

对于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD CONSTRAINT UC_Person UNIQUE (ID, LastName);
复制代码

删除 UNIQUE 约束

要删除 UNIQUE 约束,请使用以下 SQL:

对于 MySQL:

ALTER TABLE PersonsDROP INDEX UC_Person;
复制代码

对于 SQL Server / Oracle / MS Access:

ALTER TABLE PersonsDROP CONSTRAINT UC_Person;
复制代码


通过这些 SQL 语句,您可以在数据库中定义和管理 UNIQUE 约束,以确保列中的数据唯一性。

SQL PRIMARY KEY 约束

SQL PRIMARY KEY 约束唯一标识表中的每条记录。主键必须包含唯一的值,并且不能包含 NULL 值。一个表只能有一个主键;在表中,这个主键可以由单个列(字段)或多个列(字段)组成。

在 CREATE TABLE 时使用 SQL PRIMARY KEY

以下 SQL 在创建 "Persons" 表时在 "ID" 列上创建了一个 PRIMARY KEY

对于 MySQL:

CREATE TABLE Persons (    ID int NOT NULL,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int,    PRIMARY KEY (ID));
复制代码

对于 SQL Server / Oracle / MS Access:

CREATE TABLE Persons (    ID int NOT NULL PRIMARY KEY,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int);
复制代码


要允许对主键约束进行命名,并定义在多列上的主键约束,请使用以下 SQL 语法:

对于 MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons (    ID int NOT NULL,    LastName varchar(255) NOT NULL,    FirstName varchar(255),    Age int,    CONSTRAINT PK_Person PRIMARY KEY (ID, LastName));
复制代码


注意: 在上面的示例中只有一个 PRIMARY KEYPK_Person)。然而,主键的值由两个列(ID + LastName)组成。

在 ALTER TABLE 时使用 SQL PRIMARY KEY

要在表已经创建的情况下在 "ID" 列上创建主键约束,请使用以下 SQL:

对于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD PRIMARY KEY (ID);
复制代码


要允许对主键约束进行命名,并定义在多列上的主键约束,请使用以下 SQL 语法:

对于 MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE PersonsADD CONSTRAINT PK_Person PRIMARY KEY (ID, LastName);
复制代码


注意: 如果使用 ALTER TABLE 添加主键,则主键列必须在创建表时声明为不包含 NULL 值。

删除 PRIMARY KEY 约束

要删除主键约束,请使用以下 SQL:

对于 MySQL:

ALTER TABLE PersonsDROP PRIMARY KEY;
复制代码

对于 SQL Server / Oracle / MS Access:

ALTER TABLE PersonsDROP CONSTRAINT PK_Person;
复制代码


通过这些 SQL 语句,您可以在数据库中定义和管理 PRIMARY KEY 约束,以确保表中的数据具有唯一的标识。

最后

为了方便其他设备和平台的小伙伴观看往期文章:


微信公众号搜索:Let us Coding,关注后即可获取最新文章推送


看完如果觉得有帮助,欢迎 点赞、收藏、关注

发布于: 刚刚阅读数: 5
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束_MySQL_小万哥_InfoQ写作社区