返回顶部
首页 > 资讯 > 数据库 >MySQL与PHP的基础与应用专题之数据完整性
  • 438
分享到

MySQL与PHP的基础与应用专题之数据完整性

2024-04-02 19:04:59 438人浏览 八月长安
摘要

目录概述数据完整性实体完整性域完整性参照完整性自定完整性唯一性外键创建主表&从表插入数据错误展示概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 数据完整

概述

从今天开始, 小白我将带领大家一起来补充一下 数据库的知识.

数据完整性

数据完整性 (Data Integrity) 指存储在数据库 (Databse) 中的数据, 需要保证一致性和可靠性. 数据完整性可以防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作.

数据完整性包括:

  • 实体完整性: RDBMS 中一行代码表示一个实体. 实体完整性就是保住每一个实体都能被区别
  • 域完整性: 对列的输入的要求, 通过限制类的数据类型, 格式或值的范围来实现
  • 参照完整性: 主要是表与表之间的关系, 可以通过外键来实现
  • 自定义完整性: 借助存储过程和触发器实现

实体完整性

实体完整性 (Enity Integrity) 要求每张表都有唯一标识符, 每张表中的主键字段不能为空且不能重复.

例如:

  • id
  • 编号

域完整性

域完整性 (Domain Integrity) 是针对某一具体关系数据库约束条件. 域完整性能保证表中某些列不能输入无效的值.

例如:

  • 数据类型
  • 格式
  • 值域范围
  • 是否允许空值

举个例子, 当我们录入工资数据的时候, 工资的范围应该确保负数不会被录入.

参照完整性

参照完整性 (Referential Integrity) 指关联的两个表之间的约束. 参照完整性保证了表中每条记录外键的值必须是表中存在的.

自定完整性

自定义完整性是针对某一具体关系数据库的约束条件. 自定义完整性反映某一具体应用所涉及的数据必须满足语义要求.

唯一性

Mysql 中, 可以使用关键字UNIQUE实现字段的唯一性约束, 从而保证实体的完整性.

UNIQUE 的特性:

  • 使用 UNIQUE, 则表中两条数据的同一个字段不能有相同值
  • 一个表中可以有多个 UNIQUE 约束

PHP 代码实现:


<?php

# 创建连接
$conn = mysqli_connect("localhost", "root", "admin", "study");

# 查看是否连接成功
if ($conn) {
    echo "服务器连接成功!";
} else {
    echo mysqli_connect_error();
}

# SQL语句 (身份证带唯一性)
$SQL = "CREATE TABLE user_with_id (
    id INT(8) AUTO_INCREMENT PRIMARY KEY comment '主键id',
    username VARCHAR(255) NOT NULL comment '姓名',
    id_number varchar(255) UNIQUE NOT NULL comment '身份证号'
)";

# 执行SQL语句
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL语句执行成功!";
} else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>

效果:

外键

外键 (Foreign KEY) 定义了表之间一致性, 用于强制参照完整性. 外键约束定义了对同一表或其他表的列的引用, 这些列具有 PRIMARY KEY 或 UNIQUE 约束.

创建主表 & 从表


<?php

# 创建连接
$conn = mysqli_connect("localhost", "root", "admin", "study");

# 查看是否连接成功
if ($conn) {
    echo "服务器连接成功!";
} else {
    echo mysqli_connect_error();
}

# SQL语句, 创建学生表
$SQL1 = "CREATE TABLE student (
    student_id INT(8) PRIMARY KEY COMMENT '学生id',
    student_name VARCHAR(255) NOT NULL COMMENT '学生姓名'
)";

# SQL语句, 创建成绩表
$SQL2 = "CREATE TABLE grade (
    id INT(8) AUTO_INCREMENT PRIMARY KEY COMMENT '主键id',
    student_id INT(8) NOT NULL COMMENT '学生id',
    course varchar(255) NOT NULL COMMENT '课程',
    grade INT(8) NOT NULL COMMENT '成绩',
    FOREIGN KEY (student_id) references student(student_id)
)";

# 执行SQL语句
$result = mysqli_query($conn, $SQL1);

# 查看是否执行成功
if ($result) {
    echo "SQL语句执行成功!";
} else {
    echo mysqli_error($conn);
}

# 执行SQL语句
$result = mysqli_query($conn, $SQL2);

# 查看是否执行成功
if ($result) {
    echo "SQL语句执行成功!";
} else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>

效果:

插入数据


<?php

# 创建连接
$conn = mysqli_connect("localhost", "root", "admin", "study");

# 查看是否连接成功
if ($conn) {
    echo "服务器连接成功!";
} else {
    echo mysqli_connect_error();
}

# SQL语句, 向主表添加数据
$SQL1 = "INSERT INTO student
    (student_id, student_name)
    VALUES(1, '我是小白呀'),
    (2, '我是大白呀')";

# 执行SQL语句
$result = mysqli_query($conn, $SQL1);

# SQL语句, 向从表添加数据
$SQL2 = "INSERT INTO grade
    (student_id, course, grade)
    VALUES(1, '语文', 59),
    (2, '语文', 99)";

# 执行SQL语句
$result = mysqli_query($conn, $SQL2);

# 查看是否执行成功
if ($result) {
    echo "SQL语句执行成功!";
} else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>

错误展示


<?php

# 创建连接
$conn = mysqli_connect("localhost", "root", "admin", "study");

# 查看是否连接成功
if ($conn) {
    echo "服务器连接成功!";
} else {
    echo mysqli_connect_error();
}

# SQL语句, 错误展示 (主表没有student_id=3)
$SQL = "INSERT INTO grade
    (student_id, course, grade)
    VALUES(3, '语文', 88)";

# 执行SQL语句
$result = mysqli_query($conn, $SQL);

# 查看是否执行成功
if ($result) {
    echo "SQL语句执行成功!";
} else {
    echo mysqli_error($conn);
}

# 关闭连接
mysqli_close($conn);

?>

报错:

服务器连接成功!
Fatal error: Uncaught mysqli_sql_exception: Cannot add or update a child row: a foreign key constraint fails (`study`.`grade`, CONSTRAINT `grade_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`student_id`)) in C:\Users\windows\Desktop\数据库\外键错误.php:19
Stack trace:
#0 C:\Users\Windows\Desktop\数据库\外键错误.php(19): mysqli_query(Object(mysqli), 'INSERT INTO gra...')
#1 {main}
thrown in C:\Users\Windows\Desktop\数据库\外键错误.php on line 19
PHP Fatal error: Uncaught mysqli_sql_exception: Cannot add or update a child row: a foreign key constraint fails (`study`.`grade`, CONSTRAINT `grade_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`student_id`)) in C:\Users\Windows\Desktop\数据库\外键错误.php:19
Stack trace:
#0 C:\Users\Windows\Desktop\数据库\外键错误.php(19): mysqli_query(Object(mysqli), 'INSERT INTO gra...')
#1 {main}
thrown in C:\Users\Windows\Desktop\数据库\外键错误.php on line 19

到此这篇关于MySQL与PHP的基础与应用专题之数据完整性的文章就介绍到这了,更多相关MySQL 数据完整性内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL与PHP的基础与应用专题之数据完整性

本文链接: https://lsjlt.com/news/139927.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL与PHP的基础与应用专题之数据完整性
    目录概述数据完整性实体完整性域完整性参照完整性自定完整性唯一性外键创建主表&从表插入数据错误展示概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 数据完整...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之数据控制
    目录概述数据控制语言MySQL权限体系用户管理创建用户删除用户修改密码权限管理查看权限用户授权撤销授权刷新权限注意事项概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之数据查询
    目录概述条件查询例1例2运算符IN例1例2运算符Like例1例2概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 条件查询 我们可以使用关键词Where...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之索引
    概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 索引 索引 (Index) 是一种特殊的数据结构, 类似于图书的目录. 索引能够极大的提升数据库的查询效率. 如...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之创建数据库表
    概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. MySQL 安装 下载地址: https://dev.mysql.com/downloads/windows/i...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之数据查询语句
    目录概述ORDER BY例 1例 2LIMIT例 1例 2GROUP BY例 1例 2HAVING例 1例 2GROUP_CONCAT例 1例 2DISTINCT例 1例 2...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之内置函数
    概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. MySQL 内置函数 MySQL 内置函数可以帮助我们更方便的处理表中的数据, 简化操作. 数学函数: ...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之自连接
    概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 自连接 自连接 (Self Join) 是一种特殊的表连接. 自连接指相互连接的表在物理上同为一张表, 但是逻辑...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之表连接
    概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 表连接 表连接 (JOIN) 是在多个表之间通过连接条件. 使表之间发生关联, 进而能从多个表之间获取数据. ...
    99+
    2024-04-02
  • MySQL与PHP的基础与应用专题之增删改查
    概述 从今天开始, 小白我将带领大家一起来补充一下 数据库的知识. 添加数据 SQL 语句: # 插入单条数据 INSERT INTO 表名 (列名1, 列名2, …) VAL...
    99+
    2024-04-02
  • 数据完整性的基石:主键与外键
    ...
    99+
    2024-04-02
  • 索引与数据完整性的故事
        话说数据库也有着重要的衡量指标,那么性能和安全绝对是重要的两大板块,在这里性能指的是处理与响应户端服务的速度,而安全则是数据完整性规则。  &nbs...
    99+
    2024-04-02
  • MySQL数据库:数据完整性及约束的应用
    数据完整性 域完整性:---------匹配完整性:非空、缺省 字段/列 实体完整性:-------匹配完整性:主键、唯一键 记录/行 引用完整性:-------匹配完整性:外键 表与表之间 约束:constraint MySQL中的约束分...
    99+
    2019-01-16
    MySQL数据库:数据完整性及约束的应用
  • PHP与数据库完整性集成的方法是什么
    这篇文章主要介绍“PHP与数据库完整性集成的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP与数据库完整性集成的方法是什么”文章能帮助大家解决问题。数据完整性概述数据完整性是指数据库中...
    99+
    2023-07-06
  • SpringBoot2零基础到精通之数据与页面响应
    目录1 数据响应1.1 数据响应(JSON为例)1.2 数据响应之内容协商2 页面响应2.1 模板引擎之Thymeleaf2.2 拦截器2.3 文件上传1 数据响应  &...
    99+
    2024-04-02
  • mysql+sqlyog的超详细完整安装+数据库基础知识
    目录 一、安装mysql下载解压添加环境变量创建文件启动mysql安装mysql 二、sqlyog安装sqlyog下载 三 补充3.1 常用的数据库命令3.2 基本操作3.2.1 常用...
    99+
    2023-10-12
    mysql 数据库 oracle
  • Mysql数据库理论基础之十二 ---- 备份与还原
    一、简介由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点:1、是一种数据库管理系统2、是一种关联数据库管理系统3、是一种开放源码软件,且有大量可用的共享MySQL软件4、MySQ...
    99+
    2024-04-02
  • Java基础之JDBC的数据库连接与基本操作
    目录一、JDBC概述二、JDBC操作数据库、操作表步骤三、JDBC体系结构与JDBC API四、注册与加载驱动五、建立连接(Connection)六、使用PreparedStatem...
    99+
    2024-04-02
  • 怎么保证Redis序列化数据的完整性与安全性
    要保证Redis序列化数据的完整性与安全性,可以采取以下措施: 使用合适的序列化机制:选择合适的序列化机制可以确保数据的完整性和...
    99+
    2024-04-29
    Redis
  • 基于PHP+MySQL动漫专题网站系统的设计与实现
    随着时代的发展,人们兴趣爱好也越来越广泛,动漫是当前年轻人比较钟爱的一个兴趣爱好之一,每年都会有大量的动漫爱好者定期的举办一些交流活动等,但是线下的这种交流方式明显不能满足当前动漫爱好者的需求,为此我...
    99+
    2023-09-22
    mysql php 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作