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)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
随机推荐
- yii2 获取模块名、控制器名、方法名
在视图中: 模块名 $this->context->module->id控制器名 $this->context->id方法名 $this->context-> ...
- vue day3 bootstrap 联动下拉
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta ht ...
- Cache架构设计
Cache策略 定时过期策略 定时过期的好处是Cache节点的个数符合实际需求,不会造成资源滥用和服务器压力 定时过期适合访问量较大,实时性要求不高的情况 如果访问量小,定时过期会造成Cache命中率 ...
- vc6.0使用
1.文件结构 工作空间dsw 工程1 Source file .cpp,main Header file .h Resource files 工程2 ...
- container and Injection
1.容器的历史 容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的 ...
- hsdfz -- 6.17 -- day2
今日依旧康复…… 当天晚上被老师拉去小吃街了,晚上回来精力憔悴,所以并没有当天写 反正就惨,因为估错复杂度,期望得分100分最后结果20分 (我的复杂度是nlog^2n的,正确性有保障,稳! 事后:还 ...
- Head First 设计模式 (Eric Freeman / Elisabeth Freeman / Kathy Sierra / Bert Bates 著)
1. 欢迎来到设计模式世界:设计模式入门 (已看) 策略模式 定义了算法族,分别分装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 设计原则 找出应用中可能需要变化之处,把它们 ...
- 虚拟化cpu
vmware的虚拟机cpu [root@84-monitor ~]# lscpuArchitecture: x86_64CPU op-mode(s): 32-bit, ...
- oracle-pl/sql之三
集合与记录 set serveroutput on create or replace package my_types authid definer is type my_rec is record ...
- wmv 播放器
部分代码如下 QAction *openFile = new QAction(QIcon(QString(":/Res/open.png")), tr("打开文件&quo ...