MySQL 数据库 数据完整性

news/2024/11/29 0:40:38/

什么是数据完整性:

数据的完整性是指数据的精确性和可靠性,它的目的是为了防止数据库中存在不符合予以规定的数据或者因错误信息的输入而造成无效的操作。

数据完整性的分类:

  1. 实体完整性:每一行记录在表中是唯一的

——主键约束Primary Key——主键是表中一列或者多列数据,用来唯一标识一行数据 。例如:学号、身份证

——唯一约束Unique——可以用来确保在非主键列中不存在重值,列值可以使NULL

  1. 域完整性:限制向表中输入的数值的范围

——外键约束Foreign——一个表中的外键指向另一个表中的主键

——默认约束Default——向列中插入默认值

——非空约束Not Null ——强制该列不允许为Null值

  1. 引用完整性:保证主关键字和外部关键字之间的参照关系,涉及到两个或者两个以上表中数据的一致性维护

——通过外键约束Foreign key实现

4.自定义完整性:根据项目实际情况设置的数据完整性要求

实现数据完整性细节问题:

  1. 主键约束:主键又称为主码,是表中一列或多列的组合,主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一的标识表中的一条记录

主键分类:——单字段主键——create table student (idCard int primary key):

——多字段主键/联合主键——create table student (idCard int,studentNum int, sex char,primary key (idCard,studentNum);

——create table student(studentNum int auto_increment primary key);

  1. 设置字段自动增长:(小技巧)一个表中只能有一个字段使用auto_increment

anto_increment只有主键能用

设置auto_increment的字段数据类型必须为整数

  1. 使用外键约束:——在多张表之间建立关系,确保多个表之间数据的一致性、完整性。一个表中可以有任意多个外键,外键值等于另一张表的主键

——创建年级表——create table grade (id auto_increment primary key);

——创建班级信息表——create table classinfo(id int auto_increment primary key,

GradeID int,

foreign key (GradeID) references Grade(ID)

---从表外键字段 ---主表主键字段);

注意:主表字段必须设置唯一约束,否则无法设置外键

4.使用非空约束:指定字段的值不能为空——create table student(name varchar(3) not null;

5.使用默认约束:指定某字段的默认值——create table student(sex char(1) default '男';

注意:不能用于auto_increment、timestamp列

6.使用唯一约束:该列的值唯一,不出现重复值,包括null值——create table student(studentNum varchar(11) unique;


http://www.ppmy.cn/news/18999.html

相关文章

expect实现无交互操作

Expect 主要应用于自动化交互式操作场景,它是基于tcl语言的。expect有独自的语法、变量。 在使用expect之前需要安装一下 yum -y install expect安装好后,它一般放在/usr/bin下 使用expect创建脚本的方式 1.定义脚本执行的shell #!/usr/bin/expect 或…

【回望2022,走向2023】一个双非二本非科班的学生的旅途

目录 1.自我介绍 2.高考与暑假 梦想 幻灭 决心 暑假 3.大一上学期 4.奋进之路 5.展望未来 1.自我介绍 我是一个双非本科的大一学生,在2023年的新春之际,借着CSDN的这次年度总结活动,来好好回顾一下,2022这个平凡却又不乏…

深度估计算法原理与论文解读

论文地址: Monocular Depth Estimation Using Laplacian Pyramid-Based Depth Residuals | IEEE Journals & Magazine | IEEE Xplore 深度估计算法原理 1.深度估计任务概述 深度估计,即通过输入的彩色图像,获得每个像素点离相机距离的远近(热度图) ,热度图的深浅表…

04 |「链表」简析

前言 前言:研究一个数据结构的时候,首先讲的是增删改查。 文章目录前言一、链表简介1. 含义2. 节点组成3. 存储方式1)数据在内存中的存储方式2)单链表在内存中的存储方式3)双链表在内存中的存储方式4)循环链…

Python基础学习 -- 模块与包

1、模块每一个py文件都可以理解为一个模块,模块可以增加项目的可读性2、新建一个名为算数.py文件,代码内容如下:print("算数模块被加载!") def 加法(a,b):print(ab)3、新建一个main.py文件,调用模块的内容第…

matlab控制理论学习

一、求传递函数表达式residue() 1、极点不同的情况 分子和分母的矩阵分别为: >> num[2 5 3 6]; >> den[1 6 11 6]; 使用下列命令,即可对分式进行展开,展开后有多项,每一项的分子一定是数字,而分母则是一个…

Alibaba微服务组件Sentinel学习笔记

1 .Sentinel 是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以 流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的…

Maplab:一个用于视觉惯性建图和定位研究的开源框架

摘要 鲁棒且精确的视觉惯性估计是当今机器人领域的重要挑战。能够用先验地图(prior map)进行定位(localize)并获得准确且无漂移的姿态估计,可以推动该系统的适应性。然而,目前大多数可用的解决方案都集中在单次使用,缺乏定位能力或端到端流水…