热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SQL中的CHECK约束详解

本文详细介绍了SQL中的CHECK约束,包括其作用、如何在创建表和修改表时应用CHECK约束,以及如何删除CHECK约束。CHECK约束用于确保数据库中的数据符合预定义的条件,从而提高数据的完整性和可靠性。

SQL 中的 CHECK 约束详解

什么是 CHECK 约束?

CHECK 约束是 SQL 中用于确保列中的数据满足特定条件的一种机制。通过 CHECK 约束,可以限制列中的值范围,确保数据的一致性和准确性。

当 CHECK 约束应用于单个列时,它限制该列只能接受特定的值。例如,可以设置一个 CHECK 约束,使得某列的值必须大于零。当 CHECK 约束应用于整个表时,它可以涉及多个列,确保这些列的组合值满足特定的逻辑条件。

在 CREATE TABLE 语句中使用 CHECK 约束

在创建表时,可以直接在 CREATE TABLE 语句中定义 CHECK 约束。以下示例展示了如何在创建 "Persons" 表时为 "Id_P" 列添加 CHECK 约束,以确保 "Id_P" 列的值大于零。

MySQL 示例:

CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (Id_P > 0) );

SQL Server / Oracle / MS Access 示例:

CREATE TABLE Persons ( Id_P int NOT NULL CHECK (Id_P > 0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) );

如果需要命名 CHECK 约束或为多个列定义 CHECK 约束,可以使用以下语法:

通用示例:

CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT chk_Person CHECK (Id_P > 0 AND City = 'Sandnes') );

在 ALTER TABLE 语句中使用 CHECK 约束

对于已经存在的表,可以使用 ALTER TABLE 语句添加 CHECK 约束。以下示例展示了如何为 "Persons" 表的 "Id_P" 列添加 CHECK 约束。

通用示例:

ALTER TABLE Persons ADD CHECK (Id_P > 0);

如果需要命名 CHECK 约束或为多个列定义 CHECK 约束,可以使用以下语法:

通用示例:

ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Id_P > 0 AND City = 'Sandnes');

删除 CHECK 约束

如果需要删除已存在的 CHECK 约束,可以使用 ALTER TABLE 语句。以下示例展示了如何删除名为 "chk_Person" 的 CHECK 约束。

SQL Server / Oracle / MS Access 示例:

ALTER TABLE Persons DROP CONSTRAINT chk_Person;


参考资料:https://www.cnblogs.com/tanding/archive/2012/07/16/2594444.html


推荐阅读
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 本文探讨了如何在模运算下高效计算组合数C(n, m),并详细介绍了乘法逆元的应用。通过扩展欧几里得算法求解乘法逆元,从而实现除法取余的计算。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
author-avatar
色花君子fds_181
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有