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

    约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

    MYSQL中,常用的几种约束:

    约束类型:主键外键唯一非空自增默认值
    关键字: primary key foreign key

    unique

    not null

    auto_increment

    default

    1、主键约束 primary key

    主键约束相当于   唯一约束 + 非空约束  的组合,主键约束列不允许重复,也不允许出现空值。

    每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。

    当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

    -- 基本模式
    create table temp( 
    id int primary key,
    name varchar(20)
    );
    
    -- 组合模式
    create table temp(
    id int ,
    name varchar(20),
    pwd varchar(20),
    primary key(id, name)
    );
    
    -- 删除主键约束
    alter table temp drop primary key;
    
    -- 添加主键约束
    alter table temp add primary key(id,name);
    
    -- 修改主键约束
    alter  table temp modify id int primary key

    2、外键约束 foreign key

    外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系

    -- 基本模式
    -- 主表
    create table temp(
    id int primary key,
    name varchar(20)
    );
    
    -- 副表
    create table temp2(
    id int,
    name varchar(20),
    classes_id int,
    foreign key(id) references temp(id)
    );
    
    
    -- 多列外键组合,必须用表级别约束语法
    -- 主表
    create table classes(
    id int,
    name varchar(20),
    number int,
    primary key(name,number)
    );
    
    -- 副表
    create table student(
    id int auto_increment primary key,
    name varchar(20),
    classes_name varchar(20),
    classes_number int,
    /*表级别联合外键*/
    foreign key(classes_name, classes_number) references classes(name, number) 
    );
    
    
    -- 删除外键约束
    alter table student drop foreign key student_id;
    
    
    -- 增加外键约束
    alter table student add foreign key(classes_name, classes_number) references classes(name, number);

    3、 唯一约束unique

    唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。

    唯一约束不允许出现重复的值,但是可以为多个null。

    同一个表可以有多个唯一约束,多个列组合的约束。

    在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。

    唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

    -- 创建表时设置,表示用户名、密码不能重复
        create table temp(
        id int not null ,
        name varchar(20),
        password varchar(10),
        unique(name,password)
    );
    
    
    -- 添加唯一约束
    alter table temp add unique (name, password);
    
    
    -- 修改唯一约束
    alter table temp modify name varchar(25) unique;
    
    -- 删除约束
    alter table temp drop index name;

    4、非空约束 not null  与  默认值 default

    非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

    Null类型特征:

      所有的类型的值都可以是null,包括int、float 等数据类型

    -- 创建table表,ID 为非空约束,name 为非空约束 且默认值为abc
    create table temp(
               id int not null,
               name varchar(255) not null default  'abc',
               sex char null
    );
    
    
    -- 增加非空约束
    alter table temp
    modify sex varchar(2) not null;
    
    -- 取消非空约束
    alter table temp modify sex varchar(2) null;
    
    -- 取消非空约束,增加默认值
    alter table temp modify sex varchar(2) default 'abc' null;
  • 相关阅读:
    要改变静态文本框的值,必须设置静态文本框控件的样式中(Notify通知)勾选
    MFC对话框中的编辑控件的7种操作方式
    孙鑫C++视频教程 rmvb格式 全20CD完整版
    Windows server2008 下 PowerShell对.NET3.5静默安装
    MFC关机函数
    PDI-KETTLE-2:KETTLE安装,环境变量配置,开发准备
    KETTLE常见问题记录第一篇【安装,资源库,数据库】
    日常问题解决记录一:远程桌面进程如果关闭了怎么呼出?
    KETTLE调度第二篇:把Jenkins调度Web启动设置为后台执行
    PDI-KETTLE-1:使用KETTLE如何设计一个作业-以数据库迁移为例
  • 原文地址:https://www.cnblogs.com/jennyyin/p/7895400.html
Copyright © 2011-2022 走看看