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

【重学 MySQL】六十一、数据完整性与约束的分类

域完整性通常通过数据类型、非空约束、默认值约束和检查约束等来实现。 引用完整性:维护两个或多个表之间的关系,确保一个表中的外键值在另一个表的主键中存在,从而防止破坏表之间关系的无效数据。...外键约束(Foreign Key Constraint) 定义:用于维护两个表之间的关系,确保一个表中的外键值在另一个表的主键中存在。...唯一约束(UNIQUE): 定义:确保列的值在表中是唯一的。如果尝试插入或更新一个已经存在的值,则会抛出异常。...检查约束(CHECK,MySQL 8.0及以上版本支持): 定义:对列的值进行条件检查,确保它们满足特定的条件。如果尝试插入或更新一个不满足条件的值,则会抛出异常。...此外,如果表中存在依赖于该约束的数据或索引,删除约束可能会导致错误或数据不一致。因此,在执行删除约束的操作之前,最好先备份数据并谨慎测试。 以上就是在MySQL中查看、添加和删除约束的详细步骤和方法。

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

    【重学 MySQL】六十三、唯一约束的使用

    【重学 MySQL】六十三、唯一约束的使用 在 MySQL 中,唯一约束(UNIQUE Constraint)用于确保数据库表中的一列或多列的数据在整个表中是唯一的,即不允许有重复的值...而最后一个INSERT语句则失败,因为尝试插入的班级编号101和座位号1的组合已经存在于表中,违反了复合唯一约束。 总结 复合唯一约束是一种非常有用的数据库约束,它可以确保多个列的组合在表中是唯一的。...特点 同一个表可以有多个唯一约束。 唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空。 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。...MySQL会给唯一约束的列上默认创建一个唯一索引。 注意事项 NULL 值:唯一约束允许列中存在多个 NULL 值,因为 NULL 在 SQL 中表示“未知”,所以多个未知值并不冲突。...组合唯一约束:唯一约束可以定义在多个列上,确保这些列的组合在整个表中是唯一的。

    12210

    【重学 MySQL】六十六、外键约束的使用

    主键非空:主键不能包含空值,但允许在外键中出现空值。 列匹配:在主表的表名后面指定列名或列名的组合,这个列或列的组合必须是主表的主键。同时,外键中列的数目必须和主表的主键中列的数目相同。...SET DEFAULT: 含义:这个约束等级在MySQL的InnoDB存储引擎中是不被支持的。理论上,它意味着当主表中的记录被删除或更新时,子表中所有引用该记录的外键记录会被设置为一个默认值。...我们希望确保每个员工都属于一个存在的部门,因此可以在employee表中为dept_id列添加外键约束,引用department表中的id列。...答:建外键约束,你的操作(创建表、删除表、添加、修改、删除)会受到限制,从语法层面受到限制。例如:在员工表中不可能添加一个员工信息,它的部门的值在部门表中找不到。...例如:在员工表中,可以添加一个员工的信息,它的部门指定为一个完全不存在的部门。 问题3:那么建和不建外键约束和查询有没有关系? 答:没有 在 MySQL 里,外键约束是有成本的,需要消耗系统资源。

    13410

    面试过程中Mysql数据库常被问到的问题详解

    (2)域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。...定义:主键–唯一标识一条记录,不能有重复的,不允许为空 外键–表的外键是另一表的主键,外键可以有重复的,可以是空值 索引–该字段没有重复值,但可以有一个空值 作用:主键–用来保证数据完整性 外键–用来和其他表建立联系用的...(1)非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 (2)相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。...区别: char (M) 类型的数据列里,每个值都占用 M 个字节,如果某个长度小于 M,MySQL 就会在它的右边用空格字符补足。(在检索操作中那些填补出来的空格字符将被去掉)。...varchar (M) 类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为 L+1 字节)。 Mysql 的存储引擎,myisam 和 innodb 的区别。

    68830

    MySQL技能完整学习列表5、数据库操作——3、索引(Indexing)——4、约束(Constraints)

    唯一索引:确保索引列的值都是唯一的,但允许有空值。 主键索引:特殊的唯一索引,不允许有空值。一个表只能有一个主键。...组合索引:多个列上的索引,搜索条件必须使用到组合索引中的第一个列,才能利用到索引。 索引的排序方法: 索引默认是按照升序(ASC)进行排序的。但也可以在创建索引时明确指定排序方向。...约束(Constraints) MySQL的约束是一种规则,用于限制表中的数据以确保数据的准确性和可靠性。约束可以在创建表时定义,也可以在表创建后添加。...一个表的外键列的值必须引用另一个表的主键或唯一键的值。 示例:创建一个名为orders的表,其中的student_id列引用students表的id列。...5、CHECK 约束 确保某列的值满足指定的条件。需要注意的是,虽然MySQL支持CHECK约束的语法,但在某些存储引擎(如InnoDB)中,它们不会强制执行。

    26310

    2024Mysql And Redis基础与进阶操作系列(3)作者——LJS

    唯一性约束允许列值为空。 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同 MySQL会给唯一约束的列上默认创建一个唯一索引。 同一个表可以有多个唯一约束。...唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空。 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同 MySQL会给唯一约束的列上默认创建一个唯一索引。...字段列表中如果是一个字段,表示该列的值唯一。...3.6 删除唯一约束 添加唯一性约束的列上也会自动创建唯一索引。...添加唯一性约束的列上也会自动创建唯一索引。 删除唯一约束只能通过删除唯一索引的方式删除。

    21510

    数据定义: CREATE、DROP、ALTER

    另一方面,为了使 MySQL 客户端更容易地使用 TIMESTAMP 列,服务器报告这样的列被赋值为 NULL 值(这是真的),即使 TIMESTAMP 实际上决不会包含一个 NULL 值。...157 158 PRIMARY KEY 是一个唯一 KEY,它还有一个额外的约束,所有键列必须被定义为 NOT NULL。在 MySQL 中,该被命名为 PRIMARY。...这在任何方面都不影响你如何使用该列;在 MySQL 中,VARCHAR 只是存储字符的另一个不同的方法。MySQL 执行这个转换,是因为它节省空间,并且使表操作更快。...例如,如果你尝试将一个 VARCHAR 列更改为 CHAR,而如果在这个表中包含其它的变长列,MySQL 将仍然使用 VARCHAR。...如果你移除一个AUTO_INCREMENT 列,并添加另一个 AUTO_INCREMENT 列,值将再次从 1 开始。 389 390 查看章节 A.6.1 ALTER TABLE 的问题。

    1.6K20

    MySql基础之约束

    :   1)单列约束:每个约束只约束一列   2)多列约束:每个约束可约束多列数据 根据约束的作用范围,约束可分为:   1)列级约束:只能作用在一个列上,跟在列的定义后面   2)表级约束...:可以作用在多个列上,不与列一起,而是单独定义 根据约束起的作用,约束可分为:   1)NOT NULL 非空约束,规定某个字段不能为空   2)UNIQUE 唯一约束,规定某个字段在整个表中是唯一的.../某列的值不允许为空 关键字:not null 非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空 一个表可以有很多列都分别限定了非空 添加非空约束 建表时 CREATE TABLE...关键字:UNIQUE 同一个表可以有多个唯一约束。 唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许多列值为空。...在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。 MySQL会给唯一约束的列上默认创建一个唯一索引。

    14810

    MySQL 的约束和索引专题

    如果从表中删除某一行,其主键值不分配给新行。 外键约束 外键是表中的一列,其值必须列在另一表的主键中。外键是保证引用完整性的极其重要部分。...提示:外键有助防止意外删除,除帮助保证引用完整性外,外键还有另一个重要作用。在定义外键后,DBMS 不允许删除在另一个表中具有关联行的行。例如,不能删除关联订单的顾客。...❑ 表可包含多个唯一约束,但每个表只允许一个主键。 ❑ 唯一约束列可包含 NULL 值。 ❑ 唯一约束列可修改或更新。 ❑ 唯一约束列的值可重复使用。...检查约束 检查约束用来保证一列(或一组列)中的数据满足一组指定的条件。检查约束的常见用途有以下几点。 ❑ 检查最小或最大值。例如,防止 0 个物品的订单(即使 0 是合法的数)。 ❑ 指定范围。...使用 ALTER 命令删除索引 主键作用于列上(可以一个列或多个列联合主键),添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。

    1.6K30

    MySQL约束详接

    约束的分类 非空约束   关键字 NOT NULL  特点 默认,所有的类型的值都可以是NULL,包括INT、FLOAT等数据类型 非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空...一个表可以有很多列都分别限定了非空 空字符串''不等于NULL,0也不等于NULL  添加非空约束 CREATE TABLE 表名称( 字段名 数据类型,   字段名 数据类型 NOT NULL...唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空。在创建唯一约束的时候, 如果不给唯一约束命名,就默认和列名相同。...MySQL会给唯一约束的列上默认创建一个唯一索引。 添加唯一约束 举例:    删除唯一约束 添加唯一性约束的列上也会自动创建唯一索引。 删除唯一约束只能通过删除唯一索引的方式删除。...删除时需要指定唯一索引名,唯一索引名就和唯一约束名一样。 如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中排在第一个的列名相同。也可以自定义唯一性约束名。

    1.8K10

    MySQL中null值的一个小坑

    01、MySQL中null值的一个小坑 今天在测试null值的时候,发现了一个小问题,记录在这里,不知道大家以前遇到过没。...事情发展是这样的,在过滤一个表中的数值的时候,需要把age=2的列给剔除掉,然后查看剩余的列信息,这个操作看起来比较简单,我用一个表模拟一下过程: CREATE TABLE `test` ( `id...,而age字段没有添加这个约束,然后我们先插入一部分数据,如下: mysql:yeyztest 23:32:57>>select * from test; +----+------+-------+ |...其实这个问题,在之前的4月29号的文章中有说到过,就是在一条数据记录里面,null值字段和一般的字段是不在一起存储的,null值字段是存储在null值列表里面的。...所以造成了检索时候不匹配的现象,这个还是比较重要的一个点,希望对大家有用。 声明一下,测试环境是5.7.16版本的MySQL。

    89120

    一文读懂mysql的索引

    唯一索引确保索引中的值是唯一的,不允许有重复值。...table_name: 指定要修改的表的名称。ADD CONSTRAINT: 这是用于添加约束(包括唯一索引)的关键字。index_name: 指定要创建的唯一索引的名称。约束名称在表中必须是唯一的。...请注意,如果表中已经有重复的 email 值,那么添加唯一索引将会失败。在创建唯一索引之前,你可能需要确保表中的 email 列没有重复的值。...你可以指定一个或多个列作为索引的组合。这些列的数据类型通常是数值、文本或日期。CONSTRAINT: 用于添加约束的关键字。index_name: 指定要创建的唯一索引的名称。...尝试以下实例删除索引:mysql> ALTER TABLE testalter_tbl DROP INDEX c;四、使用 ALTER 命令添加和删除主键主键作用于列上(可以一个列或多个列联合主键),添加主键索引时

    13210

    Excel公式技巧93:查找某行中第一个非零值所在的列标题

    有时候,一行数据中前面的数据值都是0,从某列开始就是大于0的数值,我们需要知道首先出现大于0的数值所在的单元格。...例如下图1所示,每行数据中非零值出现的位置不同,我们想知道非零值出现的单元格对应的列标题,即第3行中的数据值。 ?...图2 在公式中, MATCH(TRUE,B4:M40,0) 通过B4:M4与0值比较,得到一个TRUE/FALSE值的数组,其中第一个出现的TRUE值就是对应的非零值,MATCH函数返回其相对应的位置...MATCH函数的查找结果再加上1,是因为我们查找的单元格区域不是从列A开始,而是从列B开始的。...ADDRESS函数中的第一个参数值3代表标题行第3行,将3和MATCH函数返回的结果传递给ADDRESS函数返回非零值对应的标题行所在的单元格地址。

    9.9K30

    MySQL 约束

    2.分类 根据约束数据列的限制, 约束可分为: 单列约束:每个约束只约束一列(字段) 多列约束:每个约束可约束多列数据 根据约束的作用范围,约束可分为: 列级约束:只能作用在一个列上,跟在列的定义后面...表级约束:可以作用在多个列上,不与列一起,而是单独定义 根据约束所起的作用,约束可分为: 主键约束 主键约束确保表中的每一行都具有唯一标识符,能够唯一标识该表中的每条记录。...外键约束 外键约束用于建立表与表之间的关系,确保引用另一个表中的值时的完整性。 外键约束经常和主键约束一起使用,用来确保数据的完整性,即保证该字段的值必须来自于主表的关联列的值。...在从表添加外键约束,用于引用主表中某列的值。 例如,在员工信息表中,员工所属部门是一个外键,因为该字段是部门表的主键。...MySQL 为另一个生成一个名称。 创建默认值约束 建表时在字段后使用 DEFAULT 添加默认值可创建默认值约束。

    23110

    约束

    ,使该字段不能有重复的值出现 同一个表可以有多个唯一约束 唯一约束可以是某个列,也可以多个列组合的唯一 唯一的字段可以为空的 在创建约束的时候,如果不给约束命名的话,那么默认和该列的名字相同。...如果是多个列的组合,那么默认的名字就是第一个字段的名字 MySQL会给唯一约束的列默认创建一个唯一索引 创建表的时候进行添加约束: sqlCREATE TABLE student2( sno VARCHAR...主键约束的列不允许重复,也不允许出现空值 一个表最多有一个主键约束,建立主键约束可以在列级别创建,也可以在表级别创建 主键约束对应表中的一列或者多列(复合主键) MySQL的主键名总是PRIMARY,自己命名了也没有用...在阿里开发规范中:不得使用外键约束与级联,一切外键概念必须在应用层解决 CHECK约束 检查模字段的值是否复合要求 MySQL5.7可以支持该约束,但是不起作用。...但是在MySQL8.0中就可以使用check约束了 DEFAULT约束 指定某个字段默认值,意思就是当该字段没有插入数据的时候,使用默认值 就是在后面加上default

    80620

    2019-PHP面试题大全【数据库部分】

    (2)域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。...主键、外键和索引的区别 定义: 主键–唯一标识一条记录,不能有重复的,不允许为空 外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值 索引–该字段没有重复值,但可以有一个空值...区别: char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足。(在检索操作中那些填补出来的空格字符将被去掉)。...varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。 16.Mysql 的存储引擎,myisam和innodb的区别。...(2) 选择合适的表字段数据类型和存储引擎,适当的添加索引。 (3) 做mysql主从复制读写分离。 (4)对数据表进行分表,减少单表中的数据量提高查询速度。

    51520

    【MySQL知识点】唯一约束、主键约束

    、主键约束噢~ ---- 唯一约束 定义 唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。...语法如下: #列级约束 字段名 数据类型 unique; #表级约束 unique(字段名1,字段名2…); 列级约束定义在一个列上,只对该列起约束作用。...表级约束是独立于列的定义,可以应用在一个表的多个列上。...创建复合唯一约束 在表级唯一性约束创建时,unique()的字段列表中,可以添加多个字段,组成复合唯一键,特点是只有多个字段的值相同时才视为重复记录。...主键约束 定义 在MySQL中,为了快速查找表中的某条信息,可以通过设置主键实现。主键可以唯一标识表中的记录。

    3.1K30
    领券