码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据库MySQL(四):表中字段约束和外键约束


    约束

    概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
    目的:保证数据库中数据的正确性、有效性、完整性。

    约束分类描述关键字
    非空约束限制该字段的数据不能为NULLNOT NULL
    唯一约束保证该字段的所有数据都是唯一的、不重复的UNIQUE
    主键约束非主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
    默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT
    检查约束保证字段值满足某条件CHECK
    外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY

    代码示例

    CREATE TABLE uesr(
      id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
      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 '性别'
    ) COMMENT '用户表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    外键约束

    # 在创建表时添加外键  
    CREATE TABLE 表名(
         字段名 数据类型,
         ...
         [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
    );
    
    # 在添加表之后添加外键
    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表字段名)
    
    # 删除表的外键
    ALTER TABLE 表名 DROP FOREIGN KEY 外键名称; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    外键关联的删除/更新行为

    在添加了外键之后,更新/删除父表中数据时产生的约束行为。

    行为说明
    NO ACTION当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则不允许删除/更新;默认行为;与RESTRICT一致。
    RESTRICT当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则不允许删除/更新;默认行为;与NO ACTION一致。
    CASCADE当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则也删除/更新外键在子表中的记录。
    SET NULL当在父表中删除/更新对应记录时,首先检查该记录是否有对应的关键,如果有则设置子表中该外键值为NULL,这就要求该外键允许取NULL
    SET DEFAULT父表有变更时,子表将外键列设置成一个默认的值。
    代码示例
    ALTER TABLE 表名 
    	ADD CONSTRAINT 外键名称 
    	FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) 
    	ON UPDATE CASCADE ON DELETE CASCADE;
    
    • 1
    • 2
    • 3
    • 4

    数据库MySQL(一):基础知识
    数据库MySQL(二):DDL数据定义语言
    数据库MySQL(三):DML、DQL、DCL
    数据库MySQL(四):表中字段约束和外键约束
    数据库MySQL(五):多表查询
    数据库MySQL(六):事务

  • 相关阅读:
    java八股文_1
    node.js结合redis+mysql
    关于github申请学生认证-卡在证明上传环节解决方案
    Java 设计模式——抽象工厂模式
    警惕 有种过敏叫“牛奶蛋白过敏”
    Selenium-下拉选择框、弹出框、滚动条操作
    Redis - 保证数据库与缓存数据一致性 - 如何保证两步都执行成功?
    pandas---数据结构(Series、DataFrame 和 MultiIndex)创建方式、属性
    C语言snprintf():将格式化字符串输出到数组中
    STM32F103在CubeIDE运行FreeRTOS
  • 原文地址:https://blog.csdn.net/qq_33021529/article/details/134090915
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号