• SQL——SQL语句总结(3)


    约束管理

    数据完整性指定的是数据的一致性和正确性。

    MySQL中常用六类约束:

    not null : 非空约束,指定某列值不为空。 非空约束用于确保当前列的值不为空值,非空约束只能出现在对象的列上。对于使用了非空约束的字段,如果用户再添加数据时没有指定值,数据库系统会报错。格式如下:

    column_name data_type not null

    unique : 唯一约束,指定某列和几列组合的数据值不能重复。要求该列唯一,允许为空。格式如下:

    column_name data_type unique

    primary key : 主键约束,指定某列的数据不能重复、唯一且不为null。主键约束相当于唯一约束与非空约束的组合,主键约束列不允许重复,也不允许出现空值。格式如下:

    column_name data_type primary key

    foreign key : 外键,指定该列记录属于主表中某列的记录,参考另一条数据。外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每个外键值必须等于另一个表中主键列的某个值。外键:它是表中的一个字段,他可以不是本表的主键,但对应另外一个表的主键或唯一约束。

    主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表既是主表。

    从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表既是从表。

    [constraint<外键名>] foreign key (字段名1[,字段名2,...])
    references <主表名> (主键列1[,主键列2,...])

    注:“外键名”为定义的外键约束的名称,一个表中不能有多个相同名称的外键;

           “字段名”表示子表需要添加外键约束的字段列;

           “主表名”即被子表外键所依赖的表的名称;

           “主键列”表示主表中定义的主键列,或者主键列组合。

    check : 检查,指定一个表达式,用于检验指定数据。(mysql不支持)

    default : 默认约束,指定某列的默认值。格式如下:

    column_name data_type default default_value

    建表时添加约束

    非空约束:

    create table table_name (column_name data_type not null );

    唯一约束:

    create table table_name (column_name data_type unique);

    主键约束:

    create table table_name (column_name data_type primary key);

    主键自增:

    create table table_name (
    column_name1 data_type1 primary key auto_increment,
    column_name2 data_type2 not null
    )auto_increment=n;

    注意:column_name1 为主键,n表示自增的初始值。设置自增后,在插入数据的时候不需要给该列插入值。

    非建表时操作约束

     非空约束:

    --添加
    alter table table_name modify column_name data_type not null
    
    --删除
    alter table table_name modify column_name data_type null

    唯一约束:

    --添加
    alter table table_name add [constraint<约束名>] 
    unique (column_name) ;
    --修改
    alter table table_name modify column_name data_type unique; 
    --删除
    alter table table_name drop index 约束名;

    注:删除时必须知道约束的名字。

    主键约束:

    --添加
    alter table table_name add [constraint<约束名>] 
    primary key (column_name) ;
    --修改
    alter table table_name modify column_name data_type primary key; 
    --删除
    alter table table_name drop primary key;

    外键约束:

    --添加
    alter table table_name add [constraint<约束名>] 
    foreign key (column_name) 
    references (主)table_name (column_name); 
    --删除
    alter table table_name drop foreign key 约束名;
  • 相关阅读:
    Java JDK在Mac下的配置方法
    Kubernetes 在知乎上的应用
    kubernetes 简介:kube-dns 和服务发现
    CNI:容器网络接口
    SkyDNS试用
    docker 跨主机网络:overlay 简介
    为什么Kubernetes不使用libnetwork
    libnetwork 源码浅析
    NVMe到底是什么?用它的SSD有啥优势?
    TUNING FOR ALL FLASH DEPLOYMENTS
  • 原文地址:https://www.cnblogs.com/nyfq/p/13880273.html
Copyright © 2020-2023  润新知