• MySql(二):常见的那些个约束


       今天总结一下mysql当中的常见约束吧!

      那什么是约束呢?通俗点讲,约束就是限定指定字段的存放规则!

    ● 主键约束(Primary Key)

    ● 外键约束(Foreign Key)

    ● 非空约束(Not Null)

    ● 唯一约束(Unique)

    ● 默认约束(Default)


    主键约束 Primary Key

    主键约束要求主键列的数据唯一且不允许为空, 可分为单字段主键和多字段联合主键.

    添加主键

    # 建表时在字段后设置主键并自增
    create table demo(
    id  int primary key auto_increment);
    # 建表时在约束区设置主键(多字段联合主键)
    # 约束区不能设置自增即:auto_incremen
    create table demo(
    id     int ,
    age  int,
    primary key(id));  # 联合主键为:primary key(id,age));
    # 在已有的表中添加主键
    alter table demo add primary key(id);
    # 在已有表中添加自增主键
    alter table demo modify id int primary key auto_increment;
    # 设置表的已有主键自增
    alter table demo modify id int auto_increment;
    # 设置主键自增起始值(默认是1)
    alter table demo auto_increment=2;

    删除主键

    # 注意:若指定了主键自增则此法删除不了主键(约束)
    alter table demo drop primary key;
    # 若主键指定了自增,则用只能从定义来删除主键了
    alter table demo modify id int;

    外键约束 Primary Key

    外键用来在两个表之间建立链接,它可以是一列或多列,一个表可以有一个或多个外键.

    添加外键

    # 创建表时添加
    # demo1 为主表,外键引用主表的id字段
    create table demo(
    id int,
    price double,
    user_id int,
    foreign key(user_id) references demo1(id))
    # 修改现有表添加
    # 先添加外键字段
    alter table demo add user_id int;
    # 再添加外键约束
    alter table demo add foreign key(user_id) references demo1(id);

    删除外键

    # 一般不用(外键名称可在添加外键时指定,否则为默认的)
    alter table demo drop foreign key 外键名称;

    非空约束 Not Null

    非空约束要求该列字段值不能为空,否则会报错.(可配合默认约束)

    # 在字段后面添加非空约束
    create table demo(
    id  int not null);
    # 在已有表添加非空约束
    alter table demo change id id int not null;
    # 删除非空约束
    alter table demo change id id int;

    唯一约束 Unique

    唯一约束要求改列字段值唯一,允许为null(多个null也可).

    # 创建表时在字段后指定
    create table demo(
    id  int unique);
    # 创建表时在约束区添加
    create table demo(
    id int, 
    age int,
    unique(id, age));
    # 为已有表添加
    alter table demo add unique(id);
    # 删除约束
    alter table demo drop index id;

    默认约束 Default

    指定某列的默认值.

    # 创建表时指定
    create table demo(
    id  int, 
    age  int default 1);

    关注微信公众号,随时随地学习

  • 相关阅读:
    STM32F10x_ADC三通道逐次转换(单次、单通道软件触发)
    STM32F10x_RTC日历
    STM32F4_TIM输入波形捕获(脉冲频率)
    详解 C 语言开发五子棋游戏以及游戏中的重要算法与思路
    平安银行 深度解析梧州模式 或许是国内医药分开最好的模板!
    屏蔽双绞线和非屏蔽双绞线之间的区别
    如何刷新本地的DNS缓存?
    无线网络发射和接收的物理原理!
    wifi基本原理
    大润发创始人黄明端挥泪离场:我战胜了所有对手,却输给了时代!
  • 原文地址:https://www.cnblogs.com/dintalk/p/10844430.html
Copyright © 2020-2023  润新知