zoukankan      html  css  js  c++  java
  • 常用约束

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

    分类:
    not null:非空,保证字段的值不为空。如姓名
    default:默认约束,用于保证该字段有默认值。如性别
    primary key:主键,保证该字段的值具有唯一性,并且非空。如学号
    unique:唯一,用于保证该字段的值具有唯一性,但可以为空。如座位号
    check:检查【mysql中不支持】。如年龄,性别
    foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自主表关联列的值。在从表添加外键约束,用于引用主表中某列的值

    添加约束的时机:

    1. 创建表时
    2. 修改表时

    约束添加的分类:

    1. 列级约束:
      六大约束语法上都支持,但外键约束没有效果
    2. 表级约束:
      除了非空、默认,其他都支持

    主键和唯一键的比较:

    1. 主键不允许为空,唯一键可以为空
    2. 一个表中只能有一个主键,而唯一键可以有多个
    3. 都具有唯一性
    4. 允许组合,但不推荐

    外键的特点:

    1. 要求在从表设置外键关系
    2. 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
    3. 主表中的关联列必须是一个key(一般是主键、唯一键)
    4. 插入数据时,先插入主表、在插入从表。删除数据时,先删除从表,在删除主表

    一、创建表时添加约束

    1、添加列级约束

    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 foreign key references major(id),外键
    );
    
    create tbale major(
        id int primary key,
        majorName varchar(20)
    );
    

    show index from 表名查看表中所有的索引,包括主键,外键、唯一

    2.添加表级约束

    语法:
    在各个字段的最下面
    [constraint 约束名] 约束类型(字段名)

    create table stuinfo(
        id int,
        stuname varchar(20),
        gender char(1),
        seat int,
        age int,
        majorid int,
        
        constraint pk prmary key(id),主键
        constraint uq unique(seat),唯一键
        constraint ck check(gender=‘男’ or gender =‘女’),检查
        constraint fk stuinfo_major foreign key(majorid) references major(id)外键
    )
    

    二、修改表时添加约束

    语法:

    1. 添加列级约束
      alter table 表名 modify column 字段名 字段类型 新约束;
    2. 添加表级约束
      alter table 表名 add 约束类型(字段名) 外键的引用;

    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 keuy(id);
    1. 添加唯一
    • 列级约束
      alter table stuinfo modify column seat int unique;
    • 表级约束
      alter table stuinfo add unique(seat);
    1. 添加外键
      alter table stuinfo add [constraint fk_stuinfo_major] forengin key(majorid) references major(id);

    三、修改表时删除约束

    1. 删除非空约束
      alter table stuinfo modify stuname varchar(20) null;
    2. 删除默认约束
      alter table stuinfo modify age int;
    3. 删除主键
      alter table stuinfo drop primary key;
    4. 删除唯一
      alter table stuinfo drop index seat;
    5. 删除外键
      alter table stuinfo drop foreign key 外键名
  • 相关阅读:
    【redis】redis的 key的命名规则
    【redis】存入redis的值,如果为null是否默认不被存入
    【java】StringBuilder的三种清除方法对比
    【java】hash一致性算法的实现区别【标题暂定】
    【java】Java中十六进制转换 Integer.toHexString()到底做了什么?什么时候会用到它?为什么要用它?byte为什么要&0xff?为什么要和0xff做与运算?
    【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式 + map的几种迭代方式
    【java】Map、Set、List不同数据结构的各种不同循环迭代的效率对比,使用场景
    【java】安全加密MessageDigest的功能及用法【hash一致性算法】
    hbase分布式集群搭建
    hadoop分布式集群搭建
  • 原文地址:https://www.cnblogs.com/ylcc-zyq/p/13139338.html
Copyright © 2011-2022 走看看