SQL的约束

约束的定义

所谓SQL的约束,指的是对表中的行或者列的数据做出限制,以保证数据完整性和唯一性。

常见的约束

关键字 约束类型
PRIMARY KEY 主键
DEFAULT 默认值
UNIQUE 唯一
FOREIGN KEY 外键
NOT NULL 非空

约束的具体含义

主键(PRIMARY KEY)

用来约束表中的某一行,将主键作为这一行的标识符,通过主键可以准确定位到一行。
主键的定义方式:

  1. (
    dpt_name CHAR(20) NOT NULL,
    people_num INT(10) DEFAULT ‘10’,
    CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
    );
    2.(
    proj_num INT(10) NOT NULL,
    proj_name CHAR(20) NOT NULL,
    start_date DATE NOT NULL,
    end_date DATE DEFAULT ‘2015-04-01’,
    of_dpt CHAR(20) REFERENCES department(dpt_name),
    CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)
    );

第一种自定义了主键名且主键名是单一主键,第二种自定义了主键名但是其为复合主键。

默认值约束(DEFAULT)

如果数据为空时,将使用默认值约束。

people_num INT(10) DEFAULT ‘10’,

默认值约束只会在使用INSERT语句时提现出来,如果INSERT时,DEFAULT约束的位置没有值,那么这个位置将会被DEFAULT的值填充。

唯一约束(UNIQUE)

该关键字指定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。
例如下面这种形式:

( in_dpt CHAR(20) NOT NULL,
UNIQUE (phone)
);

外键约束(FOREIGN KEY)

外键既能确保数据完整性,也能表现表之间的关系。
假设系统中存在着两个表,一个是文章表,一个是作者表,给文章表中添加一个指向用户id的外键,表示这篇文章所属的用户id,外键需要保证这个外键指向的记录是存在的,如果删除了一个用户之后,这个用户的文章将会存在于数据库中,那么操作将无法完成并报错。同理生成一篇文章的时候,也不能为它指定一个不存在的用户id。

   CREATE TABLE department
   (
     dpt_name   CHAR(20) NOT NULL,
     people_num INT(10) DEFAULT '10',
     CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
   );
   
  CREATE TABLE employee
  (
    id      INT(10) PRIMARY KEY,
    name    CHAR(20),
    age     INT(10),
    salary  INT(10) NOT NULL,
    phone   INT(12) NOT NULL,
    in_dpt  CHAR(20) NOT NULL,
    UNIQUE  (phone),
    **CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)**
   );

非空约束(NOT NULL)

被非空约束的列,在插入值时必须为非空。

你可能感兴趣的:(MySQL)