zoukankan      html  css  js  c++  java
  • mysql数据库(6)--常见的约束

    约束是一种限制,它是对表中行和列的数据做出约束,确保表中数据的完整性和唯一性。

    mysql中常见的约束主要分为以下6种,分别为:

    1、主键(primary key):用于保证该字段值具有唯一性非空,如员工编号;

    2、唯一(unique):用于保证该字段的值具有唯一性可以为空;

    3、非空(not null):用于保证该字段的值不能为空;

    4、默认(default):用于保证该字段有默认值,如性别;

    5、外键(foreign key):用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。通过在从表中添加外键约束,用于引用主表中某列的值

    6、检查约束(check)--mysql中不支持

    其他约束:

    auto_increment:自增长约束

    unsigned:无符号约束

    zerofill:零填充约束--如果指定了int的位数(如6位),而此时的整型数据为11,通过添加zerofill约束,此时表中的数据为000011,即通过0来填充确保

    一、什么时候添加约束?

    一般在创建表或者修改表时添加约束。

    【修改表时添加约束】

    1、添加列级约束

    alter table 表名 modify column 字段名 字段类型 新约束

    2、添加表级约束

    alter table 表名 add [constraint 约束名] 约束类型(字段名) [外键的引用]

    二、如何添加约束?

    1、约束的添加主要分为以下两种方式,分别为:

    (1)列级约束:6大约束在语法上都支持使用列级约束,但是通过列级约束创建的外键约束没有效果

    (2)表级约束:除非空(not null)和默认(default)外,其他4种约束均支持通过表级约束来创建

    2、语法结构:

    表级约束:[constraint 约束名] 约束类型(字段名) 

         [constraint 约束名] 约束类型(从表字段名) references 主表(主表的关联列字段)  -- 外键约束

    1 create table 表名(
    2     字段名1 字段类型 列级约束,
    3     字段名2 字段类型 列级约束,
    4     ......
    5     字段名m 字段类型,
    6     表级约束            
    7 )    

    【说明】

    外键约束的约束名命名规范:fk_从表名_主表名

    【实例】

    三、常见面试题

    1、主键约束和唯一约束的比较

      是否保证唯一性 是否允许为空 同一个表中是否支持多个 是否允许组合
    主键(primary key) 是,但不建议使用
    唯一(unique) 是,但是只能有一个null 是,但不建议使用

    【关于是否允许组合的说明】

    在使用表级约束为表中的数据添加约束条件时,可以将表中的字段名组合使用,如约束类型(字段名1,字段名2)

    如:primary key(id,name),此时表中两条记录中只要id和name字段的值不同时相同,就能满足primary key的约束条件。如(1,'mary')和(1,'john')

    2、外键约束的注意事项

    (1)要求在从表中设置外键关系

    (2)从表中外键列的类型和主表中关联列的类型要求一致或者类型兼容,对于字段名称无相关要求

    (3)主表关联列必须是一个key,一般是primary key或者unique

    (4)在插入数据是,先插入主表,再插入从表;删除数据时,先删除从表,再删除主表(***)

  • 相关阅读:
    css3 容器内容垂直居中
    css3 背景图动画一
    C# linq 最大、最小对象的扩展
    线程中为控件赋值Winform
    C#在高分屏上让窗体程序忽略系统的显示缩放
    获取搜索到的内容
    XMLHelper
    获得WebBrowser中的图片数据
    单例模式通用类
    将实体类、匿名对象转换为SqlParameter列表
  • 原文地址:https://www.cnblogs.com/yif930916/p/14858823.html
Copyright © 2011-2022 走看看