【Mysql】初识 Mysql

news2025/1/20 1:00:08

文章目录

  • 【Mysql】初识 Mysql
      • 数据库初识
      • 主流关系型数据库
      • 理解数据库
      • mysql基本操作
        • 连接服务器
        • 理解服务器,数据库,表关系
        • 小案例
        • 数据逻辑存储
      • mysql架构
      • sql分类
      • 存储引擎

请添加图片描述

【Mysql】初识 Mysql

数据库初识

数据库概念

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合

我们都知道,数据存储其实只需要使用文件就够了,为什么还要有数据库呢?

因为文件保存数据有以下缺点:

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

理解

程序员直接管理文件其实是很不方便的,例如:对文件进行操作时需要使用(fopen,fclose…接口)去访问磁盘中的文件,而后对其进行操作;再者我们查询文件的相关属性时,也是很麻烦的,我们需要知道文件的信息(目录路径);还有就是删除文件时,需要考虑如何处理文件;总言之,直接让程序员对文件进行管理,是很不舒服的,就是数据库就诞生了;

所以其实数据库就是大佬创造出来对文件进行管理的软件(工具);

初理解

有了数据库之后,数据库就充当了程序员管理文件的中间层(专门负责管理文件),用户可以直接使用一些数据库指令(sql语句),向数据库发送相关请求,而后数据库将我们的指令分析转化之后,帮我们去对磁盘中的文件进行操作;

初理解数据库:

  • 数据库也是需要自己去访问文件的
  • 数据库也是使用文件的方式进行数据保存的
  • 数据库中肯定存在能直接帮我们修改文件的’东西‘,实际上就是数据库中直接和文件进行打交道的存储引擎

主流关系型数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。

  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。

  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。

  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。

  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

理解数据库

简单剖析数据库

数据库实际上还分为:其中就是服务端+数据库库和表结构就是我们常说的数据库

  • 数据库客户端 – 用户通过在客户端输入sql语句等,数据库指令,给数据库服务端发送操作请求
  • 数据库服务端 --接受客户端发送过来的指令,对指令进行词法分析语法分析工作,最后落实到对数据库中的某个表进行操作
  • 数据库及其表结构

几乎所有的数据库都可以这么去理解;其中mysql就是一个具体的代表

mysql

  • 客户端:mysql --接受用户的请求
  • 服务器端:mysqld --客户端发送请求到服务器端,而后服务端提供对应的服务
  • 数据库库+表结构 (磁盘中的sql文件)

client-server模式

在Linux系统下理解mysql

我们知道mysql肯定是封装了对应文件操作的系统调用接口,而后提供对应的用户接口,让用户操作文件,所以mysql实际上就属于封装了系统调用接口的用户接口层

在网络中理解mysql

mysql实际上也是个网络服务,而mysql其中并未涉及到网络层或者其他层的协议,所以说实际上mysql就是应用层的服务,有对应的协议

所以我们在自己机器上安装mysql的实质是,在我们的机器安装了mysql的客户端和服务端

启动mysql服务的本质就是将mysql服务器启动(ip是当前机器的ip,端口号默认为3306),而我们本地进行连接mysql数据库的本质上,也是我们机器上的客户端通过(ip+端口号的方式)连接的服务器端(127.0.0.1 3306)

验证:

注:当前使用的云服务器版本是centos7.9.2009

指令: 查看当前服务器版本

cat /etc/redhat-release


mysql基本操作

连接服务器

指令:

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

本地连接也可使用:

mysql -uroot  -p 
  • -h 所需连接的mysqld的ip, 默认为127.0.0.1,本地环回,默认连接本地
  • -P 默认为3306,服务端口号

理解服务器,数据库,表关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,

  • 一般开发人员会针对每一个应用创建一个数据库。

  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。数据库服务器、数据库和表的关系如下:

用户端向服务端下达sql语句,mysql服务端对该语句进行词法分析,语法分析…等工作,然后对应到对数据库中的表进行操作

小案例

  • 创建数据库

    create database hellomysql
    
  • 使用数据库

    use hellomysql
    
  • 创建数据库表

    create table  if not exists 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架构

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

:图中caches在新版的mysql已经不存在了

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

存储引擎

存储引擎:

数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法

MySQL的核心就是插件式存储引擎,支持多种存储引擎

理解插件式存储引擎

插件式存储引擎可以理解为c++中的多态,用c++实现就是,上层调用存储引擎的方法是使用统一的父类对象,而不同的存储引擎就是继承了父类对象之后,实现了不同功能的子类对象;即使用不同的存储引擎时,只需要将子类赋给父类对象指针或引用即可,即父类适配于所有子类存储引擎;

可以类似于这样去理解插件式存储引擎;

  • 查看存储引擎
show engines;

运行结果

插件式存储引擎可以理解为c++中的多态,用c++实现就是,上层调用存储引擎的方法是使用统一的父类对象,而不同的存储引擎就是继承了父类对象之后,实现了不同功能的子类对象;即使用不同的存储引擎时,只需要将子类赋给父类对象指针或引用即可,即父类适配于所有子类存储引擎;

可以类似于这样去理解插件式存储引擎;

  • 查看存储引擎
show engines;

运行结果

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

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

相关文章

v-model使用及原理

关于v-model,vue2与vue3用法不一致,本文学习采用了vue3官网文档。与vue2区别写在本文末尾。一、为什么使用v-model? v-model指令可以在表单input、textarea以及select元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素…

马哈鱼SQLFLow直接数据流介绍

直接数据流介绍 本文将介绍一些生成直接数据流的SQL元素,这些元素是生产数据流的主要原型。 1、Select 示例语句: SELECT a.empName "eName" FROM scott.emp a Where sal > 1000目标列“eName”的数据来自scott.emp.empName列&#xff…

【安卓源码】安卓app应用进程启动原理

目录 0. 应用app 调用 startActivity 1. AMS 调用 startActivity 方法 2. zygote socket 通信,通知 zygote 创建应用进程 1-1) 去fork 一个子进程 Zygote.forkAndSpecialize 1-2)执行子进程方法 handleChildProc 1-3)执行父进程方法 ha…

用户管理 ---MySQL总结(七)

用户管理 对于MySQL的用户也是需要进行管理,这里的东西类似与Linux的多用户管理,基本相同 用户属性 MySQL的用户都是储存在数据库mysql的user之中。 这里使用desc table_name;查看user表的属性。 desc user;//下面的就是输出的结果host:登陆限制 user…

chatgpt赋能Python-python_ai_app

用Python编写AI应用程序 Python是目前最受欢迎的编程语言之一,被广泛用于各种应用程序的开发。其中,人工智能(AI)应用程序成为Python编程人员最感兴趣和热门的领域之一。这篇文章将重点介绍用Python编写AI应用程序的好处&#xf…

从零开始Vue3+Element Plus后台管理系统(16)——组合式函数hook二次封装el-table

终于写到组合式函数了,它类似vue2的mixin,但优于mixin,用好了可以事半功倍。 在 Vue 应用的概念中,“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。 官方文档:https://cn.vu…

chatgpt赋能Python-python_chan

Python的Channel模块:优化你的并发控制 Python是一门优秀的编程语言,在众多优秀的模块中,Channel模块是一个备受喜爱的模块。它是Python并发控制的建议之一,可以被用来在多个协程之间传递和传输消息。这个模块不仅仅是Python 3.5…

chatgpt赋能Python-python_cal

Python编程的神器——Cal 随着人工智能、机器学习等技术的发展,Python语言成为了最热门的编程语言之一。Python可以帮助程序员快速实现自己的想法,让程序的编写变得更加简单和容易。在Python中,有许多高效好用的工具和库,而其中最…

chatgpt赋能Python-python_chi2

Python中的Chi-Squared测试:一种用于统计分析的重要方法 数据分析是当今商业和科学中最重要的工具之一,它可以帮助人们了解他们的业务和科学领域。其中数据分析的技术以Python为代表的编程语言越来越受到欢迎,这些方法可以用于分类、回归、聚…

《数据可视化》课程期末项目_地理交通数据可视化

2022年上海疫情爆发期间交通数据可视化分析 《数据可视化》课程期末项目报告-选题:地理数据可视化 GitHub源码地址(如果有用点个 star 吧~谢谢!) 文章目录 1.0 项目简介2.0 数据简介2.1 航线数据2.2 公交路线数据2.1 项目流程 3.0 数据处理3.1 航线数据…

【面试题】如何实现vue虚拟列表,纵享丝滑

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 前言 最近在工作中遇到了一个列表的需求,因为做的是C端,所以对性能…

什么是接口测试?接口测试流程有哪些?我来告诉你

目录 首先,什么是接口呢? 一、常见接口: 二、前端和后端: 三、什么是接口测试: 四、接口组成 五、为什么要做接口测试: 六、接口测试怎么测: 七、用什么工具测 八. 接口测试持续集成 九…

chatgpt赋能Python-python_canbus

Python Canbus:如何使用Python编程语言控制Canbus? 介绍 Canbus被广泛地应用于现代汽车中,是一个用于通讯的协议,允许汽车的各个部分进行通信。为了控制Canbus,很多工程师都使用Python编程语言,因为它简单…

爬虫练习-12306自动购票升级版

文章目录 前言代码更新 前言 hello兄弟们,偷懒归来了。别问为啥这么久没更,问就是失踪了 最近一直在学习Django以及爬虫进阶之类的知识,加上快期末了,一直没有想起来自己还有一个账号没有更新,sorry啦 言归正传&…

SpringBoot - Jackson详解

写在前面 JSON 是目前主流的前后端数据传输方式。在 Spring Boot 项目中,只要添加了 WEB依赖(spring-boot-starter-web),就可以很方便地实现 JSON 转换。WEB 依赖默认加入了 jackson-databind 作为 JSON 处理器,我们不…

算法小试炼(差不多相当于重新过一遍ACWING,为了夏令营做点准备)

1.最长不重复子串 这个题目的具体意思就不用我说了,我这里给出两种算法 1)暴力搜索 只要机器够快,没有什么是暴搜解决不了的^ ^(开玩笑 很简单,我们只需要遍历长度,跟左边界就好了,这个应该没…

测试必知必会的Mock数据方法

Mock数据的含义 那么Mock数据是什么意思呢 首先Mock这个英文单词有模拟的意思,模拟数据通俗的理解就是构造假数据,即Mock数据就是通过构造假数据来达到测试的目的,它广泛运用于功能测试、接口测试、单元测试 在功能测试中,可以…

离散数学 | 图论 | 欧拉图 | 哈密顿图 | 割点 | 桥(欧拉图和哈密顿图有没有割点和桥?)

本文主要解决以下几个问题: 1.欧拉图能不能有割点,能不能有桥? 2.哈密顿图能不能有割点,能不能有桥? 首先我们要明白几个定义 割点的定义就是在一个图G中,它本来是连通的,去掉一个点v以后这个…

【firewalld防火墙】

目录 一、firewalld概述二、firewalld 与 iptables 的区别1、firewalld 区域的概念 三、firewalld防火墙默认的9个区域四、Firewalld 网络区域1、区域介绍2、firewalld数据处理流程 五、firewalld防火墙的配置方法1、使用firewall-cmd 命令行工具。2、使用firewall-config 图形…

【计算机网络基础】章节测试4 网络层

R1与R2是一个自治系统中采用RIP路由协议的两个相邻路由器,R1的路由表如图(a)所示。如果R1收到R2发送的如图(b)所示的(V,D)报文,更新之后的R1的4个路由表项的距离从上到下依次为0、4、4、2,那么图 (b)中a、b、c、d 可能的数据一个是( C )。 A. 1、2、2、1 B. 2、2、3、1…