在这里,1062 是 MYSQL_error_code,表示重复键错误;23000 是对应的 sqlstate_value。...在这里,23000 是 sqlstate_value,表示完整性约束错误(即重复键错误);1062 是对应的MySQL错误代码。...1040:已到达数据库的最大连接数,请加大数据库可用连接数。 1044:当前用户没有访问数据库的权限。 1045:不能连接数据库,用户名或密码错误。 1048:字段不能为空。...处理程序可以处理条件、警告、未捕获的异常等。...示例 定义一个 CONTINUE 处理程序,当发生 SQLSTATE ‘23000’(表示约束违反)时,输出一条消息: DECLARE CONTINUE HANDLER FOR SQLSTATE '23000
错误代码:针对具体错误代码(如1062)的处理程序优先级最高。 SQLSTATE:针对特定SQLSTATE类(如'23000',表示完整性约束违规)的处理程序优先级次之。...'23000'(完整性约束违规) DECLARE EXIT HANDLER FOR SQLSTATE '23000' BEGIN SELECT 'SQLSTATE...SQLSTATE '23000':是一个通用的SQLSTATE值,用于表示完整性约束违规,包括重复键错误。...(如违反唯一约束) DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @processed = 100; -- 内部块开始 BEGIN...FOR SQLSTATE '23000' BEGIN -- 处理完整性约束违规 END; -- 命名条件的错误处理 DECLARE specific_error CONDITION FOR
01633 可能不能使用具体化查询表来优化查询的处理。01636 数据库管理器一直未验证非增量数据的完整性。01637 未启用调试。01639 联合对象可能需要调用程序具有对数据源对象的必要特权。...类代码 23:约束违例 SQLSTATE 值 含义23001 RESTRICT 更新或删除规则防止父键被更新或删除。23502 插入或更新值为空,但该列不能包含空值。...42707 ORDER BY 内的列名不标识结果表中的列。42709 在键列列表中指定了重复的列名。42710 检测到重复的对象或约束名。...42707 ORDER BY 内的列名不标识结果表中的列。 42709 在键列列表中指定了重复的列名。 42710 检测到重复的对象或约束名。...42867 指定了冲突的选项。 42872 FETCH 语句子句与游标定义不兼容。 42875 要在 CREATE SCHEMA 中创建的对象的限定符必须与模式名相同。 42877 不能限定该列名。
· 错误:1048 SQLSTATE: 23000 (ER_BAD_NULL_ERROR) 消息:列'%s'不能为空。...· 错误:1167 SQLSTATE: 42000 (ER_WRONG_KEY_COLUMN) 消息:所使用的存储引擎不能为列'%s'编制索引。...· 错误:1216 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW) 消息:无法添加或更新子行,外键约束失败。...· 错误:1217 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED) 消息:无法删除或更新父行,外键约束失败。...· 错误:1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2) 消息:不能删除或更新父行,外键约束失败(%s)。
✨一、数据库的约束 1.什么是数据库约束? 数据库约束是关系型数据库的一个重要功能,用于确保数据的完整性、一致性和准确性(数据本身是否正确、关联关系是否正确)。数据库约束一般指定在列。...二、数据库约束的分类 1.非空约束(NOT NULL) 1.定义 定义:指定表中的某列不能存储NULL值。例如:在“学生信息表”中,指定学生的姓名不能为空,确保学生基本信息的完整性。...1 | 张三 | | 2 | NULL | +------+--------+ 2 rows in set (0.00 sec) 指定列的信息不能为空: -- 创建学生表2:指定其列不能为空...(NULL);如果NULL为NO,则表示该列学生信息不能为空(NULL); 当指定该列的值不能为空时,则表示该列学生信息不可以为空(NULL)。...一个表的外键指向另一个表的主键。外键约束能够保证引用的完整性,即一个表的外键值必须存在于另一个表的主键列中。
一、表的约束 在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。...常见的约束有哪些: 非空约束(not null):约束的字段不能为NULL 唯一约束(unique):约束的字段不能重复 主键约束(primary key):约束的字段既不能为NULL,也不能重复...,所以此字段值不能为空!!...not null约束只有列级约束。没有表级约束。...username varchar(255) ); 外键约束:foreign key 外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键 字段,那么该字段的值必须来源于参照的表的主键
规定某个字段不能为空 UNIQUE 唯一约束 规定某个字段在整个表中是唯一的 PRIMARY KEY 主键 PRIMARY KEY 主键 FOREIGN KEY 外键约束 CHECK 检查约束 DEFAULT...非空约束 2.1 作用 限定某个字段/某列的值不允许为空 2.2 关键字NOT NULL 2.3 特点 默认,所有的类型的值都可以是NULL,包括INT、FLOAT等数据类型 非空约束只能出现在表对象的列上...唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空。 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同 MySQL会给唯一约束的列上默认创建一个唯一索引。...主键约束对应着表中的一列或者多列(复合主键) 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。...主键约束对应着表中的一列或者多列(复合主键) 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。
在提交注册信息的时候报错:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'admin' for key 'username...' 原因:主键冲突 违反完整性约束 字段唯一索引 从上图可以看出,用户名和邮箱必须唯一,如果填入重复的用户名或者邮箱就会出错 解决方法:在控制器里面进行判断 data=input(′post.′);data...data\['email'\]\]); if(sizeof(uniqueemail)){ $this->error('该邮箱已经注册,请重新填写~~~'); } 添加上面代码之后,如果填写了重复的用户名或者密码就会给用户相关提示...~~~ 对了,上面的代码是在TP5上写的。
在提交注册信息的时候报错:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘admin’ for key ‘username...’ 原因:主键冲突 违反完整性约束 字段唯一索引 从上图可以看出,用户名和邮箱必须唯一,如果填入重复的用户名或者邮箱就会出错 解决方法:在控制器里面进行判断 $data = input('post....email'=>$data['email']]); if(sizeof($uniqueemail)){ $this->error('该邮箱已经注册,请重新填写~~~'); } 添加上面代码之后,如果填写了重复的用户名或者密码就会给用户相关提示...~~~ 对了,上面的代码是在TP5上写的。
表的约束 1. 约束概念 真正约束字段的是数据类型,但数据类型约束很单一,需要一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。...约束本质是通过技术手段倒逼程序员插入正确的数据。反过来,站在mysql的视角,插入进来的数据,都是符合数据约束的。 约束的最终目标:保证数据的完整性和可预期性。 2....ERROR 1364 (HY000): Field 'class_room' doesn't have a default value //插入教室为NULL,我们会发现提示我们class_room不能为空...default和not null不冲突,而是互相补充的。 null和not null是作用在用户想插的时候。...主键 6.1 基本概念 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键(不意味着一个表中的主键只能添加一列,一个主键可以被添加到一列或者多列中
约束的最终目标:保证数据的完整性和可预期性所以需要更多的约束。...mysql> insert into t14 (name,age) values ('张三',20); Query OK, 1 row affected (0.00 sec) default和NOT NULL不冲突...主键 primary key 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个。但是并不意味着一个表中的主键,只能添加给一列。...,上面的例子,我们不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有。...客户的姓名不能为空值 邮箱不能重复 客户的性别(男,女) -- 选择数据库 create table if not exists goods ( goods_id int primary key
1042:无效的主机名 1043:无效连接 1044:当前用户没有访问数据库的权限 1045:不能连接数据库,用户名或密码错误 1048:字段不能为空 1049:数据库不存在 1050:...错误:1261 SQLSTATE: 01000 (ER_WARN_TOO_FEW_RECORDS) 消息:行%ld不包含所有列的数据。...错误:1391 SQLSTATE: HY000 (ER_KEY_PART_0) 消息:键部分’%s’的长度不能为0。...错误:1451 SQLSTATE: 23000 (ER_ROW_IS_REFERENCED_2) 消息:不能删除或更新父行,外键约束失败(%s)。...错误:1452 SQLSTATE: 23000 (ER_NO_REFERENCED_ROW_2) 消息:不能添加或更新子行,外键约束失败(%s)。
表级约束 :可以作用在多个列上,不与列一起,而是单独定义 位置 支持的约束类型 是否可以起约束名 列级约束: 列的后面 语法都支持,但外键没有效果 不可以 表级约束: 所有列的下面 默认和非空不支持...,其他支持 可以(主键没有效果) 根据约束起的作用 ,约束可分为: NOT NULL 非空约束,规定某个字段不能为空 UNIQUE 唯一约束 , 规定某个字段在整个表中是唯一的 PRIMARY KEY...唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空。 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。...主键约束对应着表中的一列或者多列(复合主键) 是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。 MySQL的主键名总是PRIMARY ,就算自己命名了主键约束名也没用。...不建外键约束,你的操作(创建表、删除表、添加、修改、删除)不受限制,要保证数据的引用完整性,只能依靠程序员的自觉,或者是在Java程序中进行限定。
: 所有列的下面 默认和非空不支持,其他支持 可以(主键没有效果) 根据约束起的作用,约束可分为: NOT NULL 非空约束,规定某个字段不能为空 UNIQUE 唯一约束,规定某个字段在整个表中是唯一的...非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空 一个表可以有很多列都分别限定了非空 空字符串’' 不等于 NULL,0 也不等于 NULL # 2.4 添加非空约束...唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空。 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。...主键约束对应着表中的一列或者多列(复合主键) 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。...不建外键约束,你的操作(创建表、删除表、添加、修改、删除)不受限制,要保证数据的 引用完整性 ,只能依 靠程序员的自觉 ,或者是 在Java程序中进行限定 。
1.表的约束的概念 表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。...反过来,站在MySQL的视角,凡是插进来的数据,都是符合数据约束的! 约束的最终目标:保证数据的完整性和可预期性! 下面来介绍一些主流的约束。...通常,CHANGE子句用于在修改列的数据类型或其他属性时同时更改列名。如果您只想更改列的数据类型或属性而不更改列名,就像您的示例中所做的那样,您需要重复列名。...6.主键 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。...案例: 创建表的时候直接在字段上指定主键 mysql> create table tt13 ( -> id int unsigned primary key comment '学号不能为空', -> name
数据库约束-主键约束-唯一约束-非空约束-默认值 约束概述 约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。...约束的类型 约束名 约束关键字 主键 primary key 非空 not null 唯一 unique 外键 foreign key ... references 默认 default 1....1.2 创建主键 # 主键:PRIMARY KEY # 主键的特点: 1. 主键字段值唯一(唯一不可重复) 2. 主键列不能为NULL 3....这一列设置唯一约束,不能出现同名的学生 CREATE TABLE st7 ( id INT, NAME VARCHAR(20) UNIQUE ); 添加数据,查看数据重复的问题 INSERT INTO...非空约束 NOT NULL 被修饰的这个字段必须设置值,不能是NULL 3.1 非空约束的基本格式 字段名 字段类型 NOT NULL 3.2 实现非空约束 具体操作: 创建表学生表st8, 包含字段(
约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种: # NOT NULL :非空约束,指定某列不能为空; # UNIQUE : 唯一约束,指定某列或者几列组合不能重复 # PRIMARY...KEY :主键,指定该列的值可以唯一地标识该列记录 # FOREIGN KEY :外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性 返回顶部 NOT NULL 是否可空,null表示空,非字符串...DEFAULT 我们约束某一列不为空,如果这一列中经常有重复的内容,就需要我们频繁的插入,这样会给我们的操作带来新的负担,于是就出现了默认值的概念。...默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值 ? ?.... set null方式 在父表上update/delete记录时,将子表上匹配记录的列设为null 要注意子表的外键列不能为not null .
确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录 FOREIGN KEY: 保证一个表中的数据匹配另一个表中的值的参照完整性 看不懂???...SQL执行语句: create table 表名(列名 类型,列名 类型 default '默认的内容'); 我们在不添加约束条件,查看表的结构: mysql> create table student...entry '1' for key 'PRIMARY' 注意:这里有两处报错,第一是id不能为空,第二处是这里的重复定义了id为1。...(列名 类型,列名 类型,foreign key(被约束的列)references 父类表(参考列)); 看读懂没关系,且听小编给你分析: 代码如下: mysql> create table class...,插入和修改会被父类约束,但是其他的列,可以随意修改和插入; 3.在删除时,由于父类时子类表的参考,所以无法先删除父表,得先删除子类的表后,然后再次删除父类这个表。 ️
2 错误代码及说明 SQLCode SQLState 状态说明 000 00000 SQL语句成功完成 01xxx XXX SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互关系的引用...BYDEFAULT属性的ROWID列 -542 42831 可以为空的列不允许作为主健的一部分包含在内 -543 23511 因为该表是指定了SET NULL删除规则的参照约束的父表而且检查约束不允许...NULL,所以DELETE不能发生 -544 23512 不能用ALTER添加检查约束,因为已存在的某行与该检查约束冲突 -545 23513 INSERT或者UPDATE导致检查约束冲突 -546 42621...56089 不能为这个表空间指定LOCKSIZE ROW,因为在该表空间中的表上定义了1型索引 -642 54021 唯一约束包含太多的列 -643 54024 检查约束超出了3800个字符的最大长度...EBCDIC表中的定义的列和ASCII表中定义的列 -874 53901 指定对象的编码方案与其表空间的编码方案不匹配 -875 42988 指定的操作符不能用于ASCII数据 -876 53092 不能为指定的原因创建对象