首页 > 数据库 >MySQL中的约束

MySQL中的约束

时间:2024-09-13 10:24:04浏览次数:12  
标签:规定 约束 完整性 MySQL table Integrity 表级

约束概述

1.1 为什么需要约束

数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。

为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑:

  • 实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录

  • 域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女”

  • 引用完整性(Referential Integrity):例如:员工所在部门,在部门表中要能找到这个部门

  • 用户自定义完整性(User-defined Integrity):例如:用户名唯一、密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5倍。

1.2 什么是约束

约束是表级的强制规定。

可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定约束

1.3 约束的分类

  • 根据约束数据列的限制,约束可分为:

    • 单列约束:每个约束只约束一列

    • 多列约束:每个约束可约束多列数据

  • 根据约束的作用范围,约束可分为:

    • 列级约束:只能作用在一个列上,跟在列的定义后面

    • 表级约束:可以作用在多个列上,不与列一起,而是单独定义

            位置          支持的约束类型                 是否可以起约束名
列级约束:   列的后面        语法都支持,但外键没有效果       不可以
表级约束:   所有列的下面     默认和非空不支持,其他支持       可以(主键没有效果)
  • 根据约束起的作用,约束可分为:

    • NOT NULL 非空约束,规定某个字段不能为空

    • UNIQUE 唯一约束规定某个字段在整个表中是唯一的

    • PRIMARY KEY 主键(非空且唯一)约束

    • FOREIGN KEY 外键约束

    • CHECK 检查约束

    • DEFAULT 默认值约束

注意: MySQL不支持check约束,但可以使用check约束,而没有任何效果

  • 查看某个表已有的约束

#information_schema数据库名(系统库)
#table_constraints表名称(专门存储各个表的约束)
SELECT * FROM information_schema.table_constraints
WHERE table_name = '表名称';

标签:规定,约束,完整性,MySQL,table,Integrity,表级
From: https://blog.csdn.net/2301_80114420/article/details/142203908

相关文章

  • 备份MySQL binlog
    以前备份binlog时,都是先在本地进行备份压缩,然后发送到远程服务器中。但是这其中还是有一定风险的,因为日志的备份都是周期性的,如果在某个周期中,服务器宕机了,硬盘损坏了,就可能导致这段时间的binlog就丢失了。而且,以前用脚本对远程服务器进行备份的方式,有个缺点:无法对MySQL服务器当......
  • PbootCMS无缝sqlite数据库转mysql数据库
    将PbootCMS的SQLite数据库无缝转换为MySQL数据库,可以遵循以下步骤。请注意,这里所说的“无缝”转换是指尽可能减少数据丢失和格式错误,但仍然需要确保转换后的数据能够正常工作。以下是详细的转换步骤:1.导出SQLite数据库打开SQLiteStudio或类似工具:使用SQLiteStud......
  • 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
    昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所有的表通过showtables能看到,但是select的过程中却报“Tabledoesn'texist”。于是,建议他试试可传输表空间。同......
  • 【重学 MySQL】二十六、内连接和外连接
    【重学MySQL】二十六、内连接和外连接内连接(INNERJOIN)外连接(OUTERJOIN)总结在MySQL中,内连接和外连接是两种常见的表连接方式,它们在处理多个表之间的关系时发挥着重要作用。内连接(INNERJOIN)概念:内连接是连接操作中最常用的一种,它通过将两个表中满足连......
  • MySQL索引的深入学习与应用
    一、索引的基本概念 索引是数据库管理系统中用于加速数据检索的一种数据结构,其工作原理类似于书籍的目录,能够指引数据库系统快速定位到目标数据。通过减少数据扫描范围,索引显著提升了数据库的查询效率,特别是在处理大规模数据集时,效果尤为显著。索引数据通常存储在磁盘上......
  • mysql 使用binlog还原数据
    MySQL的二进制日志(BinaryLog,简称binlog)是MySQL数据库的一个重要功能,它记录了所有的修改数据库内容的操作(如INSERT、UPDATE、DELETE等),但不包括SELECT和SHOW这类操作。这些日志对于数据恢复、复制和数据审计等场景非常有用。1.确认binlog是否开启登录MySQL后,可以通过SH......
  • MySQL练习50道
    MySQL练习50道经典SQL练习题数据表介绍1.学⽣表Student(SId,Sname,Sage,Ssex)SId学⽣编号Sname学⽣姓名Sage出⽣年⽉Ssex学⽣性别2.课程表Course(CId,Cname,TId)CId课程编号Cname课程名称TId教师编号3.教师表Teacher(TId,Tname)TI......
  • MySQL安装
    MySql安装1、下载mysql安装包再mysql官方下载安装包2、删除依赖包#查找依赖包rpm-qa|grepmysqlrpm-qa|grepMySQLrpm-qa|grepmariadb#删除查询到的依赖包rpm-e--nodepsmariadb-libs-5.5.68-1.el7.x86_643、安装mysql#将安装包上传到linux中#my......
  • MySQL常用函数
    一、聚合函数1、max():计算指定列的最大值2、min():计算指定列的最小值3、count():计算指定列不为null的数据的数量4、sum():计算指定列的数值的和如果计算的列的类型不是数值类型,计算结果为05、avg():计算指定列的数值的平均值如果计算的列的类型不是数值类型,计算的结果......
  • Mysql--操作
    目录数据类型数据类型的属性1、整型2、浮点型(float和double)3、定点数(numeric等价于decimal)4、字符串(char,varchar,_text)5.二进制数据(xxxBLOB和xxxBINARY了解就行)6.日期时间类型7.位类型(bit)8.枚举(enum)9.集合(set)10.特殊的NULL类型基本操作DDL数据库管理create创建数据库sh......