MySQL:数据完整性
数据完整性分为:实体完整性,域完整性,参考完整性。
参考完整性:
参照完整性指的就是多表之间的设计,主要使用外键约束。
多表设计: 一对多、多对多、一对一设计
一:实体(行)完整性
实体完整性通过表的主键来实现。
使用主键来表示一条记录的唯一,且不为空
语法:primary key
主键分类:
逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)
业务主键:例如username,参与实际的业务逻辑。
特点:唯一,not null
自动增长:auto_increment
例如:
create table person2(id int primary key auto_increment,name varchar(100)
);
二:域(列)完整性
非空约束:not null
唯一约束:unique
creat table person3(id int not null unique,name varchar(20) not null unique,gender varchar(20) not null,phone char(11) unique #不能有,);
三:参照完整性
1,一对多
a:例如:客户和订单的关系就是一对多,一个客户可以有多张订单,一张订单属于一个客户;
b:外键设置到多的一方
语法输入创建一对多:
创建客户表:
create table customers(id int,name varchar(20),address varchar(100),primary key(id)
);
创建订单表:
create table orders(id int,order_num int primary key,price float(4,2),customer_id int,constraint customer_ord_fk foreign key(customer_id) references customers(id)
);
注:constraint: 约束,foreign key: 外键,references: 参照
创建一个名叫customer_ord_fk的外键约束,外键指的是customer_id,参照的是 customers表中的id列
表格操作创建一对多
customers表
orders表
orders外键设置
创建一个名叫customer_ord_fk的外键约束,外键栏位customer_id,参照的是 customers表中的id列
扩展:四种子表的删除更新策略:
1,cascade 级联策略:
使用此种策略时主表的记录被删除或者主键字段被修改时会同步删除或修改子表
2,no action 无动作策略:
使用此种策略时要删除主表必须先删除子表,要删除主表的记录必须先删除子表关联的记录,不能更新主表主键字段的值
3,restrict 主表约束策略。此种策略对主表的约束跟 NO ACTION 一样
4,set null 置空策略。使用此种策略时,如果主表被删除或者主键被更改,则将子表中的外键设置为null。需要注意的是,如果子表的外键是主键或者是设置为not null的,则主表的删除和主键的更改跟 no action 一样
2,多对多
创建老师表:
create table teachers(id int primary key auto_increment,name varchar(20) ,gender char(5),subject varchar(20));
创建学生表:
create table students(id int primary key , name varchar(20),age int
);
第三张为关联表:
create table teacher_student(id int,t_id int,s_id int,primary key(t_id,s_id),constraint teacher_id_fk foreign key(t_id) references students(id),constraint student_id_fk foreign key(s_id) references teachers(id)
);
表格操作多对多
创建老师表:
创建学生表:
第三张表:
3,一对一
(1)一般情况,设计一张表格即可
(2)设计成两张表格
法1:第二张表格中创建一个字段作为外键(设置求唯一 unique)对应第一张表格中的主键;
法2:直接使用第二张表格中的主键作为外键,对应第一张表格的主键。
两张表:unique很重要
create table user(id int primary key auto_increment,name varchar(20),age int
);
。
create table card(id int primary key auto_increment,num varchar(20) not null,address varchar(100) not null,user_id int unique,constraint user_card_fk foreign key(user_id) references user(id)
);
MySQL:数据完整性相关推荐
- MySQL数据完整性实施
MySQL提供六种约束: 1.主键约束(primary key) 2.外键约束(foreign key) 3.非空约束(not null) 4.唯一约束(unique) 5.默认约束(default) ...
- mysql数据完整性实验报告,数据库原理实验报告(Mysql)
图5 course表 图6 sc表 图7 course的约束条件 图8 sc的约束条件 3.利用命令方式建表: (1).单击"查询",然后点击"新建查询",在弹 ...
- MySQL数据完整性(实体完整性、域完整性)
数据完整性: 为保证插入到数据库中的数据是正确的,防止用户输入错误的数据 分为实体完整性. 域完整性 .参照完整性 (下节再说) (1)实体完整性: 实体指的是表中的一行,一行记录对应一个实体 ,通过 ...
- php mysql table_关于php:MySQL Table不存在错误,但确实存在
' doesn't exist错误? 我在5台服务器上使用了相同的代码,但我最近租用的服务器上只有一个显示此错误,因此我怀疑这可能是某种设置或安装错误. 我可以从命令行执行我的sql语句. 很显然,我 ...
- 四:MySQL 表介绍
四:MySQL 表介绍 概述介绍 索引组织表 InnoDB 逻辑存储结构 表空间 段 区 页 行 InnoDB行记录格式 Compact行记录格式 行溢出数据 InnoDB数据页结构 约束 数据完整性 ...
- 带你全面了解数据库基础
数据库基础详解 1.MySQL简介 1.1 什么是数据库? 数据库(DB)是存放数据的仓库,只不过这些数据存在一定的关联,并按照一定的格式存放在计算机上,MySQL是最流行的开放源码SQL数据库管 ...
- MySQL 笔记4 -- 数据完整性
MySQL 笔记4 – 数据完整性 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 一.数据完整性 作用: 保 ...
- mysql 保证事物完整性_数据库高并发请求,如何保证数据完整性?详解MySQL/InnoDB的加锁...
本文是对MySQL/InnoDB中,乐观锁.悲观锁.共享锁.排它锁.行锁.表锁.死锁概念的理解,这些在面试中也经常遇到,如数据库高并发请求,如何保证数据完整性?今天我查阅资料进行了MySQL/Inno ...
- 怎么验证mysql完整性_MySQL数据库认证高级(一)——数据完整性
一.数据完整性简介 1.数据完整性简介 数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况.数据的完整性是指数据的可靠性和准确性,数据完整性类型有四种:A.实体完 ...
最新文章
- 我是这样给阿里面试官吹 ConcurrentHashMap的
- win10配置java环境变量,解决javac不是内部或外部命令等问题
- 服务器购买是有无系统,买服务器含不含操作系统
- html选择器_HTML的id选择器类选择器
- 计算机未识别网络什么意思,win7 64位系统提示当前连接到未识别的网络怎么办...
- 关于bhuman文件结构
- postgres循环sql
- android 获取默认存储路径,Android获取外置SD卡存储路径的方法
- html双箭头菜单,CSS常用样式之绘制双箭头的示例代码
- android-6.0 新功能介绍(Marshmallow)
- 远程升级stm32程序_艾拉比智能成为意法半导体STM32战略合作伙伴
- 跑酷游戏的一些bug总结(滥用FixedUpdate的坑)
- spring boot学习2,日志框架
- 电子琴节奏包制作_MIDI音乐制作基础必备
- RealSense D435 在ROS kinetic 下的配置
- Arduino 实验 —— 红外遥控RGB灯
- [期望DP] UOJ#311. 【UNR #2】积劳成疾
- 提高企业计算机网络安全意识,对企业计算机网络安全建设问题综合分析探讨.doc...
- 10uF的电容能滤除什么频率的电源纹波?
- 判断两个字符串是否互为变形词
热门文章
- Redis基础知识笔记
- 《C++ 笔记》 Part5 C++ 资源大全中文版
- canvas流星雨 数据流
- PS一分钟打造手机渐变壁纸
- crc16-ccitt算法c语言,CRC-CCITT 标准CRC16(1021) 算法校验类
- MongoDB 4.2.3 安装以及安装遇到的问题“service MongoDB failed to start,verify that you have sufficient privilege”
- Hadoop集群上的Hive安装时进行初始化元数据信息出现错误HiveSchemaTool:Parsing failed. Reason: Missing required option:
- 第N次重装系统之win10注册表
- 用Flash做点击页面图片切换效果的超级详细教程
- 【杂烩】Tesla M40 24G 在Win11上的双显卡显示实现、改风冷