MySQL 数据库 数据完整性

news/2024/7/23 21:21:26 标签: 数据库, mysql, java

什么是数据完整性:

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

数据完整性的分类:

  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.niftyadmin.cn/n/29331.html

相关文章

autojs模仿QQ长按弹窗菜单(二)

牙叔教程 简单易懂 上一节讲了列表和长按事件 autojs模仿QQ长按弹窗菜单 今天讲弹窗菜单 由粗到细, 自顶向下的写代码 我们现在要修改的文件是showMenuWindow.js function showMenuWindow(view) {let popMenuWindow ui.inflateXml(view.getContext(),<column><bu…

为什么会有右值引用?(移动构造、移动赋值)

目录 1、左值引用的缺陷 2、移动构造&#xff1a;解决临时对象的深拷贝 3、拓展&#xff1a;移动赋值 1、左值引用的缺陷 左值引用作为函数参数传递&#xff0c;减少了参数拷贝&#xff1b;但是作为函数返回值&#xff0c;并不适用于所有场景&#xff0c;比如要返回一个临…

【QT5.9】与MFC对比学习笔记-感悟篇2【2023.01.23】

是对QT的分析&#xff0c;不仅局限于QT。 二者区别 天下文章一大抄&#xff0c;技术也一样。MFC是对Windows系统API进行的封装&#xff0c;是以视类与文档类为核心的框架设计。微软20年前就已经把MVC玩的很6了&#xff0c;还有控件、动态库等等技术都是微软爸爸先搞出来的。若…

抗积分饱和PID控制算法及仿真

积分饱和现象所谓积分饱和现象是指若系统存在一个方向的偏差&#xff0c;PID 控制器的输出由于积分作用的不断累加而加大&#xff0c;从而导致执行机构达到极限位置Xmax(例如阀门开度达到最大)&#xff0c;如图所示&#xff0c;若控制器输出u(k)继续增大&#xff0c;阀门开度不…

第八层:模板

文章目录前情回顾模板模板的概念模板的特点模板分类函数模板作用语法函数模板的使用注意事项普通函数和函数模板的区别普通函数和函数模板的调用规则优先调用普通函数空模板强调函数模板函数模板可以发生重载函数模板产生更好的匹配时模板的局限性类模板作用语法类模板实例化对…

【HBase入门】2. 集群搭建

安装 上传解压HBase安装包 tar -xvzf hbase-2.1.0.tar.gz -C ../server/ 修改HBase配置文件 hbase-env.sh cd /export/server/hbase-2.1.0/conf vim hbase-env.sh # 第28行 export JAVA_HOME/export/server/jdk1.8.0_241/ export HBASE_MANAGES_ZKfalsehbase-site.xml vim…

Java | 浅谈多态中的向上转型与向下转型

文章目录&#x1f333;向上转型&#x1f4d5;概念明细&#x1f4aa;使用场景1&#xff1a;直接赋值&#x1f4aa;使用场景2&#xff1a;方法传参&#x1f4aa;使用场景3&#xff1a;方法返回&#x1f4aa;向上转型的优缺点&#x1f333;向下转型&#x1f529;向下转型解决【调用…

【Kotlin】泛型 ② ( 可变参数 vararg 关键字与泛型结合使用 | 使用 [] 运算符获取指定可变参数对象 )

文章目录一、可变参数 vararg 关键字与泛型结合使用二、使用 [] 运算符获取指定可变参数对象一、可变参数 vararg 关键字与泛型结合使用 如果 泛型类型 T 的参数 是 vararg 可变参数 , 则在接收 可变参数 时 , 需要使用 Array<out T> 类型 的变量进行接收 ; 参数为 vara…