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)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...
随机推荐
- zookeeper集群和安装dubbo的管控台
准备三台服务器CentOs6: 192.168.37.132 192.168.37.128 192.168.37.131 1 将zookeeper的安装包分别解压到/usr/local/目录下 进入c ...
- 将文本转化为Numpy的矩阵
def file2matrix(filename): fr = open(filename) numberOfLines = len(fr.readlines()) #get the number o ...
- php输出数据到csv文件
function export() { $fileName = date('Y-m-d').uniqid().'.csv'; set_time_limit(0); ini_set('memory_li ...
- FPGA 中三角函数的实现
FPGA 中三角函数的实现
- Windows启动配置数据(BCD)存储文件包含一些无效信息
Windows启动配置数据(BCD)存储文件包含一些无效信息-照牛排 http://www.zhaoniupai.com/archives/223.html 1)近来封装Windows 7,遇到挫折. ...
- 【转载】robocopy的用法
经常进行文件管理操作的朋友们,不满意于Windows系统内置的复制功能,因为它太龟速了.于是大家就使用FastCopy.TeraCopy之类的软件来加速复制,但是你是否知道Windows 7已经内置快 ...
- 并发之lock的condition接口
13.死磕Java并发-----J.U.C之Condition 12.Condition使用总结 11.Java并发编程系列之十七:Condition接口 === 13.死磕Java并发-----J. ...
- Android Studio指定引用jnilibs 特定CPU架构的so库文件
稍微大一些的项目都会用到第三方库,所以不可避免的会有针对不同手机cpu架构的.so库文件 'x86', 'x86_64', 'mips', 'mips64' 'armeabi' ,'armeabi- ...
- CentOS7.5下安装Mycat连接MySQL8.0
MyCat详细介绍,请参考https://www.biaodianfu.com/mycat.html 9066管理端口,请参考https://www.cnblogs.com/parryyang/p/5 ...
- struts设置开发者模式
struts设置开发者模式 在使用ssh框架做项目时,struts.xml文件总要配置许多项功能,其中一个就是开发者模式: <constant name="struts.devMode ...