MySQL 数据库基础概念

一、什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

二、RDBMS 术语

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • 行:一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成,

  • 列(col): 具有相同数据类型的数据的集合;
  • 行(row): 每一行用来描述某条记录的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 键的值在当前列中具有唯一性。

三、基础概念

[1] 关系模式 对关系的逻辑结构和特征的描述。

[2] 关系代数 以关系作为运算对象的代数系统。在数据库中用代数运算来定义关系查询的一种形式化语言。

[3] 数据冗余 同一或同一批数据在同一存储设备或同一系统中多处出现,容易造成数据变更时的不一致。

[4] 元组 与关系对应的二维表中的行。相当于数据文件中的记录。

[5] 第二范式 每一个非主属性完全函数依赖于键的关系模式。

[6] 第一范式 每个属性均不能再分解的关系模式。它是关系模式最基本的规范形式。

[7] 主属性 在关系中能够唯一地标识一个元组的属性组中的诸属性。

[8] 函数依赖 如果一部分属性的值由另外一部分属性的值决定,则称该部分属性函数依赖于另一部分属性。例如基本工资额函数依赖于工资级别。

[9] 第三范式 每一个非主属性既不存在对键的部分函数依赖也不存在对键的传递函数依赖的关系模式。

[10] BC范式 每一个函数依赖的决定因素中均含有键的关系模式。

[11] 数据库设计 对于一个给定的应用环境,构造最优的数据库模式。建立数据库及其应用系统,使之能够有效地存储和管理数据满足各种用户的应用需求。

[12] 关系演算 以一阶谓词演算为基础定义的一种抽象的关系查询语言。

四、函数依赖

在数据库设计和规范化中,函数依赖是一个核心概念。它用于描述关系模式(即表结构)中属性之间的依赖关系,帮助我们理解数据的完整性和冗余性,从而指导我们如何优化数据库设计。

1.函数依赖的基本定义

假设有一个关系模式 R,其中包含一组属性集合 U。如果对于 R 的所有可能的关系实例,只要两个元组在属性集 X 上的值相同,那么它们在属性集 Y 上的值也必然相同,我们就说 X 函数决定 Y,记作 X -> Y。这里,X 是决定因子,Y 是被决定的属性或属性集。

例如,在一个学生信息表中,如果有属性 StudentIDNameMajor,我们可以有函数依赖 StudentID -> NameStudentID -> Major,因为每个学生的学号决定了其名字和专业。

2.函数依赖的类型

  • 平凡函数依赖:如果 YX 的子集,则 X -> Y 称为平凡函数依赖。

  • 非平凡函数依赖:如果 Y 不是 X 的子集,则 X -> Y 秢为非平凡函数依赖。

  • 部分函数依赖:如果 X -> Y,但存在 X 的真子集 Z 使得 Z -> Y,则称 YX 部分函数依赖。

  • 完全函数依赖:如果 X -> Y,且不存在 X 的真子集 Z 使得 Z -> Y,则称 YX 完全函数依赖。

3.函数依赖的性质

  • 自反律:如果 YX 的子集,则 X -> Y 成立。

  • 增广律:如果 X -> Y,则对于任何属性集 Z,都有 XZ -> YZ

  • 传递律:如果 X -> YY -> Z,则 X -> Z

函数依赖是数据库规范化理论的基础,通过理解和应用这些规则,可以消除数据冗余,提高数据的一致性和完整性,从而构建更高效、更可靠的数据库系统。

五、自然连接

自然连接(Natural Join)是一种特殊的数据库操作,主要用于合并两个具有公共属性的关系(表)。它是SQL中最常见的连接类型之一,特别适用于当两个表在某些列上拥有相同的属性名时进行数据整合。

1.自然连接的特点:

  1. 自动匹配列名:自然连接会自动识别两个表之间同名的列,并基于这些列进行连接。如果两个表没有共同的列,自然连接的结果将为空。

  2. 内连接类型:自然连接本质上是一种内连接(INNER JOIN),意味着只有当两个表中的记录在共同列上有匹配时,才会出现在结果集中。不匹配的记录会被排除。

  3. 隐式条件:与使用显式ON子句的JOIN不同,自然连接不需要指定连接条件,因为它会默认使用所有同名的列作为连接键。

2.SQL语法示例:

假设有两个表 EmployeesDepartments,它们都有一个名为 DepartmentID 的列。执行自然连接如下:

Sql

SELECT *
FROM Employees
NATURAL JOIN Departments;

这将返回一个新的表,其中包含了 EmployeesDepartments 表中 DepartmentID 相匹配的所有记录。结果集中的每一行都表示一个员工及其所在部门的信息。

3.注意事项:

  • 在使用自然连接时,应确保两个表中的同名列具有相同的含义和数据类型,否则可能会导致错误或意外的结果。

  • 如果两个表中有多个同名列,自然连接会基于所有同名列进行匹配,这可能不是预期的行为。在需要精确控制连接条件的情况下,使用显式的INNER JOIN语句并指定ON子句通常更为合适。

自然连接简化了查询编写过程,特别是在处理具有明显共享属性的表时,但它也可能引入复杂性和不确定性,尤其是在大型数据库系统中。因此,根据具体场景选择合适的连接类型非常重要。

六、引用关系

引用关系(Referential Relationship)在数据库设计中,尤其是关系型数据库中,指的是实体之间的一种联系,它确保了数据的完整性和一致性。这种关系通常是通过外键约束实现的,外键链接一个表的数据到另一个表的主键,从而建立起表与表之间的关联。

1.主要组成部分:

  1. 主键(Primary Key):在关系型数据库中,每个表至少有一个主键,它唯一标识表中的每一条记录。主键可以由一个或多个字段组成,确保数据行的唯一性。

  2. 外键(Foreign Key):外键是参照另一个表主键的一个或多个字段,用于建立两个表之间的链接。通过外键,一个表(子表)的某条记录可以指向另一个表(父表)中的某条记录。

2.引用关系的作用:

  • 数据完整性:引用关系确保了数据库中数据的一致性和完整性。例如,如果一个表中的记录被删除,那么所有引用该记录的其他表中的相关记录要么也被删除(级联删除),要么保持不变(限制删除)以避免出现孤儿记录。

  • 导航和查询:引用关系允许从一个表的数据轻松导航到另一个表的相关数据,这对于复杂的查询和报告非常有用。

3.实现引用关系:

在创建数据库表时,可以通过定义外键约束来实现引用关系。例如,在SQL中,可以这样定义:

Sql

CREATE TABLE Orders (OrderID int PRIMARY KEY,CustomerID int,OrderDate date,FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);

在这个例子中,Orders 表的 CustomerID 字段是一个外键,它引用了 Customers 表的主键 CustomerID。这意味着 Orders 表中的每一个 CustomerID 值必须在 Customers 表中找到对应的值。

引用关系是关系型数据库设计的核心原则之一,它有助于维护数据的逻辑结构和业务规则,确保数据在不同表之间的一致性和相关性。


七、MySQL数据库

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL 是开源的,目前隶属于 Oracle 旗下产品。
  • MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对 PHP 有很好的支持,PHP 是很适合用于 Web 程序开发。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/44623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MSPM0G3507(三十六)——超声波PID控制小车固定距离

效果图: 波形图软件是VOFA,B站有教程 ,虽然有缺点但是非常简单。 视频效果: PID控制距离 之前发过只有超声波测距的代码,MSPM0G3507(三十二)——超声波模块移植代码-CSDN博客 SYSCFG配置&#…

用友NC Cloud blobRefClassSearch FastJson反序列化RCE漏洞复现

0x01 产品简介 用友 NC Cloud 是一种商业级的企业资源规划云平台,为企业提供全面的管理解决方案,包括财务管理、采购管理、销售管理、人力资源管理等功能,实现企业的数字化转型和业务流程优化。 0x02 漏洞概述 用友 NC Cloud blobRefClassSearch 接口处存在FastJson反序列…

开源PHP论坛HadSky本地部署与配置公网地址实现远程访问

文章目录 前言1. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3 Cpolar稳定隧道(本地设置)2.4 公网访问测试 总结 前言 今天和大家分享…

idea启动ssm项目详细教程

前言 今天碰到一个ssm的上古项目,项目没有使用内置的tomcat作为服务器容器,这个时候就需要自己单独设置tomcat容器。这让我想起了我刚入行时被外置tomcat配置支配的恐惧。现在我打算记录一下配置的过程,希望对后面的小伙伴有所帮助吧。 要求…

SpringBoot3.3.0升级方案

本文介绍了由SpringBoot2升级到SpringBoot3.3.0升级方案,新版本的升级可以解决旧版本存在的部分漏洞问题。 一、jdk17下载安装 1、下载 官网下载地址 Java Archive Downloads - Java SE 17 Jdk17下载后,可不设置系统变量java_home,仅在id…

开发技术-Java BigDecimal 精度丢失问题

文章目录 1. 背景2. 方法3. 总结 1. 背景 昨天和小伙伴排查一个问题时,发现一个 BigDecimal 精度丢失的问题,即 double a 1.1;BigDecimal ba new BigDecimal(a).subtract(new BigDecimal(0.1));System.out.println(ba);输出: 1.000000000…

Vue3 使用 Vue Router 时,prams 传参失效和报错问题

Discarded invalid param(s) “id“, “name“, “age“ when navigating 我尝试使用 prams 传递数据 <script setup> import { useRouter } from vue-routerconst router useRouter() const params { id: 1, name: ly, phone: 13246566476, age: 23 } const toDetail…

快速使用BRTR公式出具的大模型Prompt提示语

Role:文章模仿大师 Background: 你是一位文章模仿大师&#xff0c;擅长分析文章风格并进行模仿创作。老板常让你学习他人文章后进行模仿创作。 Attention: 请专注在文章模仿任务上&#xff0c;提供高质量的输出。 Profile: Author: 一博Version: 1.0Language: 中文Descri…

半边数据结构学习

半边数据结构学习 一、网格数据结构二、半边数据结构顶点(Vertex)半边(HalfEdge)面片(Face) 三、OpenMesh 相关代码拓扑关联对象遍历 四、OpenFilpper 相关代码HoleInfo类孔洞检测孔洞信息HoleFiller类孔洞补全 一、网格数据结构 对于表面网络来说&#xff0c;其关键在于拓扑&…

【MySQL系列】VARCHAR的底层存储

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

python-亲和数(赛氪OJ)

[题目描述] 古希腊数学家毕达哥拉斯在自然数研究中发现&#xff0c;220 的所有真约数(即不是自身的约数)之和为&#xff1a; 1245101120224455110&#xff1d;284 。 而 284 的所有真约为 1 、 2 、 4 、 71 、 142 &#xff0c;加起来恰好为 220 。人们对这样的数感到很惊奇&a…

如何搞定美国TikTok直播网络?

在全球范围内&#xff0c;TikTok已经积累了超过30亿次的下载量&#xff0c;月活跃用户达到13亿以上&#xff0c;支持75种语言&#xff0c;覆盖了150多个国家和地区。这一庞大的流量池吸引了众多国内电商人尝试在TikTok上进行业务拓展。本文将探讨如果要在美国运营TikTok直播&am…

MySql性能调优03-[SQL优化]

SQL优化 MySQL优化SQL优化-不要写select *SQL优化-小表驱动大表&#xff0c;而不是大表驱动小表SQL优化-连接查询代替子查询SQL优化-提升group by的效率SQL优化-使用limitSQL优化-union all代替unionSQL优化-join的表不宜过多 MySQL优化 trace工具 set session optimizer_trac…

Kithara与OpenCV (一)

Kithara使用 OpenCV 库 目录 Kithara使用 OpenCV 库简介需求和支持的环境构建 OpenCV 库使用 CMake 进行配置以与 Kithara 一起工作 使用 OpenCV 库设置项目运行 OpenCV 代码图像采集和 OpenCV自动并行化限制和局限性1.系统建议2.实时限制3.不支持的功能和缺失的功能4.显示 Ope…

数字化打造行业生态产业链,企业新增益全知道

在当今数字化时代&#xff0c;利用数字化打造行业生态产业链成为企业发展的重要战略选择。那么&#xff0c;这一举措究竟能为企业带来哪些新增益呢&#xff1f;让我们一探究竟。 一、运营效率大幅提高 数字化技术就像一条神奇的纽带&#xff0c;将产业链上的各个环节紧紧相…

Python函数 之 匿名函数

1.概念 匿名函数: 使用 lambda 关键字 定义的表达式&#xff0c;称为匿名函数. 2.语法 lambda 参数, 参数: 一行代码 # 只能实现简单的功能&#xff0c;只能写一行代码 # 匿名函数 一般不直接调用&#xff0c;作为函数的参数使用的 3.代码 4.练习 # 1, 定义匿名函数, 参数…

32路串口服务器 应用领域

32路串口服务器在多个领域有着广泛的应用&#xff0c;以下是详细的应用实例&#xff1a; 一、工业自动化 在工业自动化领域&#xff0c;32路串口服务器发挥着举足轻重的作用。传统的工业设备往往采用串口通信方式&#xff0c;而串口服务器能够将这些设备接入网络&#xff0c;…

集训 Day 3 总结 虚树 + dfs tree + 基环树

虚树 虚树&#xff0c;顾名思义是 只关注原树上的某些 关键点&#xff0c;在保留原树祖孙关系的前提下建出的一棵边数、点数大大减少的树 适用于优化某些在整棵树上进行 d p dp dp、 d f s dfs dfs 的问题 通常是题目中出现多次询问&#xff0c;每次给出树上的一些关键点&a…

人为因素:为什么网络安全不仅仅关乎技术

关注公众号网络研究观获取更多最新内容。 我们生活在一个生活与技术日益紧密交织的世界。但在构建防火墙和安装防病毒软件时&#xff0c;我们常常会忘记一个关键因素&#xff1a;人的行为。 网络犯罪分子正是利用了人为因素&#xff0c;利用巧妙的心理战术绕过最强大的安全措…

【MySQL基础篇】事务

事务简介 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 典型事例&#xff1a;银行转账操作 假设张三向李四进行转账…