美文网首页
MySQL数据约束

MySQL数据约束

作者: Mon7ey | 来源:发表于2017-12-08 15:19 被阅读12次

什么是数据约束

数据按照特定的规则、限制存入数据库.这种对数据的限制和规则就是数据约束.

约束类型

默认值约束

作用 :当用户没有对某字段插入数据时,使用默认值填充数据.

关键字 :default

注意 : 默认值字段允许为 null , 只有在不插入值时默认值才会起作用

CREATE TABLE student(
    id INT,
    NAME VARCHAR(20),
    address VARCHAR(20) DEFAULT '河南郑州'    // default 后为默认值
    );

非空约束

作用 : 限制字段必须赋值

关键字 : not null

// 非空表
create table student(
    id int,
    name varchar(20),
    gender varchar(2) not null);  -- 非空约束

唯一约束

作用 : 保证字段值只有唯一一个

关键字 : unique

注意 : 1) 位置字段可以插入null ,2) 唯一字段可以插入多个null

create table student(
    id int unique,  -- 唯一约束
    name varchar(20));

    // 错误码: 1062
    Duplicate entry '1' for key 'id'

主键约束

关键字 : primary key

作用 : 非空 + 唯一

CREATE TABLE student(
    id INT PRIMARY KEY, -- 主键
    NAME VARCHAR(20),
    age INT);

    // 错误码: 1062
    Duplicate entry '1' for key 'PRIMARY'

    //  插入null值 : Field 'id' doesn't have a default value
    insert into student(name) values('李四');
联合主键

自增长约束

关键字 : auto_increment
关键字2 : zerofill 零填充

作用 : 自增长字段可以不复制,该字段会自动递增

CREATE TABLE student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    age INT);

// 零填充
CREATE TABLE student(
    id INT(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    age INT);

外键约束

关键字 :
CONSTRAINT : 英文含义为"约束".是外键约束的关键字
emloyee_dept_fk : 外键约束的名字,从表明在前,主表名在后
FOREIGN KEY(deptId) : 外键的关键字.规定从表中那个字段是外键字段
REFERENCES dept(id) : reference 是关键字,该关键字后跟的是主表名(参考字段).

作用 :约束两张表的数据

注意 :

  1. 被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!
  2. 主表的参考字段通用为主键.
  3. 添加数据: 先添加主表,再添加副表
  4. 修改数据: 先修改副表,再修改主表
  5. 删除数据: 先删除副表,再删除主表
// 主表(部门表)
CREATE TABLE dept(
    id INT PRIMARY KEY,
    deptName VARCHAR(20));

-- 从表(员工表)
CREATE TABLE employee(
    id INT PRIMARY KEY,
    empName VARCHAR(20),
    deptId INT,
    -- 申请一个外键约束
    CONSTRAINT emloyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
    );

级联操作

问题: 当有了外键约束的时候,必须先修改或删除副表中的所有关联数据,才能修改或删除主表!但是,我们希望直接修改或删除主表数据,从而影响副表数据。可以使用级联操作实现!!!

级联修改: ON UPDATE CASCADE
级联删除: ON DELETE CASCADE

CREATE TABLE employee(
id INT PRIMARY KEY,
empName VARCHAR(20),
deptId INT,-- 把部门名称改为部门ID
-- 声明一个外键约束
CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE  -- ON CASCADE UPDATE :级联修改
--           外键名称                  外键               参考表(参考字段)

)
注意: 级联操作必须在外键基础上使用

相关文章

  • MySql笔记

    Mac安装并运行MySql MySql数据库、数据表的操作 MySql数据类型及常见约束 MySql表操作 MyS...

  • MySQL数据约束

    什么是数据约束 数据按照特定的规则、限制存入数据库.这种对数据的限制和规则就是数据约束. 约束类型 默认值约束 作...

  • MySQL主键约束、非空约束、唯一约束、外键约束

    MySQL主键约束、非空约束、唯一约束、外键约束 概念:对表中的数据进行约束(限定),保证数据的正确性、有效性和完...

  • MYSQL数据库约束类型

    MYSQL数据库约束类型 一.主键约束(primary key) 主键约束要求主键列的数据唯一,并且不能为空。主键...

  • MySql 中的约束

    MySql 中的约束 作用:给表添加约束值,从而约束用户操作数据库的行为 数据库常见的约束值如下: 默认值约束(d...

  • MySQL基础02-列属性

    一、简介 MySql中,真正约束字段的是数据类型,但是数据类型的约束太单一,需要有一些额外的约束,来更加保证数据的...

  • chap04 操作数据表中的记录

    1. 回顾与概述 约束: 表级约束 列级约束 数据表 2. MySQL插入记录INSERT 插入记录INSERT ...

  • 了解MySQL6种约束的不同和特点

    摘要:一篇文章带你彻底了解MySQL各种约束 MySQL约束 <1> 概念 · 是一种限制,它是对表的行和列的数据...

  • mysql表约束

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

  • MySQL约束

    概念: 为了保证数据的完整性和一致性,MySQL提供了约束这个属性。约束分为表级约束和列级约束,如果约束只是针对某...

网友评论

      本文标题:MySQL数据约束

      本文链接:https://www.haomeiwen.com/subject/onbcixtx.html