热门标签 | 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逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
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社区 版权所有