MySQL 数据库的基础知识
作者:吞吞吐吐大魔王 发布时间:2024-01-17 03:05:52
1. 认识数据库
1.1 数据库和数据结构的关系
数据结构:
是指相互之间存在一种或多种特定关系的数据元素的集合,是一个抽象的学科
我们熟知的数据结构有:
顺序表、链表、栈、队列、二叉树、哈希表…
数据库:
和数据结构不同,它是一类更具体的可以管理数据的软件。但是实现数据库的这个软件,需要用到很多的数据结构
而使用数据库管理数据具体的功能就包括:
描述:描述一条数据如何表示
组织:如何将很多数据进行汇总
至于管理的目的就是:
为了增删改查
1.2 为什么需要数据库
数据库要将数据进行管理的前提就是将数据进行存储。但是存储数据使用文件就可以了,为什么还要弄个数据库呢?
因为使用文件保存数据有以下几个缺点:
文件的安全性问题
文件不利于数据查询和管理
文件不利于存储海量数据
文件在程序中控制不方便
1.3 数据库的存储
当下绝大部分计算机都遵守着冯诺依曼体系结构
数据的存储一般放在内存储器和外存储器(外存储器包括:硬盘、光盘、U盘、软盘等,但这里指硬盘)
数据库是有多种的,并没有统一规定所有数据库存放的位置,但主要的数据库的数据存储位置如下:
大部分数据库是把数据组织在外存储上,如:
MySQL
、Oracle
、SQL 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
): 其语句包括动词INSERT
、UPDATE
和DELETE
。它们分别用于添加、修改和删除。事务控制语言(
TCL
): 它的语句能确保被 DML 语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT
(保存点)命令、ROLLBACK(回滚)命令。数据控制语言(
DCL
): 它的语句通过 GRANT 或 REVOKE 实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS
可用 GRANT 或 REVOKE 控制对表单个列的访问。数据定义语言(
DDL
): 其语句包括动词 CREATE、ALTER 和 DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE)、为表加入索引等。指针控制语言(CCL): 它的语句,像
DECLARE CURSOR
、FETCH 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 表,而有关联的几个表,就组成了一个数据库。
注意:
数据库的含义其实要依照上下文,它可能是一门学科,也可能是一类软件,有时也指一个服务器,有时还表示一个数据集合等
来源:https://blog.csdn.net/weixin_51367845/article/details/121299480
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- PyQt5中QInputDialog的使用,Qt的QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,它提供了4种
- 相信在使用MSSQL数据库下使用事务回滚方式操作多表记录的时候,会经常出现“不能在手动或分布事务方式下创建新的连接”的出错提示信息,这个问题
- 前面我们讲了一些Dreamweaver MX的基本操作,相信大家看了后都会觉得比较简单,的确,这是个工具软件,操作方便应该是它的宗旨。其实网
- request库是python的第三方库,它也是目前公认的爬取网页最好的第三方库,其特点是:简单、简洁,甚至用一行代码就能从网页上获取相关资
- 写在前面:这篇文章也是借鉴了一些前辈的代码和思路写的,代码有些也是复用了别人的。先说下思路:1.首先利用Opencv检测出人脸的区域&nbs
- 前言在之前的一篇文章Python可视化神器-Plotly动画展示展现了可视化神器-Plotly的动画的基本应用,本文介绍如何在Python中
- 在机器学习过程中,通常会通过pandas读取csv文件,保持成dadaframe格式,然而有时候需要对dataframe中的时间字段进行数据
- 大家都知道,Dreamweaver是是一款专业的网页设计工具,提供了许多方便、实用的功能,使得以前许多网页效果的实现从繁琐的代码
- 这篇文章主要介绍了Python如何使用Gitlab API实现批量的合并分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的
- 如何生成任意n阶的三对角矩阵数学作业要求实现共轭梯度法的算法。题目中的矩阵A是n=400/500/600的三对角矩阵。在网上查阅资料未果后,
- 失效的书签们我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.jpg ),于是我们就默默的点了个收藏或者加书签。然而当我们面对成百
- 之前写了一篇flask开发环境搭建,今天继续,进行一个实战小项目-blog系统。blog系统很简单,只有一个页面,然后麻雀虽小五脏俱全。这里
- TensorFlow官网给的cifar-10教程,是卷积神经网络入门的好例子,有时想直接拿这个模型来跑自己的数据,却发现他的数据类型不是常见
- 目标嗯,我们知道搜索或浏览网站时会有很多精美、漂亮的图片。我们下载的时候,得鼠标一个个下载,而且还翻页。那么,有没有一种方法,可以使用非人工
- golang 中多个 defer 的执行顺序引用 Ture Go 中的一个示例:package mainimport "fmt&q
- 在写登录功能的时候看着网上的视频学着做,然后看了源码的时候发现了一些有意思的功能,因此写这一篇笔记分享给大家.1.阅读Django自带用户系
- 本文实例讲述了python实现连接mongodb的方法。分享给大家供大家参考。具体分析如下:通过pymongo可以很容易的链接到mongod
- 1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数
- Python# coding=utf-8import timeimport sysdef func(): # 格式化输出时间 &
- 引言做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、