MySQL学习基础篇(一)

news2025/1/16 4:03:37

一、数据库概述

1. 为什么要使用数据库

  • 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
  • 持久化的主要作用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。

持久化

2. 数据库与数据库管理系统

2.1 数据库的相关概念

DB:数据库(Database
即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System)
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。
SQL:结构化查询语言(Structured Query Language)
专门用来与数据库通信的语言。

2.2 数据库与数据库管理系统的关系

数据库管理系统(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据。

2.3 常见的数据库介绍

Oracle

1979 年,Oracle 2 诞生,它是第一个商用的 RDBMS(关系型数据库管理系统)。随着 Oracle 软件的名气越来越大,公司也改名叫 Oracle 公司。
2007年,总计85亿美金收购BEA Systems。
2009年,总计74亿美金收购SUN。此前的2008年,SUN以10亿美金收购MySQL。意味着Oracle 同时拥有了 MySQL的管理权,至此 Oracle 在数据库领域中成为绝对的领导者。
2013年,甲骨文超越IBM,成为继Microsoft后全球第二大软件公司。
如今 Oracle 的年收入达到了 400 亿美金,足以证明商用(收费)数据库软件的价值。

SQL Server

SQL Server 是微软开发的大型商业数据库,诞生于 1989 年。C#、.net等语言常使用,与WinNT完全集成,也可以很好地与Microsoft BackOffice产品集成。

DB2

IBM公司的数据库产品,收费的。常应用在银行系统中。

PostgreSQL

PostgreSQL 的稳定性极强,最符合SQL标准,开放源码,具备商业级DBMS质量。PG对数据量大的文本以及SQL处理较快。

SQLite

嵌入式的小型数据库,应用在手机端。 零配置,SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复。

informix

IBM公司出品,取自Information 和Unix的结合,它是第一个被移植到Linux上的商业数据库产品。仅运行于unix/linux平台,命令行操作。 性能较高,支持集群,适应于安全性要求极高的系统,尤其是银行,证券系统的应用。

3. MySQL介绍

3.1 MySQL概述

MySQL是一个 开放源代码的关系型数据库管理系统 ,由瑞典MySQL AB(创始人Michael Widenius)公司1995年开发,迅速成为开源数据库的 No.1。

2008被 Sun 收购(10亿美金),2009年Sun被 Oracle 收购。 MariaDB 应运而生。(MySQL 的创造者担心MySQL 有闭源的风险,因此创建了 MySQL 的分支项目 MariaDB)

MySQL6.x 版本之后分为社区版和商业版

MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL是开源的,所以你不需要支付额外的费用。

MySQL是可以定制的,采用了 GPL(GNU General Public License) 协议,你可以修改源码来开发自己的MySQL系统。

MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持 4GB ,64位系统支持最大的表文件为 8TB 。

MySQL使用 标准的SQL数据语言 形式。

MySQL可以允许运行于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP和Ruby等。

4. RDBMS 与 非RDBMS

关系型数据库绝对是 DBMS 的主流,其中使用最多的 DBMS 分别是 Oracle、
MySQL 和 SQL Server。这些都是关系型数据库(RDBMS)。

4.1 关系型数据库(RDBMS)

  • 关系型数据库(RDBMS)是 最古老 的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系 (即二维表格形式)。
  • 关系型数据库以 行(row)列(column) 的形式存储数据,以便于用户理解。
  • SQL 就是关系型数据库的查询语言。

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

4.2 非关系型数据库(非RDBMS)

4.2.1 非关系型数据库(非RDBMS)概述

非关系型数据库,基于键值对存储数据,不需要经过SQL层的解析。性能非常高 。同时,通过减少不常用的功能,进一步提高性能。
目前基本上大部分主流的非关系型数据库都是免费的。

4.2.2 有哪些非关系型数据库

1.键值型数据库

键值型数据库通过 Key-Value 键值的方式来存储数据,其中 Key 和 Value 可以是简单的对象,也可以是复杂的对象。Key 作为唯一的标识符。

优点是查找速度快,在这方面明显优于关系型数据库。

缺点是无法 像关系型数据库一样使用条件过滤(比如WHERE),如果你不知道去哪里找数据,就要遍历所有的键, 这就会消耗大量的计算。

键值型数据库典型的使用场景是作为 内存缓存
Redis 是最流行的键值型数据库。

2.文档型数据库

此类数据库可存放并获取文档,可以是XML、JSON等格式。在数据库中文档作为处理信息的基本单位,一个文档就相当于一条记录。文档数据库所存放的文档,就相当于键值数据库所存放的“值”。
MongoDB 是最流行的文档型数据库。此外,还有CouchDB等。

3.搜索引擎数据库

虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎数据库是应用在搜索引擎领域的数据存储形式,由于搜索引擎会爬取大量的数据,并以特定的格式进行存储,这样在检索的时候才能保证性能最优。
核心原理是“倒排索引”。
典型产品:Solr、Elasticsearch、Splunk 等。

4.列式数据库

列式数据库是相对于行式存储的数据库,Oracle、MySQL、SQL Server 等数据库都是采用的行式存储(Row-based),而列式数据库是将数据按照列存储到数据库中,这样做的好处是可以大量降低系统的 I/O,适合于分布式文件系统,不足在于功能相对有限。
典型产品:HBase等。

5.图形数据库

图形数据库,利用了图这种数据结构存储了实体(对象)之间的关系。图形数据库最典型的例子就是社交网络中人与人的关系,数据模型主要是以节点和边(关系)来实现,特点在于能高效地解决复杂的关系问题。
图形数据库顾名思义,就是一种存储图形关系的数据库。它利用了图这种数据结构存储了实体(对象)之间的关系。关系型数据用于存储明确关系的数据,但对于复杂关系的数据存储却有些力不从心。如社交网络中人物之间的关系,如果用关系型数据库则非常复杂,用图形数据库将非常简单。
典型产品: Neo4J、InfoGrid等。

5.表的关联关系

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

5.1 一对一关联(one-to-one)

  • 在实际的开发中应用不多,因为一对一可以创建成一张表。 举例:设计 学生表:学号、姓名、手机号码、班级、系别、身份证号码、家庭住址、籍贯、紧急 联系人、…

  • 拆为两个表:两个表的记录是一一对应关系。

  • 基础信息表(常用信息):学号、姓名、手机号码、班级、系别

  • 档案信息表 (不常用信息):学号、身份证号码、家庭住址、籍贯、紧急联系人、…

  • 两种建表原则:

  • 外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
  • 外键是主键:主表的主键和从表的主键,形成主外键关系。

5.2一对多关系(one-to-many)

一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

5.3 多对多(many-to-many)

要表示多对多关系,必须创建第三个表,该表通常称为 联接表 ,它将多对多关系划分为两个一对多关系。

5.4 自我引用(Self reference)

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

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

相关文章

程序员编程效率的大敌:中断与上下文切换

程序员编程效率的大敌:中断与上下文切换 首先解释一下中断和上下文切换: 中断: 编程时被打断, 比如被聊天软件/电子邮件/电话/当面打断等;上下文切换:即任务的切换,有自己主动切换,有伴随中断的新任务&am…

C# 静态构造函数学习

静态构造函数用于初始化类中的静态数据或执行仅需一次的特定操作,静态构造函数将在创建第一个实例或引用类中的静态成员之前自动调用。 静态构造函数具有以下特点: 静态构造函数不使用访问权限修饰符修饰或不具有参数; 类或结构体中…

Proxmox VE 8 发布 - 开源虚拟化管理平台

Proxmox VE 8 发布 - 开源虚拟化管理平台 请访问原文链接:https://sysin.org/blog/proxmox-ve-8/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 宣布 Proxmox 虚拟环境的主要版本 8.0!它基于出色的 De…

SkyWalking--用代码手动获取traceId的方法

原文网址&#xff1a;SkyWalking--用代码手动获取traceId的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java项目如何用代码手动获取SkyWalking的traceId。 引入依赖 <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-tool…

【PCB专题】如何使用Assign color在 Allegro 中快速区别不同网络?

在PCB Layout中经常要查看网络走线,比如电源路径是否合理,线宽是否合适,网络是否形成环路等等。一般我们使用的是高亮网络来查看。 困扰 如果是单一网络这样做是没有什么问题的,但如果是多条网络,就一种颜色会很难看清。就算不同的网络是不同的条纹,在布线比较密集的时…

JavaScript 手写代码 第三期

文章目录 1. 为什么要手写代码&#xff1f;2. 手写代码2.1 函数柯里化2.1.1 基本使用2.1.2 手写实现 2.2 sleep函数2.2.1 简单使用2.2.2 手写实现 2.3 Object.assign() 方法2.3.1 基本使用2.3.2 具体示例2.3.3 具体思路2.3.4 具体实现 1. 为什么要手写代码&#xff1f; 我们在…

ChatGPT底层架构Transformer技术及源码实现(三)

ChatGPT底层架构Transformer技术及源码实现(三) 贝叶斯Bayesian Transformer数学推导论证过程全生命周期详解及底层神经网络物理机制剖析 Gavin大咖微信:NLP_Matrix_Space 从数学的角度来讲,线性转换 其中函数g联合了所有头的操作结果,每个头的产生是采用一个f_att的…

RedHat红帽认证---RHCE

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; RHCE 1.安装和配置 Ansible 安装和配置 Ansible按照下方所述&#xff0c;在控制节点 control 上安装和配置 Ansible&#xff1a;安装所需的软件包创建名为 /home/gre…

认识区块链

文章目录 前言从交易说起线下交易&线上交易存在的隐患线上交易隐患引发的思考 货币发展史解决线上交易存在的隐患比特币的诞生比特币价值的产生 比特币&区块链 前言 我想大多数的 IT 人&#xff0c;即便不是 IT 人&#xff0c;或多说少都听说过“比特币”“区块链”这…

InceptionNext:当Inception遇到ConvNeXt

摘要 https://arxiv.org/pdf/2303.16900.pdf 受 Vision Transformer 长距离依赖关系建模能力的启发&#xff0c;大核卷积最近被广泛研究和采用&#xff0c;以扩大感受野和提高模型性能&#xff0c;如采用77深度卷积的杰出工作connext。虽然这种深度算子只消耗少量的flop&…

初识mysql数据库之数据库介绍

目录 一、什么是数据库 1. 数据库的概念 2. 为什么要有数据库 3. 数据库样例 二、 主流数据库 三、服务器、数据库和表之间的关系 四、mysql存储架构 五、sql语句分类 一、什么是数据库 1. 数据库的概念 如果大家现在已经安装好了mysql&#xff0c;想必大家应该也都知…

数字逻辑与模拟电子技术-部分知识点(1)——模电部分-半导体二极管,半导体的基础知识、本征半导体、杂质半导体、PN结的形成、PN结的特性、二极管的伏安特性

目录 半导体二极管 半导体的基础知识 本征半导体(经过加工处理) 杂质半导体 PN结的形成 PN结的特性 二极管的伏安特性 半导体二极管 半导体的基础知识 半导体器件的材料主要是硅&#xff08;Si&#xff09;、锗&#xff08;Ge&#xff09;和砷化镓&#xff08;GaAs&…

Airtest框架和Poco框架常见问题

Airtest 报告可以导出发给别人看吗 Airtest的报告是可以打包发给别人看的。 ① 想要导出报告发给别人观看&#xff0c;我们需要生成报告的命令中传入 --export 参数&#xff0c;这样就可以将 包含静态资源文件和图片文件的报告 导出到一个指定的文件夹内&#xff0c;之后直接…

Qt绘图(线条、椭圆、矩形、图片滚动)

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();//绘图事件void paintEvent(QPaintE…

XML系列篇之dtd约束

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于xml的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.XML 是什么 &#x1f4a1;辉辉小贴士&a…

STM32时钟系统

时钟 时钟是具有周期性的脉冲信号&#xff0c;最常用的是占空比50%的方波。 时钟是单片机的脉搏。 时钟树 HSE&#xff1a;高速外部振荡器&#xff0c;4~16MHz&#xff0c;&#xff08;晶体&#xff0c;陶瓷&#xff09;LSE&#xff1a;低速外部振荡器&#xff0c;32.768KHz…

ADC0808/ADC0809引脚图及功能和工作原理介绍

ADC0808芯片有28条引脚&#xff0c;采用双列直插式封装。如图所示&#xff1a; . . . 各引脚功能如下&#xff1a; 1-5和26-28&#xff08;IN0-IN7&#xff09;&#xff1a;8路模拟量输入端。 8、14、15和17-21&#xff1a;8位数字量输出端。 22&#xff08;ALE&#xff09…

深度学习代码环境配置(编译器, git, anaconda)

内容 编译器 gcc&#xff1a;GNU编译器套装C builderMicrosoft Visual C&#xff08;MSVC&#xff09;&#xff1a;微软的VC编译器MinGW&#xff08;Minimalist GNU on Windows&#xff09;&#xff1a;可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合&…

【设计模式】面向对象的设计原则

(一) UML 和面向对象设计原则 1. 一种某唱片播放器不仅可以播放唱片&#xff0c;而且可以连接计算机并把计算机中的歌曲刻录到 唱片上&#xff08;同步歌曲&#xff09;。连接计算机的过程中还可自动完成充电。 关于唱片&#xff0c;还有如下描述信息&#xff1a; &#xf…