zoukankan      html  css  js  c++  java
  • 十一、mysql常见约束

    参考url:https://www.bilibili.com/video/BV12b411K7Zu

    含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性

    分类:六大约束

         NOT NULL:非空约束,用于保证该字段的值不能为空

         DEFAULT:默认,用于保证该字段有默认值

         PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空

         UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空

         CHECK:检查约束【mysql中不支持】

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

    添加约束的时机:

        1、创建表时

        2、修改表时

    约束的添加分类;

    1、列级约束:六大约束语法上都支持,但外键约束没有效果

    2、表级约束:除了非空、默认,其他都支持

    通用语法:

      Create table if not exists stuinfo(

        Id int primary key,

        Stuname varchar(20) not null,

        Sex char(1),

        Age int default 18,

        Seat int unique,

        Majorid int,

        Constraint fk_stuinfo_major foreign key(majorid) references major(id)

      )

    主键和唯一的对比:

     

    保证唯一性

    是否允许为空

    一个表中可以有多少

    是否允许组合

    主键

    至多有1个

    允许,但不推荐

    唯一

    可以有多个

    允许,但不推荐

    外键:

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

      2) 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。

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

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

       删除数据时,先删除从表,再删除主表

    1、创建表时添加约束

      1) 添加列级约束

        语法:

          直接在字段名和类型名后面追加 约束类型即可

          只支持:默认、非空、主键、唯一

          USE students;

          Create table stuinfo(

            Id int,primary key,# 主键

            Stuname varchar(20),not null,#非空

            Gender char(1) check(gender=’男’ or gender=’女’),#检查

            Seat int unique,#唯一

            Age int default 18,#默认约束

            Majorid int references major(id) #外键

          )

          Create table major(

            Id int primary key,

            majorName varchar(20)

          )

          DESC stuinfo;

          #查看stuinfo表中所有的索引,包括主键、外键、唯一

          SHOW INDEX FROM  stuinfo;

      2) 添加表级约束

        语法:

          在各个字段的最下面

          【Constraint 约束名】 约束类型(字段名)

          Create table stuinfo(

            Id int,

            Stuname varchar(20),

            Gender char(1),

            Seat int,

            Age int,  

            Majorid int,

            Constraint pk primary key(id),#主键

            Constraint uq unique(seat),#唯一键

            Constraint ck check(gender=’男’ or gender=’女’),#检查

            Constraint fk_stuinfo_major foreign key(majorid) references major(id) #外键

          )

    2、修改表时添加约束

      1、添加列级约束

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

      2、添加表级约束

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

          Drop table if exists stuinfo;

          Create table stuinfo(

            Id int,

            Stuname varchar(20),

            Gender char(1),

            Seat int,

            Age int,

            Majorid int

          )

        1) 添加非空约束

          Alter table stuinfo modify column stuname varchar(20) not null;

        2) 添加默认约束

          Alter table stuinfo modify column age int default 18;

        3) 添加主键

          # 添加列级约束

          Alter table stuinfo modify column id int primary key;

          #添加表级约束

          Alter table stuinfo add primary key(id);

        4) 添加唯一

          # 添加列级约束

          Alter table stuinfo modify column seat int primary key;

          #添加表级约束

          Alter table stuinfo add primary key(seat);

        5) 添加外键

          Alter table stuinfo add constraint fk_stuinfo_major foreign key (majorid) references major(id)

      3、修改表时删除约束

        1、删除非空约束

          Alter table stuinfo modify column stuname varchar(20) null;

        2、删除默认约束

          Alter table stuinfo modify column age int;

        3、删除主键

          Alter table stuinfo drop primary key;

        4、删除唯一键

          Alter table stuinfo drop index seat;

        5、删除外键

          Alter table stuinfo drop foreign key fk_stuinfo_major;

  • 相关阅读:
    禁止微信内置浏览器调整字体大小
    常用EXE文件反编译工具【转】
    C++发送HTTP请求---亲测可行(转)
    Cesium简介 [转]
    WebGL可视化地球和地图引擎:Cesium.js
    HTML5 canvas图形库 RGraph【转】
    [GitHub开源]基于HTML5实现的轻量级Google Earth三维地图引擎,带你畅游世界 【转】
    OpenGL实现多层绘制(Layered Rendering) [转]
    深度剖析OpenGL ES中的多线程和多窗口渲染技术
    OOP几大原则【转】
  • 原文地址:https://www.cnblogs.com/nuochengze/p/12584032.html
Copyright © 2011-2022 走看看