• mysql基础之约束


    约束的目的:
    1、约束保证数据的完整性和一致性。
    2、约束分为表级约束 和 列级 约束。(针对约束字段的数目的多少来确定的)
    3、约束类型包括 not null (非空约束)
      primary key(主键约束)
      unique key(唯一约束)
      default(默认约束)
      foreign key(外键约束)
     
     
    NUll,字段值可以为空
    NOt Null,字段值禁止为空。 如果此字段不赋值,mysql将会报错
    null/not null 限定mysql字段是否必须赋值。
     
    auto_increment
    自动编号,且必须与主键组合使用
    默认情况下,起始值为1,每次增量为1。
     
    primary key
    主键约束
    每张表只能存在一个主键
    主键保证记录的唯一性
    主键自动为NOT NULL
    aouto_increment 必须和主键一块使用,但是主键不一定要和auto_increment使用
     
    unique key
    唯一约束
    唯一约束可以保证记录的唯一性
    唯一约束的字段可以为空值(NULL)
    每张数据表可以存在多个字段唯一约束
    注: 如果多个字段唯一,且为空的话,其实只有一个为空,这样就保证了字段的唯一性。
     
    default
    默认值
    当插入记录时,如果没有明确为字段赋值,则自动赋值为默认值。
     
    foreign key
    外键约束
    保持数据的一致性,完整性。
    实现一对一或一对多的关系。
     
    外键约束的条件:
    1、父表和子表必须使用相同的存储引擎,且禁止使用临时表。
    2、数据表的存储引擎只能为innoDB
    3、外键列和参照列必须有相似的参照类型。其中数字的长度或者或者是否有符号位必须相同;而字符的长度可以不同
    4、外键与参照列必须创建索引。如果外键列不存在索引的话,mysql将自动创建索引。
    写法:foreign key (列名) references 表名 (列名)
     
    外键约束的参照操作:(了解了解)
    1、cascade:当父表删除或者更新时,自动删除或更新子表的匹配行。
    2、set null : 从父表删除或更新,并设置子表中的外键列为null。如果使用该项,必须保证子表列没有指定not null
    3、restrict:拒绝父表的删除或更新操作。
    4、no action : 标准的sql关键字,在mysql中与restrict相同。
     
    注: 在实际开发中一般不使用 foreign key关键字 的物理 外键,一般按照结构 使用逻辑 的外键。因为物理外键 有innodb引擎限制。
     
    表级约束与列级约束
    对一个数据类建立的约束,称为列级约束。
    对多个数据类建立的约束,称为表级约束。
    列级约束既可以在列定义时申明,也可以在列定义后申明。
    表级约束只能在列定义后申明。
     
     
     
     
     
     
     
  • 相关阅读:
    SSLOJ 1298.网站计划
    SSLOJ 1297.GF打Dota
    SSLOJ 1296.猫咪的进化
    脚本1)启动jetty的脚本
    mysql的常用命令
    mysql异常com.mysql.jdbc.PacketTooBigException
    debian apt-get联网安装mysql服务
    mysql 解决Warning: World-writable config file ‘/etc/my.cnf’ is ignored
    ubuntu/debian/linux彻底卸载mysql
    Ubuntu12.04_X64 apt-get install 报错404
  • 原文地址:https://www.cnblogs.com/wgq123/p/6794825.html
Copyright © 2020-2023  润新知