mysql检查约束怎么写

mysql 检查约束(check)可以通过 create table 或 alter table 语句实现,根据用户实际的完整性要求来定义。它可以分别对列或表实施 check 约束。但是mysql手册里写的很清楚:“所有的存储引擎均对check子句进行分析,但是忽略check子句。”所以虽然可以这样写可并不会起到约束作用。

推荐教程:MySQL教程

mysql检查约束怎么写

检查约束使用 CHECK 关键字,具体的语法格式如下:

CHECK 

登录后复制

其中:指的就是 SQL 表达式,用于指定需要检查的限定条件。
若将 CHECK 约束子句置于表中某个列的定义之后,则这种约束也称为基于列的 CHECK 约束。
在更新表数据的时候,系统会检查更新后的数据行是否满足 CHECK 约束中的限定条件。MySQL 可以使用简单的表达式来实现 CHECK 约束,也允许使用复杂的表达式作为限定条件,例如在限定条件中加入子查询。

注意:若将 CHECK 约束子句置于所有列的定义以及主键约束和外键定义之后,则这种约束也称为基于表的 CHECK 约束。该约束可以同时对表中多个列设置限定条件。

在创建表时设置检查约束

创建表时设置检查约束的语法规则如下:

CHECK()

登录后复制

在 test_db 数据库中创建 tb_emp7 数据表,要求 salary 字段值大于 0 且小于 10000,输入的 SQL 语句和运行结果如下所示。

mysql> CREATE TABLE tb_emp7-> (   -> id INT(11) PRIMARY KEY,   -> name VARCHAR(25),   -> deptId INT(11),   -> salary FLOAT,   -> CHECK(salary>0 AND salary FOREIGN KEY(deptId) REFERENCES tb_dept1(id)   -> );Query OK, 0 rows affected (0.37 sec)

登录后复制

在修改表时添加检查约束

修改表时设置检查约束的语法规则如下:

ALTER TABLE tb_emp7 ADD CONSTRAINT  CHECK()

登录后复制

修改 tb_dept 数据表,要求 id 字段值大于 0,输入的 SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp7   -> ADD CONSTRAINT check_id   -> CHECK(id>0);Query OK, 0 rows affected (0.19 sec)Records: 0  Duplicates: 0  Warnings: 0

登录后复制

解决方法:使用触发器实现CHECK检查约束的功能。

(1)创建tb_student(学生信息表)。

-- 创建学生信息表CREATE TABLE tb_student(   id INT AUTO_INCREMENT PRIMARY KEY,   name VARCHAR(30),   age INT NOT NULL);

登录后复制

(2)创建检查年龄(age)字段是否有效的触发器。

 -- 创建触发器 CREATE TRIGGER trg_tb_student_insert_check BEFORE INSERTON tb_student FOR EACH ROWBEGIN   DECLARE msg varchar(100);    IF NEW.age = 100    THEN   SET msg = CONCAT('您输入的年龄值:',NEW.age,' 为无效的年龄,请输入0到100以内的有效数字。');   SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = msg;   END IF;END;

登录后复制

(3)编写测试语句。

INSERT INTO tb_student(name,age) VALUES('Kevin',120);

登录后复制

以上就是mysql检查约束怎么写的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1786506.html

(0)
上一篇 2025年2月20日 00:37:22
下一篇 2025年2月20日 00:37:40

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 可视化微信小程序开发工具的优势有哪些?

    可视化微信小程序开发工具是一款专门为微信小程序开发者设计的无代码开发平台。它提供了可视化界面设计、插件功能开发以及自动代码生成等功能,旨在帮助开发者快速高效地完成小程序开发,节省时间和成本,提升开发效率。 一、可视化微信小程序开发工具的优势…

    2025年4月28日
    000
  • 小程序开发需要掌握哪些技术?

    开发一个小程序需要掌握哪些技术?让我们来看看具体的技术要求。 一、服务器端语言小程序开发常用的服务器端语言包括PHP、ASP.NET和JSP。只要掌握其中一种语言,就足以进行小程序开发。 PHP是一种跨平台的服务器端嵌入式脚本语言。它结合了…

    2025年4月28日
    000
  • 小程序开发定制需要哪些知识?

    定制小程序开发需要掌握以下几个关键知识: 小程序框架和语言:小程序开发通常采用的是微信小程序框架,基于WXML、WXSS和JavaScript。您需要熟练掌握这些框架的语法和特性,以便进行开发。 前端开发技术:小程序的前端开发与传统Web前…

    2025年4月28日
    000
  • 小程序开发语言学什么?

    小程序开发涉及哪些编程语言和框架呢?让我们来探讨一下开发一款微信小程序所需的前端开发语言、后端开发语言、数据库语言以及所使用的开发框架。以下是小程序开发所需掌握的基础知识: 一、小程序开发所使用的语言是什么? 1、前端开发语言 前端开发通常…

    2025年4月28日
    000
  • navicat命令行界面怎么换行

    Navicat 命令行界面换行方式共有以下三种:1. 使用 “\n” 字符强制换行;2. 使用 “\G” 字符换行并显示分隔线;3. 使用管道(|)将输出重定向到 less 命令分页。 Nav…

    2025年4月28日
    000
  • 帝国cms配置数据库怎么用不了

    帝国CMS配置数据库故障排查:检查数据库连接信息是否正确。授予数据库用户对数据库的足够权限。确保数据库编码为UTF-8。检查数据库表是否使用MyISAM或InnoDB引擎。确认数据库表结构与帝国CMS要求的一致。启用PHP配置中的MySQL…

    2025年4月28日
    000
  • php7怎么连接数据库

    使用 PHP 7 连接数据库需要使用 PDO 类,步骤包括:创建一个 PDO 对象,指定服务器名、数据库名、用户名和密码。设置错误模式,以便抛出异常来处理错误。准备和执行查询。获取查询结果。 PHP 7 连接数据库 如何连接数据库? 在 P…

    2025年4月28日
    000
  • navicat如何连接数据库

    要使用 Navicat 连接数据库,请依序执行以下步骤:在 Navicat 中创建连接。输入主机名、端口、用户名、密码和数据库名称。调整高级设置(可选)。保存连接。测试连接。连接到数据库。查看数据库对象。 Navicat 连接数据库指南 如…

    2025年4月28日
    000
  • navicat如何查看表备注

    如何在 navicat 中查看表备注 Navicat 是一个强大的数据库管理工具,它可以用于查看和编辑各种数据库对象的属性和信息,其中包括表备注。以下是如何使用 Navicat 查看表备注: 步骤: 连接到数据库:打开 Navicat 并连…

    数据库 2025年4月28日
    000
  • Windows 10下PHP7.4环境搭建与IIS配置实战

    在windows 10上搭建php7.4并配置iis的步骤包括:1.确保已安装iis;2.下载并安装php7.4;3.配置php.ini文件;4.在iis中添加php处理程序;5.验证配置。通过这些步骤,你可以在windows 10上成功搭…

    2025年4月28日
    000

发表回复

登录后才能评论