MySQL约束类型及举例介绍

 更新时间:2018年10月17日 15:08:52   作者:no-96  
今天小编就为大家分享一篇关于MySQL约束类型及介绍的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

约束 

  • 约束保证数据的完整性和一致性
  • 约束分为表级约束和列级约束
  • 约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认约束),FOREIGN(外键约束)

1.主键约束

  • PRIMARY KEY
  • 每张数据表只能存在一个主键
  • 主键保证记录的唯一性,主键的值不重复
  • 主键自动为 NOT NULL

举例,创建一张student表,将学号设置为主键创建完表之后,通过SHWO COLUMNS FROM student查看表结构

CREATE TABLE student(
id int PRIMARY KEY,
stu_name varchar(20)
);

2.唯一约束

  • UNIQUE KEY
  • 唯一约束可以保证记录的唯一性
  • 唯一约束的字段可以为空值(NULL)
  • 每张数据表可以存在多个唯一约束

举例,创建一个teacher表,id字段自增,tea_name唯一

CREATE TABLE teacher(
id int AUTO_INCREMENT PRIMARY KEY,
tea_name varchar(20) NOT NULL UNIQUE KEY
);

3.默认约束

  • DEFAULT
  • 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

举例,创建一张course表,默认上课时间为40分钟

CREATE TABLE course(
id int AUTO_INCREMENT PRIMARY KEY,
cou_name varchar(20) NOT NULL UNIQUE KEY,
time int DEFAULT 40
);
INSERT INTO course(cou_name) values('语文');

4.非空约束

  • NOT NULL
  • 强制列不能为 NULL 值,约束强制字段始终包含值。
  • 这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

举例,在 "Persons" 表创建时在 Id列、name列创建 not null 约束:

create table Persons(
id int not NULL,
p_name varchar(20) not null, 
deparment varchar(20),
address varchar(20),
telNum varchar(20)
)
DESC Persons;

5.外键约束

  • FOREIGN KEY
  • 保持数据的一致性,完整性
  • 实现1对1或1对n关系

1.父表与子表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎只能是InnoDB
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

CREATE TABLE school(
id int AUTO_INCREMENT PRIMARY KEY,
sname varchar(20) NOT NULL
);
CREATE TABLE student2(
id int AUTO_INCREMENT PRIMARY KEY,
sid int,
FOREIGN KEY (sid) REFERENCES school(id)
);

外键约束的参照操作

  • CASCADE : 从父表删除或更新且自动删除或更新子表中匹配的行
  • 父表中被引用的列删除了某个数据,子表中删除对应数据的行
CREATE TABLE student3(
id int AUTO_INCREMENT PRIMARY KEY,
sid int,
FOREIGN KEY (sid) REFERENCES school(id) ON DELETE CASCADE
);
  • SET NULL:从父表删除或更新行,并设置子表的外键列为NULL。如果使用该项,必须保证子表列没有指定NOT NULL
  • 父表中删除数据,将子表中的引用设置为NULL
  • RESTRICT:拒绝对父表的删除或更新操作
  • NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • MySQL底层数据结构选用B+树的原因

    MySQL底层数据结构选用B+树的原因

    大家好,本篇文章主要讲的是MySQL底层数据结构选用B+树的原因,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Mysql常用函数大全(分类汇总讲解)

    Mysql常用函数大全(分类汇总讲解)

    今天小编就为大家分享一篇关于Mysql常用函数大全(分类汇总讲解),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 详解 Mysql中的delimiter定义及作用

    详解 Mysql中的delimiter定义及作用

    delimiter是mysql分隔符,在mysql客户端中分隔符默认是分号(;)。如果一次输入的语句较多,并且语句中间有分号,这时需要新指定一个特殊的分隔符。这篇文章给大家介绍了Mysql中的delimiter的作用,感兴趣的朋友一起看看吧
    2018-09-09
  • MySQL触发器概念、原理与用法详解

    MySQL触发器概念、原理与用法详解

    这篇文章主要介绍了MySQL触发器概念、原理与用法,结合实例形势详细分析了mysql触发器相关概念、原理、创建、用法及操作注意事项,需要的朋友可以参考下
    2019-07-07
  • MySQL中的聚合查询和联合查询操作代码

    MySQL中的聚合查询和联合查询操作代码

    这篇文章主要介绍了MySQL中的聚合查询和联合查询操作代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • MySQL使用触发器如何实现CHECK检查约束的功能

    MySQL使用触发器如何实现CHECK检查约束的功能

    这篇文章主要介绍了MySQL使用触发器如何实现CHECK检查约束的功能,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 浅谈为什么MySQL不建议delete删除数据

    浅谈为什么MySQL不建议delete删除数据

    这篇文章主要介绍了浅谈为什么MySQL不建议delete删除数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 深入理解MySQL varchar(50)

    深入理解MySQL varchar(50)

    日常开发中,数据库建表是必不可少的一个环节,建表的时候通常会看到设定某个字段的长度为varchar(50),那么你知道是什么意思吗,感兴趣的可以了解一下
    2024-01-01
  • Java连接MySql的详细介绍

    Java连接MySql的详细介绍

    本篇文章主要是对Java连接MySql的详细介绍。需要的朋友参考下
    2013-04-04
  • MySQL普通索引与唯一索引的使用与区别

    MySQL普通索引与唯一索引的使用与区别

    本文主要介绍了MySQL普通索引与唯一索引的使用与区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论