MySQL学习笔记(3)
约束
作用:保证数据的完整性,唯一性
根据字段:分为表级约束(针对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 只有列级约束
MySQL学习笔记(3)的更多相关文章
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- Mysql学习笔记(二)数据类型 补充
原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...
- Mysql学习笔记(一)数据类型
原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型 Mysql数据类型 含义(有符号) tinyint(m ...
- 初识mysql学习笔记
使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...
- MySQL学习笔记-锁相关话题
在事务相关话题中,已经提到事务隔离性依靠锁机制实现的.在本篇中围绕着InnoDB与MyISAM锁机制的不同展开,进而描述锁的实现方式,多种锁的概念,以及死锁产生的原因. Mysql常用存储引擎的锁 ...
- MySQL学习笔记-事务相关话题
事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
- MySQL学习笔记-数据库文件
数据库文件 MySQL主要文件类型有如下几种 参数文件:my.cnf--MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类 ...
- MySQL学习笔记-数据库内存
数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...
- MySQL学习笔记-数据库后台线程
数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...
随机推荐
- Hibernate 、多表关联映射 - 多对多关系映射(many-to-many)
hibernate.cfg.xml: <hibernate-configuration> <session-factory name="sessionFactory&quo ...
- node配置运行环境变量;
node express 在开发环境和生产环境运行的代码是不一样的, 通常是先配置好的,在开发环境运行一套代码,在生产环境运行另一套代码, 开发环境 development, 生产环境producti ...
- maven项目打包
配置 你的pom.xml文件,配置 packaging为 war ,然后点击 pom.xml右键,run as 选择 install 或是 package: 如果项目没问题,配置没问题,就会在项目的t ...
- Cube(规律)
Cube Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 【Leetcode】Same Tree
给定两棵二叉树,判断是否相等(即树的结构以及各结点中的值都一样) Given two binary trees, write a function to check if they are equal ...
- HDU 1010Tempter of the Bone(奇偶剪枝回溯dfs)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- SqlServer mssql 按月统计所有部门
以订单统计为例,前端展示柱状图(Jquery统计): 表及主要字段描述如下:表名:Orders1.日期CreateTime2.金额Amount3.用户UserID 情况一:根据部门统计某一年每月销量( ...
- maven 引用自己的jar
<build> <plugins> <plugin> <groupId>org.apache.maven.pl ...
- cocos2dx新建工程分析
这里我新建了一个cocos的工程叫做hello,没有的自己翻上一页教程 运行一下 出来是这个样子的: 左下角是帧频,可以设置显示或是不显示,中间是图片精灵,右下角是关闭按钮,然后上面是一个hello ...
- 相见恨晚——MarkDown
什么是MarkDown MarkDown是一种轻量级的标记语言 MarkDown使你更加关注文章的内容 MarkDown使文章的排版变得简单直接 什么情景下使用MarkDown 在我们熟悉的githu ...