MySQL(1):开始

概述

DB:数据库(Database)
即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。

DBMS:数据库管理系统(Database Management System)
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控
制。用户通过数据库管理系统访问数据库中表内的数据。

SQL:结构化查询语言(Structured Query Language)
专门用来与数据库通信的语言。

数据库是数据的集合,而数据库管理系统(DBMS)是用于管理这些数据的软件。 DBMS 允许用户对数据库进行操作、查询和维护。
在这里插入图片描述

MySQL 概述

MySQL是一种流行的开源关系型数据库管理系统(RDBMS),最初由瑞典公司MySQL AB开发。随后,MySQL被Sun Microsystems收购,随后又被Oracle Corporation收购。MySQL以其易用性、稳定性、高性能和开源免费等特点而备受青睐。

特点:
开源性:MySQL是开源的,可以免费获取并在许多操作系统上使用。
跨平台:支持多种操作系统,包括Windows、Linux、macOS等。
性能优化:拥有高性能的存储引擎和优化功能,适用于大型和小型应用。
可扩展性:支持垂直和水平的扩展,适用于不同规模和需求的应用。
安全性:提供访问控制和加密功能,确保数据的安全性。
事务支持:支持事务处理,允许将操作打包成原子性工作单元。
SQL兼容:使用标准的SQL语言进行查询和管理数据。

主要功能:
数据存储:MySQL使用表格(table)来组织数据,支持多种数据类型。
索引:支持各种索引技术,包括B-tree索引、哈希索引等,用于加快查询速度。
视图:允许用户通过视图来虚拟化表,简化复杂查询和保护数据。
存储过程和触发器:支持存储过程和触发器,允许在数据库中执行预定义的程序和操作。
复制和故障转移:具有复制功能,允许将数据复制到其他服务器以实现高可用性。
分区功能:支持对大型表格进行分区,有助于提高查询和管理效率。
管理工具:提供多种管理工具,如MySQL Workbench等,用于管理数据库和执行查询。

关系型数据库(RDBMS)

数据结构:关系型数据库以行(row) 和 列(column) 的形式存储数据,以便于用户理解。其中每行代表一个记录,每列代表不同的数据字段。
SQL:使用结构化查询语言(SQL)进行数据管理和查询。
事务处理:支持事务处理,允许将操作打包为原子性的工作单元,保证数据库的一致性。
数据一致性:严格遵循ACID(原子性、一致性、隔离性、持久性)特性。
Schema:需要定义表结构,即预先定义表和其字段的结构,保证数据的完整性和一致性。

优势:
复杂查询——可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
事务支持——使得对于安全性能很高的数据访问要求得以实现

非关系型数据库(非RDBMS)

数据结构:Non-RDBMS使用多种数据结构,如文档、键值对、列族、图形等,来存储和组织数据。
查询语言:通常没有标准化的查询语言。一些提供了API来操作数据。
分布式系统:许多非关系型数据库是设计用于分布式系统,能够处理大量的数据和高并发。
灵活性:相较于RDBMS,非关系型数据库更加灵活,不需要严格的预定义模式(Schemaless),允许更自由的数据添加和修改
水平扩展:更容易进行水平扩展,即通过添加更多的节点来扩展数据库系统,而不是依赖于单一节点的垂直扩展

非关系型数据库:有键值型数据库、文档型数据库、搜索引擎数据库、列式数据库等。
1.键值型数据库(Key-Value Stores):
特点:基于键值对存储数据,每个数据项都由唯一的键和对应的值组成。键值型数据库适用于快速存储和检索大量简单数据,性能高,但通常不支持复杂的查询操作。
例子:Redis、DynamoDB、Riak等。
2.文档型数据库(Document Stores):
特点:存储的是类似文档的结构,通常使用类似JSON或XML的格式。这种数据库适合存储和查询结构化和非结构化的数据,支持嵌套式数据结构。
例子:MongoDB、Couchbase等。
3.列式数据库(Column-Family Stores):
特点:数据存储在列族中,而非传统的行结构。适用于需要快速读取大量数据的场景,尤其是针对大规模数据集的聚合操作。
例子:Apache Cassandra、HBase等。
4.图形数据库(Graph Databases):
特点:用于存储图形结构的数据,适合处理实体和它们之间复杂的关系。图形数据库用于解决关系非常复杂的数据模型
例子:Neo4j、Amazon Neptune等。
5.搜索引擎数据库(Search Engine):
特点:专注于全文搜索和高效的文本检索,适合处理需要全文搜索功能的场景
例子:Elasticsearch、Apache Solr等。

每种非关系型数据库类型都有其独特的特性和适用场景。选择数据库类型通常取决于数据模型、查询需求、性能要求以及应用程序的特定要求。这些数据库通常能够更好地适应大规模数据和分布式系统。

关系型数据库设计规则

一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性
表具有一些特性,这些特性定义了数据在表中如何存储,类似Java和Python中 “类”的设计。

表、记录、字段

E-R(entity-relationship,实体-联系)模型中有三个主要概念是: 实体集 、 属性 、 联系集 。
一个实体集(class)对应于数据库中的一个表(table),一个实体(instance)则对应于数据库表中的一行(row),也称为一条记录(record)。一个属性(attribute)对应于数据库表中的一列(column),也称为一个字段(field)。
在这里插入图片描述

ORM思想 (Object Relational Mapping)体现:
数据库中的一个表 <—> Java或Python中的一个类
表中的一条数据 <—> 类中的一个对象(或实体)
表中的一个列 <----> 类中的一个字段、属性(field)

表的关联关系

表与表之间的数据记录有关系(relationship)。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
四种:一对一关联、一对多关联、多对多关联、自我引用

1.一对一关联(One-to-One):
指两个表之间的关系,其中一个表的每个记录在另一个表中只有一个相关记录。
例如,在一个公司的数据库中,每个员工可能有唯一的员工编号,这可以与另一个表中的唯一身份证号相对应。

2.一对多关联(One-to-Many):
指两个表之间的关系,其中一个表的记录可以对应到另一个表中的多个记录。
例如,在一个订单和订单详情的关系中,一个订单可以对应多个订单详情,但一个订单详情只属于一个订单。
3.多对多关联(Many-to-Many):
指两个表之间的关系,其中一个表中的多个记录可以对应到另一个表中的多个记录。
这种关系需要通过中间表(连接表)来建立关联。例如,学生和课程之间的关系,一个学生可以选择多门课程,一门课程也可以被多个学生选择。
4.自我引用(Self-Referencing):
指一个表中的记录与该表中的其他记录建立关联。
例如,在员工表中,员工可能有上司,上司也是员工,因此可以在同一个表中使用自身的外键来表示员工和他们的上司之间的关系

设计规则

1.数据库范式化(Normalization):
目的是减少数据冗余,提高数据的一致性和完整性。
分解数据,确保每个表中的数据都是相关的,并且可以通过主键和外键关系连接起来。
2. 设定主键(Primary Key):
每个表应该有一个主键来唯一标识表中的每行数据。
主键应该是唯一且不可为NULL的。
3.设定外键(Foreign Key):
用来建立不同表之间的关联。外键通常是另一个表的主键。
外键用于维护表之间的引用完整性和数据一致性。

4.数据类型选择:
选择适当的数据类型来存储数据,例如整数、字符串、日期等。
使用适当的数据类型可以节省空间并提高查询性能。
5.数据约束(Constraints):
使用约束确保数据的有效性,如唯一性约束、非空约束、默认值约束等。
约束有助于维持数据的一致性和完整性。
6.正规化设计:
将数据分解成适当的表以消除重复数据,并使表结构更清晰、更灵活。
正规化设计有不同的范式,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)等。
7.性能优化:
设计数据库结构时要考虑查询和数据访问的性能。
使用索引来加速查询,但要避免过度索引影响写入性能。
8.文档化和维护:
记录数据库设计的文档,包括表结构、关系图等,以便日后维护和扩展数据库时参考

数据库学习视频:
【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win10虚拟机安装教程

目录 1、安装VMware 10、12、16都可以&#xff0c;看个人选择 2、开始安装系统&#xff08;以vm16为例&#xff09; 3、在虚拟机中安装win10 完成 1、安装VMware 10、12、16都可以&#xff0c;看个人选择 下面链是我虚拟机安装包&#xff0c;需要可以下载。 YR云盘 软件安…

css:button实现el-radio效果

先看最终效果&#xff1a; ​​​ 思路&#xff1a; 一、 首先准备好按钮内容&#xff1a;const a [one,two,three] 将按钮循环展示出来&#xff0c;并设置一些样式&#xff0c;将按钮背景透明&#xff1a; <button v-for"(item,index) in a" :key"in…

【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧,源码分析

一&#xff0c;前期准备环境和工具 1&#xff0c;vmware 16.0安装 若已安装&#xff0c;请忽略 【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;-CSDN博客文章浏览阅读186次&#xff0c;点赞9次&#xff0c;收藏2次。【网络安全 --- 工…

如何配置微信小程序id

使用uni-app开发微信小程序项目&#xff0c;配置好微信小程序id是必不可少的。 一、如何找微信小程序id 二、如何配置微信小程序id

Illustrator 2024(AI v28.0)

Illustrator 2024是一款功能强大的矢量图形编辑软件&#xff0c;由Adobe公司开发。它是设计师、艺术家和创意专业人士的首选工具&#xff0c;用于创建和编辑各种矢量图形、插图、图标、标志和艺术作品。 以下是Adobe Illustrator的主要功能和特点&#xff1a; 矢量图形编辑&…

系列二十一、请描述BeanDefinition的加载过程

一、概述 BeanDefinition是用来描述bean的生产信息&#xff0c;决定bean如何生产&#xff0c;是一个定义态的bean。 二、流程 2.1、第一步&#xff1a;启动IOC容器 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(MySpringConfig.cla…

企业年度经营计划预算最全攻略来了!附年度费用预算表格模板

经营分析里最重要&#xff0c;也最让人头大的部分&#xff0c;莫过于制定经营计划。现实中很多企业因为制定年度经营预算费用不善&#xff0c;导致年度经营计划与预算脱节&#xff0c;年度计划成了摆设…… 年度费用预算表 为了摆脱企业年度经营与发展&#xff0c;并作出科学合…

mysql 增删改查基础命令

数据库是企业的重要信息资产&#xff0c;在使用数据库时&#xff0c;要注意(查和增,无所谓,但是删和改,要谨慎! ) 数据库管理系统(DBMS) :实现对数据的有效组织&#xff0c;管理和存取的系统软件 mysgl 数据库是一个系统&#xff0c; 是一个人机系统&#xff0c;硬件, gs,数据库…

《HelloGitHub》第 91 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

目标检测算法改进系列之嵌入Deformable ConvNets v2 (DCNv2)

Deformable ConvNets v2 简介&#xff1a;由于构造卷积神经网络所用的模块中几何结构是固定的&#xff0c;其几何变换建模的能力本质上是有限的。在DCN v1中引入了两种新的模块来提高卷积神经网络对变换的建模能力&#xff0c;即可变形卷积 (deformable convolution) 和可变形…

Android OpenGL ES 2.0入门实践

本文既然是入门实践&#xff0c;就先从简单的2D图形开始&#xff0c;首先&#xff0c;参考两篇官方文档搭建个框架&#xff0c;便于写OpenGL ES相关的代码&#xff1a;构建 OpenGL ES 环境、OpenGL ES 2.0 及更高版本中的投影和相机视图。 先上代码&#xff0c;代码效果如下图…

基于哈里斯鹰算法的无人机航迹规划-附代码

基于哈里斯鹰算法的无人机航迹规划 文章目录 基于哈里斯鹰算法的无人机航迹规划1.哈里斯鹰搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用哈里斯鹰算法来优化无人机航迹规划。 …

私有云:【4】Esxi安装Server2012R2

私有云&#xff1a;【4】Esxi安装Server2012R2 1、使用Esxi安装虚拟机2、启动虚拟机3、安装必要服务及打补丁 1、使用Esxi安装虚拟机 选择esxi虚拟机挂在Win2012的镜像iso 使用Esxi客户端新建虚拟机 设置虚拟机名称及系统作为模板&#xff0c;如图所示 选择数据存储&#xff0…

C#WPF嵌入字体实例

本文介绍C#WPF嵌入字体实例。 首先创建项目 添加Resources文件夹,添加字体文件,字体文件属性:生成操作为Resources,复制到输出目录:不复制 字体的使用可以采用以下两种方法: 方式一 直接引用 FontFamily="./Resources/#幼圆" 方式二 定义资源 <Applica…

东软集团:看似低调,却有了19年的AI坚持

【科技明说 &#xff5c; 重磅专题】 在AI领域的专注与研究&#xff0c;东软集团是一个低调的存在。 可能很多人不太了解东软集团对于AI的专心与专注以及专业。三专可以简单概括东软集团的AI雄心壮志。 专注在于&#xff0c;早在2004年&#xff0c;东软就开始启动人工智能技…

openEuler 22.03 LTS 安装 Docker CE 和 Dcoker Compose

openEuler 使用 DNF 安装 Docker CE 1024&#xff0c;节日快乐&#xff01;回归正题&#xff0c;DNF 安装 DockerOS 系统环境准备安装 docker-ce 步骤1、更新系统2、安装必要的软件包3、添加 Docker CE 存储库4、更新索引缓存并安装 Docker CE5、启动 Docker 服务6、查看 Docke…

如何公网远程访问本地WebSocket服务端

本地websocket服务端暴露至公网访问【cpolar内网穿透】 文章目录 本地websocket服务端暴露至公网访问【cpolar内网穿透】1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功…

Lvs+Nginx+NDS

什么是&#xff1f;为什么&#xff1f;需要负载均衡 一个网站在创建初期&#xff0c;一般来说都是只有一台服务器对用户提供服务 ​ 从图里可以看出&#xff0c;用户经过互联网直接连接了后端服务器&#xff0c;如果这台服务器什么时候突然 GG 了&#xff0c;用户将无法访问这…

从InnoDB索引的数据结构,去理解索引

从InnoDB索引的数据结构&#xff0c;去理解索引 1、InnoDB 中的 BTree1.1、BTree 的组成1.2、BTree中的数据页 2、聚簇索引2.1、聚簇索引的特点2.2、聚簇索引的结构示例2.3、聚簇索引的优缺点 3、非聚簇索引3.1、非聚簇索引结构示例3.2、关于回表3.3、聚簇索引和非聚簇索引的区…

Spring Boot 配置邮件发送服务

文章归档&#xff1a;https://www.yuque.com/u27599042/coding_star/ctwkrus1r9zrytsq spring boot 版本 3.1.3 邮件发送服务使用的 QQ 邮箱提供的 依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent…