mysql学习笔记--数据完整性
一、数据完整性包括:
1. 域完整性
2. 实体完整性
3. 引用完整性
二、保证实体完整性
1. 主键约束
2. 唯一约束
3. 自动增长列
三、保证域完整性
1. 数据类型约束
2. 非空约束
3. 默认值约束
四、保证引用完整性
1. 外键约束:从表的公共字段是主表的外键
五、保证自定义完整性
六、引用完整性
1. 主表和从表
两个表建立关系(两个表只要有公共字段就有关系),一个称为主表,一个称为从表。
2. 外键约束可以实现:
a. 主表中没有的,从表中不允许插入
b. 从表中有的,主表中不允许删除
c. 不能更改主表中的值而导致从表中的记录孤立存在
d. 先删从表,再删主表
3. 外键(foreign key)
a. 外键:从表中的公共字段,公共字段的名字可以不一样,但数据类型必须一样。
b. 外键约束用来保证引用完整性。
4. 添加外键
a. 创建表时添加外键
create table t1(
id int primary key,
name varchar(10) not null
);
create table t2(
stuNo int primary key,
marks tinyint unsigned,
foreign key(stuNo) reference t1(id)
);
b. 修改表时创建外键
alter table t7 add foreign key(stuNo) references t6(id);
c. 注意:要创建外键必须是innodb引擎,myisam不支持外键
5. 删除外键
alter table t1 drop foreign key 外键名;
6. 外键操作
a. 严格操作(上面讲的操作)
b.置空操作(set null):如果主表记录删除或更新,从表置空
c. 级联操作(cascade):如果主表记录删除或更新,从表级联
d. 一般来说:主表删除的时候,从表置空操作,主表更新的时候,从表级联操作。
e. 语法:foreign key(外键) references 主表(关键字段)[主表删除时候的动作][主表更新时候的动作]
foreign key(stuNo) references t1(id) on delete set null on update cascade
mysql学习笔记--数据完整性的更多相关文章
- MySQL学习笔记一
MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...
- 一千行MySQL学习笔记 (转)
出处: 一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- 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)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
随机推荐
- jsp后台取出request请求头
请求发到a2这个servlet 在这个servlet中请求转发到index.jsp 在jsp中如下的java代码 Enumeration headernames=request.getHeaderNa ...
- python, Image
PIL: Python Image Library, python平台的图像处理库,要使用Image首先要从PIL库导入Image: from PIL import Image 如果没有安装PIL的包 ...
- JS 60秒后重发送验证码
//settime($("#getPhoneCode"),60); function settime($obj, time) { if (time == 0) { $obj.att ...
- jekins构建触发器详解-日程表的使用
日程表参数解释如下: 第一个参数代表的是分钟 minute,取值 0~59: 第二个参数代表的是小时 hour,取值 0~23: 第三个参数代表的是天 day,取值 1~31: 第四个参数代表的是月 ...
- Pod配置PersistentVolumeClaim详解
1,创建PersistentVolume kind: PersistentVolume apiVersion: v1 metadata: name: task-pv-volume labels: ty ...
- Oracle 关于concat与双竖线用法的补充
--只能连接2个字符串select concat('nod',' chen is ') from dual; --连接2个列名select concat(name,ip2) from vm_info; ...
- Linux-Shell基础(变量,字符串,数组)
一. 什么是shell shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统 ...
- vm虚拟机 模板机进行克隆导致centos 7.2 无法加载网卡
问题描述:vm虚拟机 模板机进行克隆导致centos 7.2 无法加载网卡. 1.ifconfig 查看网卡状态 lo: flags=<UP,LOOPBACK,RUNNING> mtu i ...
- mysql中间件kingshard
这样写是OK的: select * from bind_history limit 10;select id, passport_id, person_id, create_time, cast(is ...
- 关于offsetParent
不知道有多少人知道JavaScript中有offsetParent这么个属性. 关于offsetParent,我最开始见到他,是在<JavaScript高级程序设计(第3版)>第321页, ...