• mysql笔记(11)-约束的添加、修改和删除


    本文将简单介绍几种常见的约束类型,以及添加/修改/删除约束的方式

    一、约束类型

    在MySQL中,有如下几种约束:
    (1) NOT NULL:指示某列不能存储空值
    (2) UNIQUE:保证某列的每行必须有唯一的值
    (3) PRIMARY KEY:指示某一列为表的主码,是非空且唯一
    (4) CHECK:保证列中的值符合指定的条件
    (5) DEFAULT:规定没有给列赋值时的默认值
    (6) FOREIGN KEY:保证列中的数据必须来源于另一个表的某一列(参照完整性)

    二、添加约束

    1、建表时添加约束

    例如 在新建instructor表时
    设置ID为主码,name有非空约束,dept_name有默认值
    并设置检查约束salary>0

    create table instructor{
    ID varchar(5) PRIMARY KEY,
    name varchar(20) NOT NULL,
    dept_name varchar(20) DEFAULT 'Physcis',
    salary decimal(8,2),
    CHECK(salary>0)
    };
    
    2、表结构已存在时添加约束

    有2种写法:
    (1)仅为某一列添加约束

    //添加NOT NULL约束:用第(2)种写法
    
    //添加UNIQUE约束
    alter table table_name
    add UNIQUE(column_name);
    
    //添加PRIMARY KEY约束  
    alter table table_name
    add PRIMARY KEY(column_name);
    
    //添加DEFAULT约束
    alter table table_name
    add CHECK(指定条件);
    
    //添加DEFAULT约束
    alter table table_name
    alter column_name set DEFAULT 'xxx';
    

    (2)更改(重写)某一列的数据类型、约束类型(推荐)

    alter table table_name
    modify column column_name data_type constraint;
    

    三、修改约束

    上述提到的alter+modify的写法 同样可以用于修改约束类型
    例如 在instructor表中 修改dept_name的默认值为'Music'

    alter table instructor
    modify column dept_name varchar(20) DEFAULT 'Music';
    

    四、删除约束

    //删除NOT NULL约束:用alter+modify
    
    //删除PRIMARY KEY
    alter table table_name
    drop PRIMARY KEY;
    
    //删除DEFAULT约束
    alter table table_name
    alter column_name drop DEFAULT;
    

    当需要删除UNIQUE或CHECK约束时
    我们需要查看建表语句 show create table table_name G
    来获取约束的别名
    例如 已知在student表中
    对 tot_credit列有CHECK约束 (tot_cred>=0)
    11-1.png
    如上图所示,这个CHECK约束的别名为'student_chk_1'
    接下来就可以删除这个约束了

    alter table student
    drop CHECK student_chk_1;
    

    我们可以用类似的方式 来删除UNIQUE约束

    alter table table_name
    drop index constraint_name;
    
  • 相关阅读:
    js控制表格隔行变色
    浅谈css的伪元素::after和::before
    CSS 背景色变化 结构化伪类的练习
    css清除浮动的几种方式,哪种最合适?
    怎么去检测浏览器支不支持html5和css3?
    display:flex 布局详解(2)
    css3弹性盒子display:flex
    Referer和空Referer
    不要懒惰,坚持每周总结一篇博客
    比较2个文件的不同处
  • 原文地址:https://www.cnblogs.com/baebae996/p/12919391.html
Copyright © 2020-2023  润新知