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安装到优化,百科全书级,全网天花板】

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

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

相关文章

mac 安装homebrew ,golang

mac 安装homebrew ,golang 安装homebrew安装golang选择 apple arm 版本安装配置环境变量 安装homebrew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"回车执行指令后&#xff0c;根据提示操作。具体包括以下提示操作&am…

腾讯云轻量服务器“镜像类型”以及“镜像”选择方法

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像&#xff0c;腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍&#xff1a; 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像&#xff1a;独有的应用镜像除了包…

API安全之《大话:API的前世今生》

写在前面&#xff1a;本文结合API使用的业界现状&#xff0c;系统性地阐述API的基本概念、发展历史、表现形式等基础内容&#xff0c;主要包含以下内容&#xff1a; 1.什么是API 2.API的发展历史 3.现代API常用消息格式 4.top N 互联网企业API 使用现状 当前的世界是一个信…

九州未来入选“2023边缘计算产业图谱”三大细分领域

10月26日&#xff0c;边缘计算社区正式发布《2023边缘计算产业图谱》&#xff0c;九州未来凭借深厚的技术积累、优秀的产品服务、完善的产品解决方案体系以及开源贡献&#xff0c;实力入选图谱——边缘计算平台、边缘计算开源、边缘云服务提供商三大细分领域&#xff0c;充分彰…

uniapp保存网络图片

先执行下载uni.downloadFile接口&#xff0c;再执行保存图片uni.saveImageToPhotosAlbum接口。 // 保存二维码 saveQrcode() {var _this this;uni.downloadFile({url: _this.qrcodeUrl, //二维码网络图片的地址success(res) {console.log(res);uni.saveImageToPhotosAlbum({fi…

python中使用websocket调用、获取、保存大模型API

笔者最近在测试星火大模型的时候&#xff0c;他们是使用websocket 来建立对话&#xff0c;而且星火大模型开放的测试代码&#xff0c;质量上不咋地&#xff08;20231030记录&#xff09;&#xff0c;还需要对websocket有一定的了解&#xff0c;才适合自己微调。 安装&#xff…

explain查询sql执行计划返回的字段的详细说明

当使用EXPLAIN命令查看SQL语句的执行计划时&#xff0c;会返回一张表格&#xff0c;其中包含了该SQL语句的执行计划。下面是每个字段的详细分析&#xff1a; id&#xff1a;执行计划的唯一标识符。如果查询中有子查询&#xff0c;每个子查询都会有一个唯一的ID。在执行计划中&a…

JavaScript的分支结构,循环结构,以及函数的定义使用,数组

JS分支结构 if语句 同java if if…else if…else…if //案例&#xff1a;判断输入密码长度 let pwd prompt("请输入密码");let L pwd.length;if(L<6){alert("密码小于六位");}else if(L>6 && L<16){alert("密码大于6位小于1…

聊聊统一认证中的四种安全认证协议(干货分享)

大家好&#xff0c;我是陈哈哈。单点登录SSO的出现是为了解决众多企业面临的痛点&#xff0c;场景即用户需要登录N个程序或系统&#xff0c;每个程序与系统都有不同的用户名和密码。在企业发展初期&#xff0c;可能仅仅有几个程序时&#xff0c;管理账户和密码不是一件难事。但…

一文彻底理解python浅拷贝和深拷贝

目录 一、必备知识二、基本概念三、列表&#xff0c;元组&#xff0c;集合&#xff0c;字符串&#xff0c;字典浅拷贝3.1 列表3.2 元组3.3 集合3.4 字符串3.5 字典3.6 特别注意可视化展示浅拷贝总结 四、列表&#xff0c;元组&#xff0c;集合&#xff0c;字符串&#xff0c;字…

Python爬虫实战(六)——使用代理IP批量下载高清小姐姐图片(附上完整源码)

文章目录 一、爬取目标二、实现效果三、准备工作四、代理IP4.1 代理IP是什么&#xff1f;4.2 代理IP的好处&#xff1f;4.3 获取代理IP4.4 Python获取代理IP 五、代理实战5.1 导入模块5.2 设置翻页5.3 获取图片链接5.4 下载图片5.5 调用主函数5.6 完整源码5.7 免费代理不够用怎…

【UE 模型描边】UE5中给模型描边 数字孪生 智慧城市领域 提供资源下载

目录 0 引言1 Soft Outlines1.1 虚幻商城1.2 使用步骤 2 Auto Mesh Outlines2.1 虚幻商城2.2 使用步骤 3 Survivor Vision3.1 虚幻商城3.2 使用步骤 结尾 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;UE虚幻引擎专栏&#x1f4a5; 标题&#xf…

多线程---JUC

文章目录 什么是JUC&#xff1f;Callable接口ReentrantLockReentrantLock VS synchronized 原子类线程池信号量SemaphoreCountDownLatch 什么是JUC&#xff1f; JUC是&#xff1a;java.util.concurrent这个包名的缩写。它里面包含了与并发相关&#xff0c;即与多线程相关的很多…

【NeurIPS 2023】多模态联合视频生成大模型CoDi

Diffusion Models视频生成-博客汇总 前言:目前视频生成的大部分工作都是只能生成无声音的视频,距离真正可用的视频还有不小的差距。CoDi提出了一种并行多模态生成的大模型,可以同时生成带有音频的视频,距离真正的视频生成更近了一步。相信在不远的将来,可以AI生成的模型可…

C++ 指针

*放在哪里&#xff1f; 如果声明一个变量&#xff1a;int* b; 如果声明多个变量&#xff1a;int a,*b,*c; nullptr c11中NULL的变形&#xff0c;是一个特殊值&#xff0c;可以赋给任意类型的指针&#xff0c;代表该指针指向为空。 this指针 this指针不是一个const Test*(…

关于ABB 机器人多任务的建立

关于ABB 机器人多任务的建立.需要实时监控某一区域&#xff0c;或者某一信号&#xff0c;或者计件到达某一数量机器人自动停止报警&#xff0c;显示到示教器上&#xff0c;多任务可以实现&#xff0c;类似发那科机器人后台逻辑指令 当软件选项漏选或者少选可以选择修改选项&…

新恶意软件使用 MSIX 软件包来感染 Windows

人们发现&#xff0c;一种新的网络攻击活动正在使用 MSIX&#xff08;一种 Windows 应用程序打包格式&#xff09;来感染 Windows PC&#xff0c;并通过将隐秘的恶意软件加载程序放入受害者的 PC 中来逃避检测。 Elastic Security Labs 的研究人员发现&#xff0c;开发人员通常…

pycharm使用ssh连接远程jupyter

1. 安装jupyter pip install jupyter2. 生成jupyter_notebook_config.py文件 jupyter notebook --generate-config3. 设置命令参数 jupyter notebook --no-browser --allow-root --port 8900配置Jupyter服务器 将上面的代码复制到命令行实参中&#xff1a;

【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割7(数据预处理)

在上一节&#xff1a;【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割6&#xff08;数据预处理&#xff09; 中&#xff0c;我们已经得到了与mhd图像同seriesUID名称的mask nrrd数据文件了&#xff0c;可以说是一一对应了。 并且&#xff0c;mask的文件&#xff0c;还根据结…

Qt使用QWebEngineView一些记录

1.关闭软件警告&#xff1a; Release of profile requested but WebEnginePage still not deleted. Expect troubles! 原因&#xff0c;系统退出关闭view&#xff0c;没有释放page。 解决办法&#xff1a;手动释放page 顺便把view也释放了。 Widget::~Widget() {updateIni…