MySQL命令:约束

Posted KumataのBloG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL命令:约束相关的知识,希望对你有一定的参考价值。

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

约束分类:

约束类型与关键字:

  • 主键      PRIMARY KEY
  • 默认值  DEFAULT
  • 唯一      UNIQUE
  • 外          FOREIGN KEY
  • 非空      NOT NULL

示例mysql语句code:

Github地址:https://github.com/kumataahh/xxx_database

CREATE DATABASE mysql_kumata;

use mysql_kumata;

/*班级表*/
CREATE TABLE class
(
  class_name CHAR(20) NOT NULL, --非空键
  student_num INT(10) DEFAULT 10,  --默认键
  CONSTRAINT cls_pk PRIMARY KEY(cls_name) --主键
  --自定义主键名:cls_pk,主键:cls_name
);

/*学生信息表*/
CREATE TABLE student
(
  id     INT(10) PRIMARY KEY,  --主键
  name   CHAR(20),  --没有非空约束
  age    INT(10) NOT NULL,  --非空约束
  phone  INT(12) NOT NULL,  
  UNIQUE (id), --唯一键
  CONSTRAINT stu_fk FOREIGN KEY (in_cls) REFERENCES class(class_name) --外键
  --自定义外键名:stu_fk 外键:in_cls,参考列为calss表的class_name列
);

/*个人作品表*/
CREATE TABLE project
(
  pro_num  INT(10) NOT NULL,
  pro_name CHAR(20) NOT NULL,
  start_data DATE NOT NULL,
  end_date   DATE DEFAULT 2018-07-01,
  of_cls     CHAR(20) REFERENCES class(class_name),
  CONSTRAINT pro_pk PRIMARY KEY (pro_num,pro_name) --复合主键
);

各关键字介绍:

主键      PRIMARY KEY

主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束, 那么这些列都不允许为空值,并且组合的值不允许重复。

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

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

  1. 通常情况下,我们会给每张表都会设置一个主键字段,用来标记记录的唯一性
  2. 但是不建议把业务含义字段作为主键,因为随着业务的变化,业务字段可能会出现重复。
  3. 建议给每张张独立添加一个叫id的字段,把这个id字段设置成主键,用来作为记录的唯一性。

默认值  DEFAULT

当没有插入数值的时候默认值才会起作用

唯一      UNIQUE

unique代表唯一约束。唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null,同一个表可以有多个唯一约束,多个列组合的约束。

外          FOREIGN KEY

外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。

非空      NOT NULL

当某个字段必须要值(不能不插入数值,也不能插入null),就给这个字段添加一个非空约束

 

 

以上是关于MySQL命令:约束的主要内容,如果未能解决你的问题,请参考以下文章

mysql常用命令总结

MySQL命令:约束

MYSQL创建表、约束、外键

MySQL系列:kafka停止命令

如何看mysql版本

在 mysql 表上添加外键约束时出现错误 1005