【Mysql】初识 Mysql

文章介绍了MySQL的基础知识,包括数据库的概念,为何需要数据库,主流的关系型数据库对比,以及MySQL的基本操作如连接服务器。文章还探讨了数据库的逻辑存储、SQL的分类和MySQL的存储引擎机制,强调了MySQL的插件式存储引擎的灵活性。
摘要由CSDN通过智能技术生成


请添加图片描述

【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;

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值