zoukankan      html  css  js  c++  java
  • 十一:约束

    约束是一种限制,用于限制表中的数据

    约束6大类:

      1. not null  非空

      2.default 默认

      3.Primary key 主键,用于保证该字段的值具有唯一性,并且非空,例如学号,身份证号这样

      4. unique:唯一,用于保证该字段的值具有唯一性,可以为空,比如座位号

      5.check : 检查约束【mysql不支持】

      6. foreign key 外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值

    添加约束的时机

      1.创建表时

      2.修改表时

    约束的添加分类

      列级约束:

        六大约束语法上都支持,但外键约束没有效果

    # 添加列级约束,形式是相当于修改列的类型一样,在后面加上约束即可
    ALTER TABLE runaway MODIFY COLUMN stuname VARCHAR(10)  UNIQUE ;
    添加列级约束
    # 添加表级约束
    ALTER TABLE runaway ADD UNIQUE(gender);
    添加表级约束
    alter table 表名 drop foreign key 外码名;
    删除表级约束,好像通过这种方式只能删除主键

      表级约束:

        除了非空、默认、其他支持

    主键与唯一对比(重点)

            保证唯一性  是否允许为空   一个表中可以有多少个  是否允许组合

      主键     可以      不可以        最多有一个    是(如果组和那么唯一特性是组合的都相同)

      唯一     可以      可以        可以有多个      

    外键重点: 

      1.要求在从表设置主外键关系

      2.从表的外键列的类型和主表的关联列的类型要求一直或者兼容,名称无要求

      3.主表的关联列必须是一个key(一般是主键或唯一)

      4.插入数据时,先插入主表再插入从表,

      5.删除数据时,先插入从表,在删除主表

    修改表时添加约束:

      1.添加列级约束

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

      2. 添加表级约束

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

      3. 删除主键

        alter table 表名 modify column 字段名 字段类型 (约束类型不写)

         

    # 标识列   自增长列 auto_increment(只会往后增长),标识列不一定和主键搭配,但要求是一个key,且一个表最多有一个标识列

      含义:可以不用手动的插入值,系统默认的序列值

      例如将id设置为标识列  id INT PRIMARY KEY AUTO_INCREMENT

      标识列只能是数值型(整形或者小数都行)

     

    例如

    CREATE TABLE lenss(
        lenssid INT PRIMARY KEY,
        lenssname VARCHAR(10) NOT NULL
    
    );
    CREATE TABLE classa(
        id INT PRIMARY KEY AUTO_INCREMENT,
        stuname VARCHAR(10) NOT NULL,
        desknumber INT UNIQUE,
        gender CHAR DEFAULT 'm',
        lenssid INT,
        CONSTRAINT wj_class_lenss 
        FOREIGN KEY(lenssid) REFERENCES lenss(lenssid)
        
    );
    约束,外键等的应用,注意外键只能在表级约束中有效

    总结:

    主键与唯一:

      1.区别:

        1.一个表至多有一个主键,但可以有多个唯一

        2.主键不允许为空,唯一可以为空

      2.相同点

        1.都具有唯一性

        2.都支持组合键

     外键

  • 相关阅读:
    python 中: lambda
    python 学习 argparse
    深度学习 ——style reconstruction
    简单linux命令1
    intptr_t 指针
    MySQL数据库基本命令-1
    交换机和路由器的区别
    UML图的使用
    操作系统总结链接
    操作系统总结
  • 原文地址:https://www.cnblogs.com/BookMiki/p/14169679.html
Copyright © 2011-2022 走看看