• 约束


    一、概念

    对表中的数据进行限定,保证数据的正确性、有效性和完整性

     

    二、分类

    • 主键约束:primary key
    • 非空约束:not null,值不能为 null
    • 唯一约束:unique,值不能重复
    • 外键约束:foreign key,让表与表产生联系,从而保证数据正确性

     

    三、主键约束

    1、添加约束(创建表时)

    create table stu(
            id int primary key,    -- 给id添加主键约束
            name varchar(20)
    );

    2、添加约束(创建完表后)

    ALTER TABLE stu MODIFY id INT PRIMARY KEY;

    3、删除约束

    错误:
    ALTER TABLE stu modify id int ;
    正确:
    ALTER TABLE stu DROP PRIMARY KEY;

    4、自动增长

    (1)概念

    如果某一列是数值类型的,使用 auto_increment 可以来完成值的自动增长

    (2)实现

    • 添加主键约束,并让主键自动增长
    create table stu(
        id int primary key auto_increment,-- 给id添加主键约束
        name varchar(20)
    );
    • 添加自动增长
    ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
    • 删除自动增长
    ALTER TABLE stu MODIFY id INT;

    5、注意

    • 主键约束非空且唯一
    • 一张表只能有一个字段为主键
    • 主键就是表中记录的唯一标识

     

    四、非空约束

    1、添加约束(创建表时)

    CREATE TABLE stu(
        id INT,
        NAME VARCHAR(20) NOT NULL -- name为非空
    );

    2、添加约束(创建完表后)

    ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

    3、删除约束

    ALTER TABLE stu MODIFY NAME VARCHAR(20);

     

    五、唯一约束

    1、添加约束(创建表时)

    CREATE TABLE stu(
        id INT,
        phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束
    );

    2、添加约束(创建完表后)

    ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

    3、删除约束

    ALTER TABLE stu DROP INDEX phone_number;

     

    六、外键约束

    1、添加约束(创建表时)

    create table 表名(
        ....
        外键列
        constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
    );

    2、添加约束(创建完表后)

    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

    3、删除约束

    ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

    4、级联操作

    (1)添加级联操作

    ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
        FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE  ;

    (2)级联更新

    ON UPDATE CASCADE

    (3)级联删除

    ON DELETE CASCADE

     

  • 相关阅读:
    每日vim插件--vim中的文本对象及相关插件
    《android传感器高级编程》译者序
    我在用的mac软件(3)-效率篇
    终端环境之tmux
    我在用的mac软件(2)-终端环境之zsh和z(*nix都适用)
    我在用的mac软件(1)--终端环境之iTerm2
    转:微服务架构的理论基础
    怎么使用阿里云直播服务应用到现在主流直播平台中
    WindowsServer2012显示计算机的方法
    在Windows Server 2012启用或关闭Internet Explorer增强的安全配置
  • 原文地址:https://www.cnblogs.com/eidolonw/p/16004396.html
Copyright © 2020-2023  润新知