热门标签 | 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逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • Splay Tree 区间操作优化
    本文详细介绍了使用Splay Tree进行区间操作的实现方法,包括插入、删除、修改、翻转和求和等操作。通过这些操作,可以高效地处理动态序列问题,并且代码实现具有一定的挑战性,有助于编程能力的提升。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
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社区 版权所有