约束概念

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

非空约束:not null

  • 非空约束:值不能为null
  • 创建表时添加非空约束

    CREATE TABLE stu(
        id INT,
        name VARCHAR(20) NOT NULL -- 添加非空约束
    );
  • 创建表完成后,添加非空约束

    ALTER TABLE stu MODIFY name VARCHAR(20) NOT NULL;
  • 删除非空约束

    ALTER TABLE stu MODIFY name VARCHAR(20);

唯一约束:unique

  • 唯一约束:值不能重复
  • 创建表时添加唯一约束

    CREATE TABLE stu(
        id INT,
        phone_number VARCHAR(20) UNIQUE -- 添加唯一约束
    );
  • 创建表完成后添加唯一约束

    ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
  • 删除唯一约束

    ALTER TABLE stu DROP INDEX phone_number;
  • MySQL中,为以约束限定的列的值可以有多个null

主键约束:primary key

  • 主键约束

    • 含义:非空且唯一
    • 一张表中只能有一个字段为主键
    • 主键就是表中记录的唯一标识
  • 创建表时添加主键约束

    CREATE TABLE stu(
        id INT PRIMARY KEY,-- 给id添加主键约束
        name VARCHAR(20)
    );
  • 创建表完成后添加主键

    ALTER TABLE stu MODIFY id INT PRIMARY KEY;
  • 删除主键

    ALTER TABLE stu DROP PRIMARY KEY;
  • 自动增长

    • 概念:如果某一列是数值类型的,使用AUTO_INCREMENT可以完成值的自动增长
    • 创建表时,添加主键约束,并完成主键自动增长

      CREATE TABLE stu(
          id INT PRIMARY KEY AUTO_INCREMENT,
          name varchar(20)
      );
    • 添加自动增长

      ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
    • 删除自动增长

      ALTER TABLE stu MODIFY id INT;

外键约束:foreign key

  • 外键约束:让表语表产生关系,从而保证数据的正确性
  • 在创建表时,可以添加外键

    CREATE TABLE 表名(
        ...
        外键列
        CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
    );
  • 创建表完成后添加外键

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

    ALTER TABLE 表名 DROP FOREIGN KET 外键名称;
  • 级联操作

    • 语法

      ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) 级联操作;
    • 级联更新:ON UPDATE CASCADE
    • 级联删除:ON DELETE CASCADE
  • -- 创建部门表
    CREATE TABLE department(
        id INT PRIMARY KEY AUTO_INCREMENT,
        dep_name VARCHAR(20),
        dep_location VARCHAR(20)
    );
    -- 创建员工表并添加外键
    CREATE TABLE employee(
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(20),
        age INT,
        dep_id INT,-- 外键对应主表的主键
        CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id)
    );
    -- 删除外键
    ALTER TABLE employee DROP FOREIGN KEY emp_dept_fk;
    -- 添加外键
    ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id);
    -- 级联更新
    ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE;
    -- 级联删除
    ALTER TABLE employee ADD CONSTRAINT emp_dept_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON DELETE CASCADE;
最后修改:2021 年 04 月 14 日
如果觉得我的文章对你有用,请随意赞赏