当前位置:首页 > MySQL教程 > 正文内容

mysql搜检束缚怎样写【MySQL教程】,mysql

搜教程4年前 (2019-12-01)MySQL教程134
MySQL 搜检束缚(CHECK)能够经由过程 CREATE TABLE 或 ALTER TABLE 语句完成,依据用户现实的完全性请求来定义。它能够分别对列或表实行 CHECK 束缚。然则mysql手册里写的很清晰:“一切的存储引擎均对CHECK子句举行剖析,然则疏忽CHECK子句。”所以虽然能够如许写可并不会起到束缚作用。

引荐教程: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<100),
   -> 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 INSERT
ON tb_student FOR EACH ROW
BEGIN
   	DECLARE msg varchar(100);
 
   	IF NEW.age <= 0 OR 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搜检束缚怎样写的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/16036.html

标签: mysql
分享给朋友:

“mysql搜检束缚怎样写【MySQL教程】,mysql” 的相关文章

cookie属性和要领剖析【MySQL教程】,cookie,ie,解析

cookie属性和要领剖析【MySQL教程】,cookie,ie,解析

cookie属性详解 在chrome掌握台中的resources选项卡中能够看到cookie的信息。 一个域名下面能够存在着很多个cookie对象。 name字段为一个cookie的称号。 value字段为一个cookie的值。 domain字段为能够接见此cookie的域名。...

MySQL适配器之PyMySQL的细致引见【MySQL教程】,PyMySQL,MySQL,适配器

这篇文章主要为人人细致引见了MySQL适配器PyMySQL的相干材料,具有肯定的参考价值,感兴趣的小伙伴们能够参考一下 本文我们为人人引见 Python3 运用 PyMySQL 衔接数据库,并完成简朴的增编削查。 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本顶用...

Centos7怎样应用yum装置Mysql5.7.19的具体方法【MySQL教程】,Mysql5.7.19,Centos7,安装

Centos7怎样应用yum装置Mysql5.7.19的具体方法【MySQL教程】,Mysql5.7.19,Centos7,安装

本篇文章重要引见了Centos7运用yum装置Mysql5.7.19的细致步骤,小编以为挺不错的,如今分享给人人,也给人人做个参考。一同追随小编过来看看吧 Centos7的yum源中默许是没有mysql,由于如今已用mariaDB替代mysql了。 起首我们下载mysql的repo源,我们能...

数据库纪录删除体式格局 有哪些【MySQL教程】,数据库,哪些,方式

数据库纪录删除体式格局 有哪些【MySQL教程】,数据库,哪些,方式

弁言 删除数据库纪录是一个异常罕见的需求,当数据落空代价时,我们便会删除它,然则假如操纵不当,每每就会把一些有代价的数据误删掉,形成重要数据的丧失,合理采纳删除体式格局才更好地运用数据资本,下面引见几种经常运用的删除体式格局。 删除体式格局 物理删除 物理删除就是直接从数据库中删除一...

运用union和in哪一个效率高【MySQL教程】,union,效率高,哪个

一直都认为是in的效力要高,然则此次确有点蒙圈。 SELECT * FROM runinfo WHERE status in (0,2,1,3,4,7,9,10);   这个查询的效力是,经常是1秒多。 mysql> SELECT * FROM runinfo WHERE sta...

MySQL慢查询日记相干的设置和运用【MySQL教程】,MySQL,配置,相关

MySQL慢查询日记相干的设置和运用【MySQL教程】,MySQL,配置,相关

MySQL慢查询日记供应了凌驾指定时刻阈值的查询信息,为机能优化供应了重要的参考根据,是一个异常有用的功用,MySQL慢查询日记的开启和设置异常简朴,能够指定纪录的文件(或许表),凌驾的时刻阈值等就能够纪录到慢sql了,真话讲,相比较sqlserver的trace或许扩大事宜(虽然此两者的作用并不...