暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

社区博客 | MySQL 约束全解析

点击上方蓝字关注我们





导读

数据库中的约束是确保数据完整性和准确性的重要手段。通过对数据表字段的约束设置,可以限制数据的取值范围、确保数据的唯一性以及建立表与表之间的关联关系。本文将深入介绍MySQL中的各种约束类型及其使用方法,包括非空约束、唯一约束、主键约束、默认约束、检查约束和外键约束,以及如何在创建表和修改表时添加约束,以及外键约束的相关知识。


本文详细介绍MySQL中的各种约束类型及其语法,包括约束的概念、分类、使用方法和外键约束的相关知识。通过学习本文,读者可以掌握如何在数据库设计和管理中灵活运用约束,从而保证数据的完整性和准确性,提高数据库的稳定性和安全性。


原文作者:CSDN博主[屿小夏]


关键词:MySQL、约束、数据有效性、数据完整性



01  
约束概述

概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确、有效性和完整性。

分类:


注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束 。


02  
约束演示

如何在创建表、修改表的时候来指定约束呢,接下来我们就通过一个案例,来演示一下。


对应的建表语句为:
    CREATE TABLE tb_user(
    id int AUTO_INCREMENT PRIMARY KEY COMMENT 'ID唯一标识',
    name varchar(10) NOT NULL UNIQUE COMMENT '姓名' ,
    age int check (age > 0 && age <= 120) COMMENT '年龄' ,
    status char(1) default '1' COMMENT '状态',
    gender char(1) COMMENT '性别'
    );  

    在为字段添加约束时,我们只需要在字段之后加上约束的关键字即可,需要关注其语法。我们执行上面的SQL把表结构创建完成,然后接下来,就可以通过一组数据进行测试,从而验证一下,约束是否可以生效。
      insert into tb_user(name,age,status,gender) values ('Tom1',19,'1','男'),
      ('Tom2',25,'0','男');
      insert into tb_user(name,age,status,gender) values ('Tom3',19,'1','男');
      insert into tb_user(name,age,status,gender) values (null,19,'1','男');
      insert into tb_user(name,age,status,gender) values ('Tom3',19,'1','男');
      insert into tb_user(name,age,status,gender) values ('Tom4',80,'1','男');
      insert into tb_user(name,age,status,gender) values ('Tom5',-1,'1','男');
      insert into tb_user(name,age,status,gender) values ('Tom5',121,'1','男');
      insert into tb_user(name,age,gender) values ('Tom5',120,'男');


      03  
      外键约束

      3.1 介绍

      外键:用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

      我们来看一个例子:


      左侧的emp表是员工表,里面存储员工的基本信息,包含员工的ID、姓名、年龄、职位、薪资、入职日期、上级主管ID、部门ID,在员工的信息中存储的是部门的ID dept_id,而这个部门的ID是关联的部门表dept的主键id,那emp表的dept_id就是外键,关联的是另一张表的主键。

      注意:目前上述两张表,只是在逻辑上存在这样一层关系;在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。

      3.2 语法

      添加外键:
        CREATE TABLE 表名(
        字段名 数据类型,
        ...
        [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
        );



          ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名)REFERENCES 主表 (主表列名) ;

          删除外键:
            ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

            3.3 删除/更新行为

            添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:


            具体语法为:
              ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;


              04  
              Klustron数据完整性保障


              MySQL直到8.0近年的版本才开始让check约束真正生效,在此之前check约束虽然可以输入但是被忽略了。并且直到现在,MySQL对非法的日期、时间、时间戳数据仍然可以输入,还有不符合SQL标准的数据类型随意转换,这些都容易让应用系统的程序员无意中引入错误,不仅可能导致应用系统工作异常或者影响用户体验,而且会导致非法数据进入数据库系统,对后续的数据分析利用带来巨大困难。这些都是MySQL未来需要继续改进的。


              泽拓昆仑Klustron在支持MySQL的协议和语法的同时,在数据有效性检查方面符合SQL标准,避免了上述MySQL的问题,可以确保Klustron管理的数据符合数据类型规范和用户定义的规则。



              原文作者:CSDN博主[屿小夏]
              原文链接:
              https://blog.csdn.net/a1657054242/article/details/136432776


              END

              为促进团队内外的沟通联系,我们Klustron团队的bbs论坛开始上线,欢迎各位同学使用!链接:https://forum.klustron.com/,或者点击文末“阅读原文”,即可跳转

              论坛目前是测试版,可能还存在不稳定的现象,欢迎各位老师、朋友共享信息,如果遇到问题还请谅解。

              欢迎大家下载和安装Klustron数据库集群,并免费使用(无需注册码)

              Klustron 完整软件包下载:
              http://downloads.klustron.com/

              如需购买请邮箱联系sales_vip@klustron.com,有相关问题欢迎添加下方小助手微信联系🌹

              产品文档

              Klustron 快速入门:
              https://doc.klustron.com/zh/Klustron_Instruction_Manual.html

              Klustron 快速体验指南:
              https://doc.klustron.com/zh/Klustron_Quickly_Guide.html

              Klustron 功能体验范例:
              https://doc.klustron.com/zh/Klustron-function-experience-example.html

              Klustron 产品使用和测评指南:
              https://doc.klustron.com/zh/product-usage-and-evaluation-guidelines.html


               点击👆上方,关注获取源代码及技术信息~









              文章转载自KunlunBase 昆仑数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论