热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL 数据库的基础知识_Mysql

这篇文章主要介绍了MySQL 数据库的基础知识,它是一类更具体的可以管理数据的软件。但是实现数据库的这个软件,需要用到很多的数据结构,下面来看看文章是怎么

1. 认识数据库

1.1 数据库和数据结构的关系

数据结构:

是指相互之间存在一种或多种特定关系的数据元素的集合,是一个抽象的学科

我们熟知的数据结构有:

顺序表、链表、栈、队列、二叉树、哈希表…

数据库:

和数据结构不同,它是一类更具体的可以管理数据的软件。但是实现数据库的这个软件,需要用到很多的数据结构

而使用数据库管理数据具体的功能就包括:



  • 描述:描述一条数据如何表示


  • 组织:如何将很多数据进行汇总

至于管理的目的就是:

为了增删改查

1.2 为什么需要数据库

数据库要将数据进行管理的前提就是将数据进行存储。但是存储数据使用文件就可以了,为什么还要弄个数据库呢?

因为使用文件保存数据有以下几个缺点:


  • 文件的安全性问题

  • 文件不利于数据查询和管理

  • 文件不利于存储海量数据

  • 文件在程序中控制不方便

1.3 数据库的存储

当下绝大部分计算机都遵守着冯诺依曼体系结构

在这里插入图片描述

数据的存储一般放在内存储器和外存储器(外存储器包括:硬盘、光盘、U盘、软盘等,但这里指硬盘)

数据库是有多种的,并没有统一规定所有数据库存放的位置,但主要的数据库的数据存储位置如下:


  • 大部分数据库是把数据组织在外存储上,如:MySQLOracleSQL Server

  • 少数数据库是把数据组织到内存上,如:Redis


补充: MySQL 为什么要把数据存储在外存储器(硬盘)中呢?这里我们就要先了解下内存和硬盘的区别































区别内存外存(硬盘)
1内存的访问速度快硬盘的访问速度慢
2内存的空间小硬盘的空间大
3内存贵硬盘便宜
4如果掉电,内存上的数据会丢失如果掉电,硬盘的数据不会丢失


 综合以上2、3、4的区别,认为 MySQL 使用硬盘来存储数据更好

2. SQL

2.1 介绍

结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

注意: SQL 和 MySQL 的区别



  • SQL 是一种编程语言

  • MySQL 是一种软件,它属于关系型数据库的一种,而关系型数据库都是支持 SQL 的,而非关系型数据库有的支持,有的不支持 SQL

2.2 分类

SQL 可以分为6部分:


  • 数据查询语言(DQL): 其语句也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。

  • 数据操作语言(DML): 其语句包括动词 INSERTUPDATE DELETE。它们分别用于添加、修改和删除。

  • 事务控制语言(TCL): 它的语句能确保被 DML 语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

  • 数据控制语言(DCL): 它的语句通过 GRANT 或 REVOKE 实现权限控制,确定单个用户和用户组对数据库对象的访问。某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个列的访问。

  • 数据定义语言(DDL): 其语句包括动词 CREATE、ALTER 和 DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE)、为表加入索引等。

  • 指针控制语言(CCL): 它的语句,像 DECLARE CURSORFETCH INTO UPDATE WHERE CURRENT 用于对一个或多个表单独行的操作。

3. 数据库的类别

数据库大体可以分为:


  • 关系型数据库

  • 非关系型数据库

3.1 关系型数据库

介绍:


  • 是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表格及其之间的联系所组成的一个数据组织

  • 关系型数据库都基于标准的 SQL,只是内部的一些实现有区别

常见关系型数据库:

Oracle:甲骨文产品,是数据库中的王者。由于收费,且随着数据量的增大对机器要求比较高,所以使用成本很高。适用于银行这类对数据的安全和服务要求很高且本身很有钱的公司
MySQL:被甲骨文收购,开源免费。现在很多公司普遍使用它
SQL Server:微软产品,由于曾经这个数据库和 windows server 系统进行了捆绑,而大多数服务器系统都是在 Linux 上,所以逐渐失去市场。如今可以支持 Linux

3.2 非关系型数据库

介绍:

非关系型数据库一般指 NoSQL,区别于关系数据库,它们不保证关系数据的 ACID 特性,都是去掉关系数据库的关系型特性
不规定基于 SQL 实现

常见非关系型数据库:



  • redis:基于键值对(key-value)


  • mongodb:基于列族


  • hbase:基于文档型

3.3 区别









































区别关系型数据库非关系型数据库
使用 SQL不强制要求,一般不基于 SQL 实现
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基本结构基于表和列,结构固定灵活性比较高
使用场景业务方面的 OLTP 系统用于数据的缓存或基于统计分析的 OLAP 系统

补充:



  • OLTP(On-Line Transaction Processing):是指联机事物处理


  • OLAP(On-Line Analytical Processing):是指联机分析处理

4. MySQL 的程序结构

MySQL 其实是一个“客户端-服务器”结构的程序

那么什么是客户端和服务器呢?下面将简单介绍

4.1 客户端和服务器

介绍:


  • 客户端:是主动发起请求的一方

  • 服务器:是被动接受请求的一方

  • 客户端给服务器发送的数据,称为:请求(Request

  • 服务器给客户端返回的数据,称为:响应(Response

  • 一个服务器同时可能给多个客户端提供服务

  • 大部分客户端服务器都是这种“一个请求一个响应”的交互模型

  • 客户端和服务器是通过网络来通信的

示例:

你去饭店吃饭,你跟老板说来一碗农家一碗香,后面老板给你把你点的餐端上来。

此时你就是“客户端”,饭店老板就是”服务器“,你跟老板点餐就是你的”请求“,老板把你点的餐端上来就是”响应“。而一个老板其实可以服务多个客户。

4.2 MySQL 的客户端-服务器结构

当我们使用 MySQL 时,我们其实会遇见以下几种情况:



  • 在同一台主机安装 MySQL 客户端和 MySQL 服务器(我们自己在个人电脑安装时就是这种情况)

在这里插入图片描述


  • MySQL 客户端和 MySQL 服务器分别在两台不同的主机上

在这里插入图片描述


  • 实际工作中往往是下面这种情况,多台主机的客户端连接一台主机的服务器

在这里插入图片描述


注意:


  • MySQL 是把数据存储在服务器上,服务器才是数据库的本体,负责管理数据

  • MySQL 客户端其实就是一个非常简单的程序,仅仅是用来和用户交互的。这个程序可能是:命令行程序、可视化界面的程序、自己代码实现的程序


4.3 MySQL 服务器

介绍:


  • MySQL 服务器其实含有若干个数据库(每个数据库视为是一组逻辑上的集合)

  • 一个数据库包含了若干个有关联的表

  • 一个表包含了若干行(每一行都有若干条记录)

  • 一行包含了若干列(每一列都有具体的类型要求)

示例:

假如有一个 MySQL 服务器存储着 CSDN 的数据,它里面可能有3个数据库。数据库1存储着:用户信息、用户排名、文章数量等数据。数据库2存储着:活动内容、投稿文章、奖品信息等数据。数据库2存储着:视频、资源等数据。而其中数据库1中的例如用户信息等数据,它其实就是一个表,类似于 excel 表,而有关联的几个表,就组成了一个数据库。

注意:

数据库的含义其实要依照上下文,它可能是一门学科,也可能是一类软件,有时也指一个服务器,有时还表示一个数据集合等

1. 认识数据库

1.1 数据库和数据结构的关系

数据结构:

是指相互之间存在一种或多种特定关系的数据元素的集合,是一个抽象的学科

我们熟知的数据结构有:

顺序表、链表、栈、队列、二叉树、哈希表…

数据库:

和数据结构不同,它是一类更具体的可以管理数据的软件。但是实现数据库的这个软件,需要用到很多的数据结构

而使用数据库管理数据具体的功能就包括:



  • 描述:描述一条数据如何表示


  • 组织:如何将很多数据进行汇总

至于管理的目的就是:

为了增删改查

1.2 为什么需要数据库

数据库要将数据进行管理的前提就是将数据进行存储。但是存储数据使用文件就可以了,为什么还要弄个数据库呢?

因为使用文件保存数据有以下几个缺点:


  • 文件的安全性问题

  • 文件不利于数据查询和管理

  • 文件不利于存储海量数据

  • 文件在程序中控制不方便

1.3 数据库的存储

当下绝大部分计算机都遵守着冯诺依曼体系结构

在这里插入图片描述

数据的存储一般放在内存储器和外存储器(外存储器包括:硬盘、光盘、U盘、软盘等,但这里指硬盘)

数据库是有多种的,并没有统一规定所有数据库存放的位置,但主要的数据库的数据存储位置如下:


  • 大部分数据库是把数据组织在外存储上,如:MySQLOracleSQL Server

  • 少数数据库是把数据组织到内存上,如:Redis


补充: MySQL 为什么要把数据存储在外存储器(硬盘)中呢?这里我们就要先了解下内存和硬盘的区别































区别内存外存(硬盘)
1内存的访问速度快硬盘的访问速度慢
2内存的空间小硬盘的空间大
3内存贵硬盘便宜
4如果掉电,内存上的数据会丢失如果掉电,硬盘的数据不会丢失


 综合以上2、3、4的区别,认为 MySQL 使用硬盘来存储数据更好

2. SQL

2.1 介绍

结构化查询语言(Structured Query Language)简称 SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

注意: SQL 和 MySQL 的区别



  • SQL 是一种编程语言

  • MySQL 是一种软件,它属于关系型数据库的一种,而关系型数据库都是支持 SQL 的,而非关系型数据库有的支持,有的不支持 SQL

2.2 分类

SQL 可以分为6部分:


  • 数据查询语言(DQL): 其语句也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。

  • 数据操作语言(DML): 其语句包括动词 INSERTUPDATE DELETE。它们分别用于添加、修改和删除。

  • 事务控制语言(TCL): 它的语句能确保被 DML 语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。

  • 数据控制语言(DCL): 它的语句通过 GRANT 或 REVOKE 实现权限控制,确定单个用户和用户组对数据库对象的访问。某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个列的访问。

  • 数据定义语言(DDL): 其语句包括动词 CREATE、ALTER 和 DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE)、为表加入索引等。

  • 指针控制语言(CCL): 它的语句,像 DECLARE CURSORFETCH INTO UPDATE WHERE CURRENT 用于对一个或多个表单独行的操作。

3. 数据库的类别

数据库大体可以分为:


  • 关系型数据库

  • 非关系型数据库

3.1 关系型数据库

介绍:


  • 是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表格及其之间的联系所组成的一个数据组织

  • 关系型数据库都基于标准的 SQL,只是内部的一些实现有区别

常见关系型数据库:

Oracle:甲骨文产品,是数据库中的王者。由于收费,且随着数据量的增大对机器要求比较高,所以使用成本很高。适用于银行这类对数据的安全和服务要求很高且本身很有钱的公司
MySQL:被甲骨文收购,开源免费。现在很多公司普遍使用它
SQL Server:微软产品,由于曾经这个数据库和 windows server 系统进行了捆绑,而大多数服务器系统都是在 Linux 上,所以逐渐失去市场。如今可以支持 Linux

3.2 非关系型数据库

介绍:

非关系型数据库一般指 NoSQL,区别于关系数据库,它们不保证关系数据的 ACID 特性,都是去掉关系数据库的关系型特性
不规定基于 SQL 实现

常见非关系型数据库:



  • redis:基于键值对(key-value)


  • mongodb:基于列族


  • hbase:基于文档型

3.3 区别









































区别关系型数据库非关系型数据库
使用 SQL不强制要求,一般不基于 SQL 实现
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基本结构基于表和列,结构固定灵活性比较高
使用场景业务方面的 OLTP 系统用于数据的缓存或基于统计分析的 OLAP 系统

补充:



  • OLTP(On-Line Transaction Processing):是指联机事物处理


  • OLAP(On-Line Analytical Processing):是指联机分析处理

4. MySQL 的程序结构

MySQL 其实是一个“客户端-服务器”结构的程序

那么什么是客户端和服务器呢?下面将简单介绍

4.1 客户端和服务器

介绍:


  • 客户端:是主动发起请求的一方

  • 服务器:是被动接受请求的一方

  • 客户端给服务器发送的数据,称为:请求(Request

  • 服务器给客户端返回的数据,称为:响应(Response

  • 一个服务器同时可能给多个客户端提供服务

  • 大部分客户端服务器都是这种“一个请求一个响应”的交互模型

  • 客户端和服务器是通过网络来通信的

示例:

你去饭店吃饭,你跟老板说来一碗农家一碗香,后面老板给你把你点的餐端上来。

此时你就是“客户端”,饭店老板就是”服务器“,你跟老板点餐就是你的”请求“,老板把你点的餐端上来就是”响应“。而一个老板其实可以服务多个客户。

4.2 MySQL 的客户端-服务器结构

当我们使用 MySQL 时,我们其实会遇见以下几种情况:



  • 在同一台主机安装 MySQL 客户端和 MySQL 服务器(我们自己在个人电脑安装时就是这种情况)

在这里插入图片描述


  • MySQL 客户端和 MySQL 服务器分别在两台不同的主机上

在这里插入图片描述


  • 实际工作中往往是下面这种情况,多台主机的客户端连接一台主机的服务器

在这里插入图片描述


注意:


  • MySQL 是把数据存储在服务器上,服务器才是数据库的本体,负责管理数据

  • MySQL 客户端其实就是一个非常简单的程序,仅仅是用来和用户交互的。这个程序可能是:命令行程序、可视化界面的程序、自己代码实现的程序


4.3 MySQL 服务器

介绍:


  • MySQL 服务器其实含有若干个数据库(每个数据库视为是一组逻辑上的集合)

  • 一个数据库包含了若干个有关联的表

  • 一个表包含了若干行(每一行都有若干条记录)

  • 一行包含了若干列(每一列都有具体的类型要求)

示例:

假如有一个 MySQL 服务器存储着 CSDN 的数据,它里面可能有3个数据库。数据库1存储着:用户信息、用户排名、文章数量等数据。数据库2存储着:活动内容、投稿文章、奖品信息等数据。数据库2存储着:视频、资源等数据。而其中数据库1中的例如用户信息等数据,它其实就是一个表,类似于 excel 表,而有关联的几个表,就组成了一个数据库。

注意:

数据库的含义其实要依照上下文,它可能是一门学科,也可能是一类软件,有时也指一个服务器,有时还表示一个数据集合等


推荐阅读
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文介绍如何在将数据库从服务器复制到本地时,处理因外键约束导致的数据插入失败问题。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
author-avatar
手机用户2502901613
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有