zoukankan      html  css  js  c++  java
  • MySQL约束

    202054

    23:05

    1、类型

    分类

    介绍

    Not null

    非空约束,用于指定改字段不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值, 数据库系统会报错。

    default

    默认值,用于指定字段的默认值,如果插入数据时没有插入值,则会使用默认值作为数据

    unique

    唯一值,唯一值,允许为空,但只得一个。确保这一字段中的数据为唯一值。

    Primary key

    主键,用于保证该字段的唯一性且不能为空,

    foreign

    外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性, 一个表的外键可以为空值, 若不为空值,贝lj每一个外键值必须等于另一个表中主键的某个值。

    check

    (MySQL中不支持)用于检查数据是否符合范围,

       

    2、添加时机

    • 创建表时
    • 修改表时

    3、约束添加类型

    • 列级约束

    语法上,六种约束类型都支持在列中写,但是外键约束不起作用。

    • 表级约束

    除了非空和默认都可以写。

    4、使用方法

    • 添加列级约束
      • 案例
    Create table table_constraint(
    
    id int primary key auto_increment,#主键自增
    
    name varchar(20) unique,#唯一姓名
    
    sex varchar(2) default '',#默认性别
    
    QQ int(11) not null#不能为空
    
    );
    • 添加表级约束
      • 案例:
    create table table_constraint(
    
    id int,
    
    name varchar(20),
    
    gender char(1),
    
    age int,
    
    majorid int,
    
    constraint pk primary key(id),
    
    constraint uq unique(name),
    
    constraint ck check(gender = '' or gender=''),
    
    constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束
    
    );
    • 常用的约束添加方法
    Create table if not exists table_constraint(
    
    id int primary key auto_increment,#主键自增
    
    name varchar(20) unique,#唯一姓名
    
    sex varchar(2) default '',#默认性别
    
    QQ int(11) not null#不能为空
    
    constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束
    
    );

    5、区别

    约束

    是否可以为null

    保证唯一性

    一个表中可以有多少个

    是否可以组合

    主键

    不可以

    可以

    至多一个

    可以,但不推荐

    唯一

    可以,但是只能有一个为null

    可以

    可以包含多个

    可以,但不推荐

       

    6、外键特点

    • 要求再从表中设计外键关系
    • 要求主键的类型要和关联的列的类型一致并且要求一致,名称无要求
    • 要求必须先添加主表后创建从表的外键
    • 关联的字段必须是一个key(一般是主键或者是唯一)
    • 插入数据时要先插入主表后插入从表
    • 删除数据时要先删除从表后删除主表

    7、修改时添加约束

    • 添加非空
    alter table table_constraint modify column name varchar(20) not null;
    • 添加默认
    alter table table_constraint modify column gender char(1) default '';
    • 添加主键
      • 列级约束
    alter table table_constraint modify column id int primary key;
      • 表级约束
    alter table table_constraint add primary key(id);
    • 添加唯一
      • 列级约束
    alter table table_constraint modify column id int unique;
      • 表级约束
    alter table table_constraint add unique(name);   
    • 添加外键
      • 列级约束
    alter table table_constraint modify column id int primary key;
      • 表级约束
    alter table table_constraint add foreign key (majorid) references major(id);

    8、修改时删除约束(修改)

    • 删除非空
      alter table table_constraint modify column name varchar(20) null;
    • 删除默认
      alter table table_constraint modify column gender char(1);
    • 删除主键
      alter table table_constraint drop primary key;
    • 删除外键
      alter table table_constraint drop foreign key majorid;
    • 删除唯一
      alter table table_constraint drop indexname;

        

  • 相关阅读:
    [oracle 使用(1)] win7/10 下Oracle10g的安装与卸载
    [原创]利用爬虫技术获取网页数据,以及想要的指定数据
    [mysql使用(1)] 64位Linux下安装mysql-5.7.13-linux-glibc2.5-x86_64
    aop 常见的问题
    Git技巧:右键菜单怎么去除?
    jrebel激活
    python与mysql连接
    linux下mysql的安装
    Linux下jdk和tomcat安装
    Lotto
  • 原文地址:https://www.cnblogs.com/yuknight/p/12833776.html
Copyright © 2011-2022 走看看