MySQL数据库——数据完整性(实体完整性、域完整性、参照完整性)
数据完整性的概念
数据完整性是为了保证插入到数据库中的数据是正确的,防止用户可能的错误输入。
数据完整性分为实体完整性、域完整性、参照完整性。
实体(行)完整性
实体完整性中的实体指的是表中的行,因为一行记录对应一个实体。
实体完整性规定表的一行在表中是唯一的实体,不能出现重复。
实体完整性通过表的主键来实现。
主键关键字: primary key
主键特点: 不能为null,并且唯一。
主键分类:
逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)
业务主键:例如username,参与实际的业务逻辑。
主键使用方式:
方式一:
Create table t1( id int primary key, name varchar(100));
插入数据:
insert into t1 values(1,’zs’);insert into t1 values(2,’ls’);
主键自动增长:
关键字: auto_increment
下面是主键自动增长的例子
create table t4( id int primary key auto_increment, name varchar(100));
插入数据:
insert into t4(name) values(‘zs’);insert into t4 values(null,’ls’);
域(列)完整性
域(列)完整性指数据库表的列(即字段)必须符合某种特定的数据类型或约束
非空约束:not null
唯一约束: unique
create table t5( username varchar(100) not null unique, gender varchar(100) not null, phonenum varchar(100) unique );
- username 唯一 ,如果有重复就会出现错误:
[Err] 1062 - Duplicate entry 'ls' for key 'username'
如果第二次插入代码
insert into student3(username,gender,phone) VALUES('ls','男','112');
就会出现错误:
[Err] 1062 -关键字“用户名”的重复条目“ls”
gender 不能为 NULL,如果不输入就会出现错误:
Field 'gender' doesn't have a default value
- 执行下面这条代码
insert into student3(username,gender,phone) values('ll','男','113');
就会出现错误Duplicate entry 'll' for key 'username'
- 关键字“用户名”的重复条目“ll”
参照完整性**
参照完整性指的就是多表之间的设计,主要使用外键约束。
多表设计: 一对多、多对多、一对一设计
一对多
下面举例说明:
1.客户和订单的关系就是一对多,一个客户可以有多张订单,一张订单属于一个客户;
创建客户表:
create table customers( id int, name varchar(100), address varchar(255), primary key(id)
);
创建订单表:
create table orders( order_num int primary key, price float(8,2), status int, customer_id int,constainct customer_id_fk foreign key(customer_id) references customers(id));
外键约束: constraint customer_id_fk foreign key(customer_id) references customers(id);
注: constraint: 约束的意思。foreign key: 外键。references: 参照
创建一个名叫customer_id_fk的外键约束,其中外键指的是customer_id,并且参照的是 customers表中的id列。
图形界面操作的过程是:
子表的删除、更新策略
子表的删除更新策略一共有四种:
1. CASCADE 级联策略。
使用此种策略时主表的记录被删除或者主键字段被修改时会同步删除或修改子表
2. NO ACTION 无动作策略。
使用此种策略时要删除主表必须先删除子表,要删除主表的记录必须先删除子表关联的记录,不能更新主表主键字段的值。
3. RSTRICT 主表约束策略。
此种策略对主表的约束跟 NO ACTION 一样
4. SET NO 置空策略。
使用此种策略时,如果主表被删除或者主键被更改,则将子表中的外键设置为NULL。需要注意的是,如果子表的外键是主键或者是设置为NOT NULL的,则主表的删除和主键的更改跟 NO ACTION 一样。
多对多
老师和学生是多对多关系, 一个老师对应多个学生,一个学生被多个老师教
注意:
- 需要创建第三张表,并且公共的字段,可以放入到第三张表格中。
- 设置外键对应其他表格中的主键
创建老师表:
Create table teachers( id int, name varchar(100) salary float(8,2), primary key(id));
创建学生表:
Create table students( id int, name varchar(100), grade varchar(100), primary key(id));
第三张表格:
Create table teacher_student( t_id int, s_id int, primary key(t_id,s_id)CONSTRAINT teacher_id_fk FOREIGN KEY(t_id) REFERENCES teachers(id),CONSTRAINT student_id_fk FOREIGN KEY(s_id) REFERENCES students(id));
一对一
按照外键关联
1.在IdCard表中的外键添加唯一约束
按照主键关联,对主键添加外键约束
实际开发中直接设计一张表格就可以了。
注意:
- 一般情况,设计一张表格即可;
- 设计成两张表格:
第二张表格中创建一个字段为外键(设置成唯一 unique)对应 第一张表格中的主键;
直接使用第二张表格中的主键为外键,对应第一张表格中的主键。
MySQL数据库——数据完整性(实体完整性、域完整性、参照完整性)相关推荐
- mysql实体完整性实现方法_mysql数据库 --数据完整性---实体完整性-域完整性-参照完整性...
一.数据完整性 数据完整性是为了保证插入到数据库中的数据是正确的,防止用户可能的错误输入. 数据完整性分为实体完整性.域完整性.参照完整性. 2.1实体(行)完整性 (实体完整性中的实体指的是表中的行 ...
- 数据库中的数据完整性(实体完整性、域完整性、引用完整性)
作用:保证用户输入的数据保存到数据库中是正确的. 确保数据的完整性 = 在创建表时给表中添加约束 完整性的分类: 实体完整性: 域完整性: 引用完整性: 4.1 实体完整性 实体:即表中的一行(一条记 ...
- 数据的完整性(正确性和准确性):分类-实体完整性:主键约束、唯一约束、自动增长列。域完整性-非空约束、默认值约束、检查约束。引用完整性-一对一、一对多、多对多
文章目录 1 数据的完整性作用 2 完整性的分类 2.1 实体完整性 2.1.1 主键约束 primary key 2.1.2 唯一约束 unique 2.1.3 自动增长列 auto_increme ...
- mysql数据库笔记 约束_MySQL数据库笔记四:MySQL的约束
<1>概念 是一种限制,它是对表的行和列的数据做出约束,确保表中的数据的完整性和唯一性. <2>使用场景 创建表的时候,添加约束 <3>分类 1. default: ...
- mysql 数据库基本知识
原文地址 一.数据库概述 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合. 数据库管理系统(DataBase Managem ...
- 湖北专升本MySQL复习(MySQL数据库实用教程)——MySQL数据表的操作
表是数据库中存储的基本对象,是存储数据的容器,一个完整的表由表结构和表数据两部分组成. 表结构的设计 1.1创建数据表 例:创建学生信息表 create table 学生信息( 学号 char(10) ...
- mysql实体完整性实现方法_MySQL数据库——数据完整性(实体完整性、域完整性、参照完整性)...
数据完整性的概念 数据完整性是为了保证插入到数据库中的数据是正确的,防止用户可能的错误输入. 数据完整性分为实体完整性.域完整性.参照完整性. 实体(行)完整性 实体完整性中的实体指的是表中的行,因为 ...
- MySQL数据完整性(实体完整性、域完整性)
数据完整性: 为保证插入到数据库中的数据是正确的,防止用户输入错误的数据 分为实体完整性. 域完整性 .参照完整性 (下节再说) (1)实体完整性: 实体指的是表中的一行,一行记录对应一个实体 ,通过 ...
- 数据库(实验4 实体完整性 参照完整性 域完整性)
实体完整性约束 C表 /*1为现有表C的CN列创建UNIQUE约束*/ use testbase2 go alter table C add constraint unique_c unique(tn ...
最新文章
- 关于CSDN不给任何通知强制关闭我的6年博客,我深表痛心
- POI导出word带图片及本地测试没问题,在服务器上找不到模板的问题
- linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘
- 【技术博客-总览--重要】
- LINUX之网络编程j简述
- 将自己写的脚本添加至开机自启动服务和chkconfig的原理
- html特殊符号sm,以前搜集的一些资料—html中的特殊字符(2)
- arrays合并两个数组_九章算法 | 字节跳动面试题:合并k个排序数组
- paip.2013年技术趋势以及热点 v2.0 cae
- 【代码优化】考虑使用静态工厂方法代替构造器
- 【.Net MF网络开发板研究-06】以太网转串口
- 联想换机助手_三星s换机助手下载-三星S换机助手 安卓版v3.6.07.11-PC6安卓网
- Elasticsearch 入门到精通-Elasticsearch创建索引
- Word排版技巧分享
- 90后,为什么我建议你不要老是加班?
- 用MATLAB仿真DSB调制
- 小白的jquery学习之路之04效果新闻向上无缝循环显示
- 请问外贸独立站靠谱的收款工具有哪些,求推荐!?
- 数据存储中说的多少G是什么意思
- Encoding History with Context-aware Representation Learning for Personalized Search(2020SIGIR)