我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据完整性的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据完整性的示例分析

这篇文章主要介绍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表


MySQL数据完整性的示例分析

orders表

MySQL数据完整性的示例分析

orders外键设置

MySQL数据完整性的示例分析

创建一个名叫customer_ord_fk的外键约束,外键栏位customer_id,参照的是 customers表中的id列

扩展:四种子表的删除更新策略:

  1. 1,cascade 级联策略:使用此种策略时主表的记录被删除或者主键字段被修改时会同步删除或修改子表

  2. 2,no action 无动作策略:使用此种策略时要删除主表必须先删除子表,要删除主表的记录必须先删除子表关联的记录,不能更新主表主键字段的值

  3. 3,restrict 主表约束策略。此种策略对主表的约束跟 NO ACTION 一样

  4. 4,set no置空策略。使用此种策略时,如果主表被删除或者主键被更改,则将子表中的外键设置为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),
  constrains student_id_fk foreign key(s_id) references teachers(id)
);

表格操作多对多

创建老师表:

MySQL数据完整性的示例分析

创建学生表:

MySQL数据完整性的示例分析

第三张表:

MySQL数据完整性的示例分析

 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数据完整性的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL数据完整性的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

服务器数据完整性问题实例分析

本篇内容主要讲解“服务器数据完整性问题实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“服务器数据完整性问题实例分析”吧!非法数据的潜在成因是什么?数据完整性能防止出现数据违背系统的指令被篡
2023-06-17

MySQL数据库性能优化的示例分析

小编给大家分享一下MySQL数据库性能优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么做优化??因为数据量太多了,项目部署上线再到用户使用,每天
2023-06-22

Mysql中并发参数调整的示例分析

这篇文章将为大家详细讲解有关Mysql中并发参数调整的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。查询缓存优化不建议使用,一般是在应用服务做缓存层,毕竟数据并发能力是有限的概述当开始Mysql的
2023-06-21

数据的完整性

10.1什么是数据完整性作用:保证 用户的输入的数据 保存到数据库 是正确的比如:年龄:应该是数字,学号:应该是不重复的成绩:不能为空。 。 。怎么去保证数据的完整性:添加约束。完整性约束分类:实体(记录)完整性域完整性、引用完整性10.2实体完整性(行)实体
数据的完整性
2019-06-01

MySQL将多条数据合并成一条的完整示例

数据库中存的是多条数据,展示的时候需要合并成一条数据表存储形式如下图以type分组,type相同的算一条,且保留image和link的所有数据,用groupBy只保留一条数据解决方案:用GROUP_CONCAT完整语法如下group
2023-02-28

mysql中数据操作的示例分析

这篇文章给大家分享的是有关mysql中数据操作的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、读取数据select * from tb1;select count(*) from tb1; #获取数据
2023-06-15

编程热搜

目录