Constraints

简介: 【11月更文挑战第14天】

SQL 约束(Constraints)是用于确保数据库中数据准确性和可靠性的一种机制。它们定义了表中数据的规则和限制,帮助维护数据的完整性。以下是一些常用的 SQL 约束类型及其详细说明:

1. PRIMARY KEY(主键)

  • 唯一标识表中的每一行。
  • 不能包含 NULL 值。
  • 一个表中只能有一个主键。

2. FOREIGN KEY(外键)

  • 用于建立两个表之间的关系。
  • 外键列的值必须在关联表的主键中存在,或者为 NULL。

3. UNIQUE(唯一)

  • 保证列中的所有值都是不同的。
  • 可以有 NULL 值。

4. NOT NULL(非空)

  • 确保列不能包含 NULL 值。

5. CHECK(检查)

  • 用于确保列中的值满足特定的条件。

6. DEFAULT(默认值)

  • 指定列在没有提供值时的默认值。

SQL CREATE TABLE + CONSTRAINT 语法

以下是创建表时使用约束的语法:

CREATE TABLE table_name
(
    column_name1 data_type(size) CONSTRAINT constraint_name1 constraint_type,
    column_name2 data_type(size) CONSTRAINT constraint_name2 constraint_type,
    column_name3 data_type(size) CONSTRAINT constraint_name3 constraint_type,
    ...
);
  • table_name:新表的名称。
  • column_name:列的名称。
  • data_type:数据类型。
  • size:数据类型的大小(对于某些数据类型是必需的)。
  • CONSTRAINT:定义约束的关键字。
  • constraint_name:约束的名称。
  • constraint_type:约束的类型,如 PRIMARY KEY、FOREIGN KEY 等。

代码示例

假设我们正在创建一个名为 employees 的表,其中包含员工的 ID、姓名和部门 ID。我们将为这个表添加一些约束:

CREATE TABLE employees
(
    employee_id INT CONSTRAINT pk_employee PRIMARY KEY,
    first_name VARCHAR(50) CONSTRAINT nn_first_name NOT NULL,
    last_name VARCHAR(50) CONSTRAINT nn_last_name NOT NULL,
    department_id INT CONSTRAINT fk_department FOREIGN KEY REFERENCES departments department_id
);

在这个例子中:

  • employee_id 是主键,使用 PRIMARY KEY 约束。
  • first_namelast_name 都不能包含 NULL 值,使用 NOT NULL 约束。
  • department_id 是外键,引用了 departments 表中的 department_id,使用 FOREIGN KEY 约束。
目录
相关文章
|
安全 Oracle 关系型数据库
WebLogic Server 账号密码密文解密小方法
WebLogic Server 账号密码密文解密小方法,具体操作看下文
761 3
|
5月前
|
存储 关系型数据库 数据库
华为数据库openGauss与PostgreSQL使用对比
华为openGauss数据库基于PostgreSQL内核演进,进行了多项增强。密码认证从MD5升级为SHA256;字符串存储中,char(n)、varchar(n)的n由字符改为字节,新增nvarchar2(n)表示字符,最大存储100MB;且将空字符''统一转换为null,提升了数据处理的一致性和安全性。
442 12
|
存储 安全 编译器
【.NET Core】记录(Record)详解
【.NET Core】记录(Record)详解
411 1
|
小程序
新闻电影资讯类小程序模板源码
新闻电影资讯类小程序模板源码
1375 5
|
11月前
|
SQL 数据管理 数据库
|
存储 数据处理 数据库
为什么要进行数据库设计?
本文探讨了数据库设计的核心概念,包括满足用户的信息和处理需求,以及所需的知识背景,如计算机科学、数据库原理、软件工程和应用领域知识。设计内容分为结构设计(概念、逻辑和物理设计)和行为设计(应用程序设计)。强调了结构设计与行为设计的紧密关联,并指出数据库设计是跨学科的综合性技术,重视管理和基础数据的重要性。
233 0
为什么要进行数据库设计?
|
Unix Linux 编译器
程序与技术分享:cmake使用方法详解
程序与技术分享:cmake使用方法详解
341 0
|
关系型数据库 MySQL 数据库管理
【MySQL进阶之路 | 基础篇】子查询之二(不相关子查询与相关子查询)
【MySQL进阶之路 | 基础篇】子查询之二(不相关子查询与相关子查询)
|
数据挖掘 API 开发者
必看:详解淘宝店铺订单数据API文档
必看:详解淘宝店铺订单数据API文档
|
存储 编译器 程序员
面向 C++ 的现代 CMake 教程(二)(5)
面向 C++ 的现代 CMake 教程(二)
246 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问