学习MySQL数据库之前非看不可的一篇文章

news2025/7/27 4:37:08

目录

  • 1、数据库概念
    • 1.1主流数据库
  • 3、基本使用
    • 2.1 连接服务器
    • 2.2 服务器、数据库、表关系
    • 2.3 见见猪跑
  • 3、MySQL架构
  • 4、SQL分类

1、数据库概念

数据库(Database)是一个有组织的数据集合,用于存储、管理和检索信息。它是一个计算机系统中的关键组成部分,被用于在结构化形式中存储大量数据,以便后续查询和分析。

数据库通常包括以下关键元素:

  1. 数据:数据库中存储的信息,可以是文本、数字、图像、音频、视频等多种形式的数据。
  2. 表:数据以表格形式组织,表格由行和列组成,每一列代表特定的数据属性,每一行包含具体的数据条目。
  3. 记录:也称为行,每一行代表数据库中的一个数据项,它包含了不同列的值,描述了一个实体或对象的属性。
  4. 列:也称为字段,代表了数据表中的特定属性或信息类别。列定义了数据的类型和格式。
  5. 主键:一列或一组列,用于唯一标识数据表中的每个记录。主键确保每个记录都有唯一的标识。
  6. 查询:用于检索、过滤、排序和分析数据库中的数据的操作。查询可以根据特定的条件来提取所需的信息。
  7. 索引:用于加速数据检索的数据结构,可以使查询更快速。索引通常基于一个或多个列的值来创建。

我们平时存储数据的时候不是用文件就可以了吗?为什么还要弄一个数据库?
文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

举个栗子
现在有一个文件,里面有10万行内容,比如里面都是ip地址。此时有一个需求:需要我们统计和找出当前文件中以120开头的ip地址,有多少个?分别是什么?
那如果只有我们平时使用的文件,可能就需要我们程序员使用语言工具,如C++、Java…去按行读取文件然后再自己写个算法去分析统计数据… …
所以我们平时使用的文件,主要是提供内容存储能力,不利于数据查询管理控制… …
因此诞生了数据库

数据库是分为数据库服务器和数据库客户端的
以MySql数据库为例,我们平时使用MySql需要输入各种mysql命令,这是通过数据库客户端输入的(称mysql)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

而我们在使用mysql数据库之前,需要通过客户端连接上mysql的数据库服务器,后续各种数据库操作也是需要服务器去帮我们实现的
mysql服务器我们可以通过ps命令去进行查看

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里查看到的mysqld就是MySql的服务器,我们在mysql客户端使用命令实际上是通过服务器去进行实际操作的。而其中的传输手段则是通过网络!因此我们也能通过tetstat命令查看

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过netstat命令可以看到,MySql服务器底层采用的是TCP6协议,目前服务器处于监听状态。

综上所述

  1. mysql是MySql数据库的客户端
  2. mysqld是MySql数据库的服务端
  3. mysql本质:是一种基于C(客户端)S(服务端)模式的一种网络服务
  4. mysql就是一套给我们提供了数据存储管理控制等功能的网络程序!
  5. 数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

程序员不会直接对数据文件进行访问和控制,而是通过数据库这类服务实现对文件数据的增删查改等操作

1.1主流数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中

3、基本使用

2.1 连接服务器

输入:

mysql -h 127.0.0.1 -P 3306 -u root -p

解释说明:

  • -h:表示你要连接的mysqld所在的主机,127.0.0.1表示本主机(我们目前只进行本地单机操作)
  • -P:表示你要连接的mysqld对应的端口号,一般默认3306(可在配置文件中修改)
  • -u:表示用哪一个用户连接mysqld,root表示超级用户
  • -p:表示用户登录时对应的密码

2.2 服务器、数据库、表关系

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  • 图中的Client对应的就是mysql客户端,MySQL对应的就是mysqld服务端;DB(database)表示的是mysqld创建管理的多个数据库(目录),每个DB下会包含多张表(普通文件)。一般一个软件对应一个数据库。

2.3 见见猪跑

在以上介绍中,了解了数据库、数据库文件,但是还是挺抽象。我们这里使用简单的mysql语句进行一些生动感悟!(后续会详细介绍语句用法)

  • 数据存储路径

我们已经知道,数据库本质上是存储在磁盘或者内存中的特定结构组织的数据;那存在哪呢?我想见见
我们可以通过查看mysql的配置文件中的datadir得知数据文件存储路径

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将来我们通过mysql创建的数据库文件都会存储在这目录下。

  • 创建数据库
create database helloworld;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们连接mysql服务器之后,在mysql客户端输入创建数据库的语句后,此时/var/lib/mysql目录下就会多出一个名为helloworld的目录

  • 使用数据库

在使用数据库之前,我们可以通过show语句查看当前有哪些数据库,然后再通过use语句,指定要使用哪一个数据库:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此时我们发现,通过show语句打印出来的数据库,就是对应目录下的文件夹。到这会,我们会感觉通过mysql数据库所创建文件,和我们平时在windos系统下的文件使用有那么几分相似。但是使用数据库作用就在,除了存储数据文件之外,还很便于各种操作控制…

  • 创建数据库表
create table student(
	id int,
	name varchar(32),
	gender varchar(2)
);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 表中插入数据
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 查询表中数据
select * from student;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从图中我们可以知道,mysql数据库的数据逻辑存储是通过行和列来存储展示的

3、MySQL架构

MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

MySQL数据库系统的架构可以分为以下几层,每一层都有特定的功能和作用:

  1. 连接层(Connection Layer)
    • 这是MySQL的最顶层,负责客户端与数据库服务器之间的连接管理。它处理客户端连接请求、身份验证和安全性。
    • 作用:建立、维护和终止与客户端的连接,进行身份验证和权限检查。
  2. 服务器层(Server Layer)
    • 这一层包含了MySQL的核心组件,如查询解析器、查询优化器和执行引擎。它负责处理SQL查询,并决定如何检索和修改数据。
    • 作用:解析SQL查询语句,优化查询计划,执行查询并返回结果。
  3. 存储引擎层(Storage Engine Layer)
    • 存储引擎是MySQL架构的可插拔部分,允许用户选择不同的存储引擎来管理数据存储和检索。MySQL支持多种存储引擎,如InnoDB、MyISAM、Memory等。
    • 作用:负责数据的存储、检索和事务处理,每个存储引擎都有不同的性能特点和功能。
  4. 文件系统层(File System Layer)
    • 这一层处理数据的物理存储和访问,包括数据文件、索引文件和日志文件的管理。
    • 作用:将数据和索引持久化到磁盘,确保数据的可靠性和持久性。

4、SQL分类

SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库管理系统(RDBMS)的标准化编程语言。它用于定义、查询、操作和管理关系数据库中的数据。SQL允许用户执行各种操作,包括数据的查询、插入、更新和删除,以及数据库模式(表结构)的创建和修改。SQL是关系数据库的核心语言,几乎所有主流的关系型数据库管理系统,如MySQL、Oracle、SQL Server、PostgreSQL、SQLite等,都支持SQL作为其交互语言。

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构
    代表指令:

    create, drop, alter
    
  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作
    代表指令:

    insert,delete,update
    
    • DML中又单独分了一个DQL,数据查询语言,代表指令: select
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
    代表指令:

     grant,revoke,commit
    

    insert,delete,update

    
    -   DML中又单独分了一个DQL,数据查询语言,代表指令: select
    
    
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
    代表指令:

     grant,revoke,commit
    

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

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

相关文章

【错误解决方案】ModuleNotFoundError: No module named ‘zarr‘

1. 错误提示 在python程序,尝试导入一个名为zarr的模块,但Python提示找不到这个模块。 错误提示:ModuleNotFoundError: No module named ‘zarr‘ 2. 解决方案 这可能是因为你尚未安装这个模块或者安装过程中出现了问题。 zarr是一个用于存…

Elasticsearch:从头开始解释带有 Transformer 的生成式 AI 架构

作者:ARIS PAPADOPOULOS 这篇长篇文章解释了生成式人工智能的工作原理,从基础一直到注重直觉的生成式 transformer 架构。 这篇长篇文章解释了生成式人工智能的工作原理,从基础一直到生成式 transformer 架构。 重点是直觉,而不是…

阿里发布AI编码助手:通义灵码,兼容 VS Code、IDEA等主流编程工具

今天是阿里云栖大会的第一天,相信场外的瓜,大家都吃过了。这里就不说了,有兴趣可以看看这里:云栖大会变成相亲现场,最新招婿鄙视链来了... 。 这里主要说说阿里还发布了一款AI编码助手,对于我们开发者来说…

写时复制技术

写时复制(Copy-On-Write,COW)是一种计算机科学中常见的技术,用于在对共享资源进行写操作时,确保并发环境下的数据一致性。 1. 原理 初始共享状态:在共享资源被多个进程或线程共享时,初始时它们…

【串,BF算法】

文章目录 串(String)---- 零个或多个任意字符组成的有限序列串的定义----几个术语 串的类型定义,存储结构及运算串的顺序串结构串的链式串结构串的链式结构串的模式匹配算法----BF算法 串(String)---- 零个或多个任意字…

蓝桥杯刷题

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 👉🏻最大降雨量 原题链接&#xff1…

【设计模式】第24节:行为型模式之“模板方法模式”

一、简介 模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。 模板模式有两大作用:复用和扩展。其中,复用指的是&#…

星环科技Sophon 3.2发布,通过“六易三仓两中心”实现新一代AI平民化

针对目前各行业用户在落地广泛业务需求分析、处理多重数据模态对接、跟进高度定制场景问题解决、运营多源多框架AI模型等方面的问题,星环科技自主研发的一站式智能分析工具平台Sophon在近日的向星力•未来数据技术峰会上推出了3.2版本。 3.2版本的Sophon通过以数据…

硬件测试(二):波形质量

一、信号质量测试 信号在传输的过程中,一般不是标准的矩形波信号,信号质量测试即通过示波器测试单板硬件的数字信号和模拟信号的各项指标,包括电源、时钟、复位、CPU小系统、外部接口(USB、网口、串口)、逻辑芯片(CPLD…

数据库-用户权限管理

创建用户: create user testlocalhost identified by 123456; create user 创建用户的固定开头 testlocalhost test为用户名, localhost:新建用户可以在哪些主机上登录,即使可以使用IP地址,网段主机名都可以 identified by 1…

【C语言初阶】之函数

【C语言初阶】之函数 1. 函数是什么2. C语言中的函数2.1 库函数2.2.1 利用文档学习库函数 2.2 自定义函数 3. 函数参数3.1 实际参数(实参)3.2 形式参数(形参) 4. 函数调用4.1 传值调用4.2 传址调用4.3 练习 5. 函数的嵌套调用和链式访问5.1 嵌套调用5.2 链式访问 6. 函数的声明…

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

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

php实现关键词过滤

1. 构建关键词库 首先,你需要构建一个包含敏感关键词的库。你可以将这些敏感关键词存储在一个数组中,或者将它们存储在数据库中。 $keywords array(敏感词1,敏感词2,敏感词3,// 其他敏感词 ); 2. 实现关键词过滤函数 接下来,你需要实现一个…

对云计算的热爱,王坚院士为何从未减弱,而且更强烈了?

引言:云计算作为基础设施 未来将大放异彩吗? 【阿明观察 | 热点关注】 许久未见王坚院士的演讲,在2023杭州云栖大会,我看到他现场的分享指出,由于GPT的模型出现,计算对科技创新自身在产生革命…

有什么可以自动保存微信收到的图片和视频的方法么

8-1 在一些有外勤工作的公司里,经常会需要在外面工作的同事把工作情况的图片发到指定微信或者指定的微信群里,以记录工作进展等,或者打卡等,对于外勤人员来说,也就发个图片的事,但是对于在公司里收图片的人…

【ECharts】保姆级从空白项目到Echarts地图

前提 请先创建好一个空白的vue项目,准备好一个用于写Echarts地图的空白vue文件 准备好一个空白的vue页面后,只需要跟着我一步一步做 就可以达到我最后展示的效果!!! 资源下载 ECharts npm install echarts地图 jso…

android查漏补缺(8)Binder framework架构和调用方法

1.Binder简介 Binder是android系统中实现进程间通信的主要组件,包括各种AMS,PMS,SMS等服务和APK的通信都是通过binder实现。但是调用过PMS的同学肯定会有疑问,既然是进程通信,怎么没有消息的发送和接收,为什么调用不同进程的服务的…

Git工作原理和常见问题处理方案

博客定位Git工作区域工作区域划分暂存区设计目的 Git基本操作核心操作初始化和配置指令 HEAD指针Git版本回滚指令介绍reset模式reset hard使用场景reset soft使用场景reset mixed使用场景reset使用注意事项checkout使用场景 Git分支管理什么是分支分支应用场景分支相关指令被合…

OS 死锁

资源问题 引起死锁的主要是需要采用互斥访问方法的、不可被抢占的资源 可重用资源和可消耗资源 可重用资源 定义:一种可供用户重复使用多次的资源 性质: 每个可重用资源中的单元,只能分配给一个进程使用,不允许多个进程共享…