首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 8.0新特性 — 检查约束

前言 在MySQL 8.0版本中,引入了一个非常有用的新特性 — 检查约束,它可以提高对非法或不合理数据写入的控制能力;接下来我们就来详细了解一下。...检查约束 创建、删除与查看 (1)可以在建表时,创建检查约束 mysql> CREATE TABLE t1 -> ( -> CHECK (c1 c2), ->...) Records: 0 Duplicates: 0 Warnings: 0 (3)可以通过下列语句,删除检查约束 mysql> ALTER TABLE t1 DROP CONSTRAINT c3...,check_constraints查询检查约束的具体定义 mysql> SELECT * FROM information_schema.table_constraints WHERE table_name...(4)存储过程,不支持检查约束 (5)变量,不支持检查约束6)子查询,不支持检查约束 总结 检查约束,还是一个非常不错的功能,可以实现丰富的数据校验场景,大家可以尝试一下。

1.4K120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【SpringBoot web-1】web项目数据校验

    ) private int age; @NotEmpty(message="密码不能为空") @Length(min=6,message="密码长度不能小于6位") private....param("password","test") ); } 结果返回: user:name=,age=666,pass=test Max-年龄不能大于100岁 Length-密码长度不能小于...常见校验: 注解 应用 检查项 @Length(min=, max=) String 检查字符串长度是否符合范围 @Max(value=) 以 numeric 或者 string 类型来表示一个数字 检查值是否小于或等于最大值...,map 检查元素大小是否在最小和最大值之间(包括临界值) @AssertFalse 属性 检查方法的演算结果是否为 false(对以代码方式而不是注解表示的约束很有用) @AssertTrue 属性...检查方法的演算结果是否为 true(对以代码方式而不是注解表示的约束很有用) @Valid 属性(object) 对关联对象递归进行验证。

    51730

    Mysql基础7-约束

    ,则采用默认值 检查约束(check 8.0以后的新约束):保证字段满足某一个条件 外键约束(foreign key):用来让两张变的数据建立连接,保证数据的一致性和完整性 二、约束的案例实践   需求...需求3:name字段长度为10个字符并且不能为空。   需求4:age字段要大于0并且小于150.   需求5:address字段如果不设,默认为广州。   需求6:stu_num唯一且不能为空。...:当在父表中删除/更新对应记录时,首先检查该记录是否有对应的外键,如果有,则也删除/更新外键在子表中的记录 set null:当在父表中删除/更新对应记录时,首先检查该记录是否有对应的外键,如果有则设置子表中该外键的值为...| stu6 | 3 | 86 | +----+----------+------------+-------+ 6 rows in set (0.00 sec) mysql...| stu6 | 3 | 86 | +----+----------+------------+-------+ 6 rows in set (0.00 sec) mysql

    33740

    通过Oracle DB了解MySQL

    当执行权限检查时,MySQL按照权限范围的降序检查每个表,在较低级别授予的权限优先于在较高级别授予的相同权限。 MySQL支持的权限分为两种:管理权限和每个对象权限。...Oracle MySQL AFTER触发器 触发器 BEFORE触发器 触发器 检查约束 检查约束 列默认值 列默认值 数据库 数据库 外键 外键 索引 索引 包 不适用 PL / SQL函数 存储程序...表设计注意事项 字符数据类型 MySQL和Oracle在支持的字符类型以及存储和检索字符值的方式之间存在一些差异。 对于小于65,535字节的字符类型,MySQL支持CHAR和VARCHAR。...如果值小于长度,则Oracle会将CHAR和NCHAR值用空格填充,直到该值小于长度,并且在检索时不修剪尾随空白。...Oracle不会为具有NOT NULL约束的列生成默认值。 临时表 在MySQL中,临时表是一个数据库对象,仅对当前用户会话可见,并且在用户会话结束时会自动删除。

    1.8K10

    MySQL基础

    字段n 字段n类型 [COMMENT 字段n注释] )[ COMMENT 表注释 ]; 添加字段: ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]; 例...); 修改字段名和字段类型: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束]; 例:将emp表的nickname字段修改为username...<= 小于等于 = 等于 或 !...PRIMARY KEY 默认约束 保存数据时,如果未指定该字段的值,则采用默认值 DEFAULT 检查约束(8.0.1版本后) 保证字段值满足某一个条件 CHECK 外键约束 用来让两张图的数据之间建立连接...当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则也删除/更新外键在子表中的记录 SET NULL 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为

    1.9K10

    oracle与mysql结构区别_oracle与mysql的区别

    1、列类型区别 oracle:可变长度varchar2、浮点型number,小数浮点型number(m,n),可变二进制数据raw,大对象类型(存储无结构数据,最大4G)lob mysql:可变长度varchar...、浮点型float、double、小数decimal(m,n),可变二进制数据blob 2、约束(NOT NULL 非空约束、UNIQUE 唯一约束、PRIMARY KEY 主键约束 ,FOREIGN...KEY 外键约束,CHECK 检查约束) oracle:多了CHECK(检查约束),eg:constraint gen_ch check(gender in (‘male’,’female’)) 3、序列...(mysql没有,因为mysql有自增AUTO_INCREMENT,而oracle需要新增序列seq然后再用seq.nextval来记录id) 4、同义词(别名) oracle:create synonym...1 from dual; 6、列别名(oracle暂无) mysql:select column as c from table; 7、分页 oracle:虚拟列(rownum) mysql:select

    3.5K30

    mysql的索引有哪几种_MySQL索引数据结构

    这么做的好处:一是简化了mysql对这个索引的管理工作,这个索引也因此而变得更有效率;二是mysql会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,...4、外键索引 如果为某个外键字段定义了一个外键约束条件,mysql就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。...6、索引的长度 在为char和varchar类型的数据列定义mysql索引时,可以把mysql索引的长度限制为一个给定的字符个数(这个数字必须小于这个字段所允许的最大字符个数)。...在绝大多数应用里,数据库中的字符串数据大都以各种各样的名字为主,把索引的长度设置为10~15个字符已经足以把搜索范围缩小到很少的几条数据记录了。...在为blob和text类型的数据列创建索引时,必须对索引的长度做出限制;mysql所允许的最大索引全文索引文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作

    1.2K10

    【rainbowzhou 面试6101】技术提问--举例说明你写的ETL用例?

    了解技术架构设计、模块设计和数据模型设计; 设计测试用例和准备测试数据; 执行测试用例和记录相应的问题; 生成测试报告并分析结果; ETL的测试场景及测试用例 1)业务验证 根据需求文档验证业务核心点验证目标表中的约束关系符合期望...; 根据对应的映射文件验证源与数据目的地的表结构; 验证数据的类型与格式是指定类型; 针对映射表对数据表的列名称进行验证; 2)约束验证 验证约束表中的关系满足我们期望的设计; 验证数据类型长度不应小于目标约束长度...; 3)一致性验证 验证源和目标数据的类型一致; 验证源和目标数据的长度一致; 验证映射表与数据表列的名称一致; 4)完整性验证 源数据和目标数据的一致; 对边界值进行分析检查; 数据量与冗余的验证,保证数据量级...; 检查目标表列的数据没出现被截断的情况; 5)正确性验证 记录准确性; 验证数据拼写; 越界数据检查; 验证源的数据类型长度不应小于目标数据类型长度6)有效性验证 精度验证; 数值型检查; 空值null...检查; 日期格式,类型验证; 7)拷贝验证 验证目标表中业务要求所有唯一性指标均正确的实现(例如主键、唯一标识的键、或其他任一唯一表示的列); 验证从源数据多列合并而成的数据是正确的; 验证根据客户要求对源数据进行了多列合并至目标表

    35110

    MySQL数据库】数据库的约束

    ​ 目录Mysql约束(constraint)基本介绍主键约束(primary key)自增长约束(auto_increment)非空约束(not null)唯一性约束(unique)默认约束(default...)零填充约束(zerofill)----图片Mysql约束(constraint)基本介绍 MySQL数据库通过约束(constraints)防止无效的数据进入到数据库中,以保护数据的实体完整性...MySQL中主要有六种约束,分别是:主键约束(primary key),非空约束(not null),自增长约束(auto_increment),默认约束(default) ,零填充约束(zerofill...--创建表 not null;--修改表alter table 表名 modify 字段 类型 not null;--例子create table t_user6 ( id int...(zerofill) 插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应的0。

    5.7K40

    Mysql从入门到放弃(三)

    table testnum( -> ttinyint tinyint, -> tsmallint smallint, -> tint int, -> tfloat float(6,2...), -> tdouble double(6,2), -> tdecimal decimal(6,2) -> ); 创建表的主体结构: create table if not...exists 表名( 字段名称 字段类型 约束条件 字段说明, 字段名称 字段类型 约束条件 字段说明, ......除非配合约束条件zerofill 零填充的时候 才有意义 (2) 日期和时间类型 类型 大小(字节) 范围 格式 用途 date 3 1000-01-01/9999-12-31 YYYY-MM-DD...0-255之间 当给char类型传入值的长度低于给定的长度 则为使用空格填充到指定长度 varchar类型传入的值小于给定的长度 不会使用空格填充 如果开启了不严谨报错 给定的值超出了设定的长度 会自动截取

    68420

    Java面试手册:数据库 ②

    数据库的分类(SQL概念相关) 数据库分类 关系型数据库:Oracle、DB2、SQ server、MySQL、MS Access 网状、树状、面向对象数据库 非关系型数据库有:MongoDB 、Rides...基本数据类型 字符串类型(char固定长度,varchar可变长度,用多少给多少) 数值类型 日期和时间类型 规划 完整性约束 实体完整性:又称为行完整性,要求表中不能存在完全相同的行,而且每行都要具有一个非空且又不重复的主键...UQ_表名_列名 unique(列) 检查约束:alter table 表名 add constraint CK_表名_列名 check(age>5) 默认约束:alter table 表名 add...constraint DF_表名_列名 default('男') for gender 删除完整性:删除约束,全局约束:包括基于元组的检查之句(check)和断言 alter table 表名 drop...) from student where id = 6; 日期函数:java.util;中提供了data()类, 而在sql中 也提供了相应的方法。

    1.3K20

    MySQL层相关优化

    ,尽可能选择长度小的。...此外,字段属性尽量都加上NOT NULL约束,可一定程度提高性能; 3、尽可能不使用TEXT/BLOB类型,确实需要的话,建议拆分到子表中,不要和主表放在一起,避免SELECT * 的时候读性能太差。...80%以上的查询需求了,没必要创建整列的全长度索引; 6、通常情况下,子查询的性能比较差,建议改造成JOIN写法; 7、多表联接查询时,关联字段类型尽量一致,并且都要有索引; 8、多表连接查询时,把结果集小的表...的管理维护的其他建议有: 1、通常地,单表物理大小不超过10GB,单表行数不超过1亿条,行平均长度不超过8KB,如果机器性能足够,这些数据量MySQL是完全能处理的过来的,不用担心性能问题,这么建议主要是考虑...也可实现该功能; 7、使用pt-online-schema-change来完成大表的ONLINE DDL需求; 8、定期使用pt-table-checksum、pt-table-sync来检查并修复mysql

    94480

    MySQL基础:SQL分类DDL、DML、DQL、DCL;函数、约束、多表查询、事务、并发事务四大问题、事务隔离级别——脏写、脏读、不可重复读、幻读

    2.2.2.4 表操作-修改添加字段、修改数据类型、修改字段名和字段类型、删除字段、修改表名#添加字段ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束...思路: 获取随机数可以通过rand()函数,但是获取出来的随机数是在0-1之间的,所以可以在其基础上乘以1000000,然后舍弃小数部分,如果长度不足6位,补0select round(rand()×1000000,0...); #0.044×1000000=44000,1×1000000,不全,没有包含 5、15、115等数字select lpad(round(rand()*1000000,0),6,'0');...保存数据时,如果未指定该字段的值,则采用默认值 DEFAULT 检查约束(8.0.16版本之后)保证字段值满足某一个条件...4.2 约束演示上面我们介绍了数据库中常见的约束,以及约束涉及到的关键字,那这些约束我们到底如何在创建表、修改表的时候来指定呢,接下来我们就通过一个案例,来演示一下。

    71120

    建议收藏 | 专业的MySQL开发规范

    但N应尽可能小,因为MySQL一个表中所有的VARCHAR字段最大长度是65535个字节,且存储字符个数由所选字符集决定。...如UTF8存储一个字符最大要3个字节,那么varchar在存放占用3个字节长度的字符时不应超过21845个字符。同时,在进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存。...表中除PK以外,还存在唯一性约束的,可以在数据库中创建以“uidx_”作为前缀的唯一约束索引 3. PK字段不允许更新 4. 禁止创建外键约束,外键约束由应用控制 5....如无特殊需要,所有字段必须添加非空约束,即not null 6. 如无特殊需要,所有字段必须有默认值 SQL编写规范 1....用in()/union替换or,并注意in的个数小于300 9.

    1.5K20

    CHECK约束_数据库check约束怎么写

    CHECK约束检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。...可以在CHECK条件中使用任意有效的SQL表达式,CHECK约束对于插入、更新等任何对数据进行变化的操作都进行检查。...,还可以在CHECK 约束中使用函数,比如人员编号长度要大于12,那么就需要如下编写建表语句: MYSQL,DB2: CREATE TABLE T_Person (FNumber VARCHAR(20...比如我们想约束“人员的工龄必须小于他的年龄”,那么我们执行下面的SQL语句: MYSQL,DB2: CREATE TABLE T_Person (FNumber VARCHAR(20),FName VARCHAR...语法为: CONSTRAINT 约束名 CHECK(约束条件) 重新编写上述的SQL语句,如下: MYSQL,DB2: CREATE TABLE T_Person (FNumber VARCHAR(20

    1.7K30

    MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界

    MYSQL基本布局 基础篇 MYSQL概述 SQL语法 函数 约束 多表查询 事务 进阶篇 存储引擎 索引 SQL优化 视图/存储过程/触发器 锁 InnoDB核心 MYSQL管理 运维篇 日志 主从复制...TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释][约束]; 删除字段: # 删除字段 ALTER TABLE 表名 DROP 字段名; 修改表名: # 修改表名...<= 小于等于 或 !...默认约束 保存数据时,若未指定该字段的值,则采用默认值 DEFAULT 检查约束 保证字段值满足某一条件 CHECK 外键约束 让两张表建立连接,保证数据的一致性和完整性 FOREIGN KEY 注意...外键同样也具有约束条件: 行为 说明 NO ACTION 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。

    1.6K40

    Web-第六天 MySQL回顾学习

    mysql将会在其后面用空格补足到指定长度; varchar可变长度的字符串,长度可以由我们自己指定,它能保存数据长度的最大值是65535,如果存储的字符没有达到指定的长度,不会补足到指定长度;java.sql.Datedate...) [约束]; 例如: #1,为分类表添加一个新的字段为 分类描述 varchar(20) ALTER TABLE category ADD `desc` VARCHAR(20); 修改表修改列的类型长度约束...alter table 表名 modify 列名 类型(长度) 约束; 例如: #2, 为分类表的描述字段进行修改,类型varchar(50) 添加约束 not null ALTER TABLE category...一对多:一个客户服务于多个联系人 第6章 多表查询 ?...<any:小于子查询中的最大值。 <all: 小于子查询中的最小值。 !=any或any:不等于子查询中的任意值。 !=all或all:不等于子查询中的所有值。

    81520
    领券