博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL学习笔记(3)
阅读量:5895 次
发布时间:2019-06-19

本文共 881 字,大约阅读时间需要 2 分钟。

约束

作用:保证数据的完整性,唯一性

根据字段:分为表级约束(针对2个或者2个以上字段使用),列级约束(针对1个字段使用)

约束类型:NOT NULL 非空约束

              PRIMARY KEY  主键约束

              UNIQUE KEY  唯一约束

              DEFAULT 默认约束

              FOREIGN KEY 外键约束

外键约束:保持数据一致性完整性,实现一对一或一对多关系

创建外键约束的要求:

1.父表(子表参照的表)和子表(具有外键列的表)必须具有相同存储引擎,禁止使用临时表

2.存储引擎只能为InnoDB

3.外键列(有FOREIGN KEY关键词)和参照列(外键所参照的那一列)必须具有相似的数据类型。数字的长度和是否有符号位要相同字符长度可以不同

4.外键列和参照列必须创建索引如果外键列不存在索引的话,MySQL将自动创建索引

外键的字段数据类型和所参照的表中的数据类型不同,所以报错。

这里数据类型长度和符号都相同,所以外键创建成功了。


 外键约束的参照操作

CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行

SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL

RESTRICT:拒绝对父表的删除或更新操作

NO ACTION:在MySQL中与RESTRICT相同

CASCADE

必须先在父表中插入记录,子表才能插入记录。

←父表中插入三条省份数据。

←子表中插入三条记录,但是由于其中一条插入error但是id已经自增了,所以没有2

←删除父表中的id=3的数据,然后子表中的为3的省份记录也不见了

实际工作中很少有这样用物理约束的,

一般都用逻辑来约束。

一般都是定义逻辑外键,而不是物理外键,不去使用FOREIGN KEY这个关键词进行定义。

 


 

列级约束:对于一个列所创建的约束叫做列级 

表级约束:对于2个或2个以上则成为表级

NOT NULL, DEFAULT 只有列级约束

转载于:https://www.cnblogs.com/kabocya/p/6044755.html

你可能感兴趣的文章
CentOS 6.5上部署drbd
查看>>
spring SchedulerFactoryBean 没有创建 Scheduler的实现类bea
查看>>
基于cobbler实现自动化安装系统
查看>>
java基础专栏—IOUtils(4)
查看>>
TimeUnit使用
查看>>
进程管理
查看>>
我的VIM配置(ubuntu)
查看>>
linux 常用配置文件
查看>>
cisco交换机配置练习疑难
查看>>
我的友情链接
查看>>
16、MariaDB工作中遇到的一部分报错的解决方法
查看>>
jdk的fastdebug版本是什么
查看>>
ConcurrentLinkedQueue cas实现分析
查看>>
在论坛中出现的比较难的sql问题:13(循环替换问题)
查看>>
简单的Samba服务器安装
查看>>
blog addr
查看>>
如何选择 Web 前端模板引擎?
查看>>
VMware 上Clone Ubuntu虚拟机后找不到eth0
查看>>
由毫秒(ms)转换为日期和时间的格式(简单易用)
查看>>
一个女生对BootStrap的感情
查看>>