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

SQL NOT NULL 约束

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

在 CREATE TABLE 时使用 SQL NOT NULL

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

sql 复制代码
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:

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

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

sql 复制代码
ALTER TABLE Persons
MODIFY COLUMN Age int NOT NULL;

对于 Oracle 10G 及更高版本:

sql 复制代码
ALTER TABLE Persons
MODIFY 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:

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

对于 MySQL:

sql 复制代码
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:

sql 复制代码
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:

sql 复制代码
ALTER TABLE Persons
ADD UNIQUE (ID);

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

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

sql 复制代码
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID, LastName);

删除 UNIQUE 约束

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

对于 MySQL:

sql 复制代码
ALTER TABLE Persons
DROP INDEX UC_Person;

对于 SQL Server / Oracle / MS Access:

sql 复制代码
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;

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

SQL PRIMARY KEY 约束

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

在 CREATE TABLE 时使用 SQL PRIMARY KEY

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

对于 MySQL:

sql 复制代码
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:

sql 复制代码
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:

sql 复制代码
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:

sql 复制代码
ALTER TABLE Persons
ADD PRIMARY KEY (ID);

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

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

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

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

删除 PRIMARY KEY 约束

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

对于 MySQL:

sql 复制代码
ALTER TABLE Persons
DROP PRIMARY KEY;

对于 SQL Server / Oracle / MS Access:

sql 复制代码
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

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

最后

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

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

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

相关推荐
于指尖飞舞2 分钟前
java后端面试题(常用集合极简)
java·开发语言·面试
道友可好15 分钟前
AI 怎么自己跑完一个 6 小时的任务?
前端·人工智能·后端
java1234_小锋23 分钟前
Spring Boot 中 Starter 是什么?它的核心规范有哪些?请说明如何自定义一个 Starter。
java·spring boot·后端
AI人工智能+电脑小能手27 分钟前
【大白话说Java面试题 第114题】【并发篇】第14题:说一下悲观锁的优点和缺点?
java·开发语言·面试
雪隐29 分钟前
AI股票小助手09-结果展示
人工智能·后端
罗超驿33 分钟前
13.Java多线程进阶:手动实现线程池与定时器机制详解
开发语言·面试·javaee
VitoChang36 分钟前
前端也能快速入门后端! NestJS前台和后台的Auth认证
前端·后端
XovH36 分钟前
Redis 从入门到精通:性能调优与多语言客户端对比
后端
czhc114007566338 分钟前
614 :代码修正: halcon 注销;sql配置修改
sql
XovH39 分钟前
Redis 从入门到精通:Python + Redis 构建高并发秒杀系统
后端