• 【MySQL】数据库基础


    目录

    一、数据库的概念

    1.1 数据库是什么

    1.2 为什么要有数据库

    1.3 主流数据库

    二、在Linux中使用MySQL

    三、MySQL架构

    四、SQL语句分类

    五、存储引擎


    一、数据库的概念

    1.1 数据库是什么

    数据库(Database)一般指在磁盘或内存中按照数据结构来组织、存储和管理数据的计算机软件系统,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

    1.2 为什么要有数据库

    一般的文件确实提供了数据的存储功能,但是并没有提供非常好的数据内容管理能力。这使得程序员如果使用一般的文件来存储数据,那么则需要手动实现各种功能来进行数据管理。

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

    • 安全性无法保证
    • 不便数据查询和管理
    • 在程序中控制不方便
    • 不利于存储海量数据

    为了解决这些问题,数据库出现了。

    数据库是一套对数据内容存储的解决方案,能够更加有效的管理数据。而MySQL作为最流行的关系型数据库,能够为我们提供各种数据存取的服务。

    1.3 主流数据库

    目前市面上主流的数据库有:

    • SQL Server:微软的产品,适合中大型项目
    • Oracle:甲骨文的产品,适合大型项目,业务逻辑复杂
    • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,主要用于电商、SNS、论坛,性能出色
    • PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库,可以免费使用和修改
    • SQLite:一款轻型数据库,是遵循ACID的关系型数据库管理系统,包含在一个相对小的C库中。主要用于嵌入式产品,占用资源非常低
    • H2:用Java开发的嵌入式数据库,可以直接嵌入到应用项目中

    前面提到,MySQL属于关系型数据库,这类数据库中表的结构遵循行列式结构

    NoSQL(Not Only SQL)泛指非关系型数据库,例如redis、MongoDB等,基本都是内存级别的数据库,作为数据存储的中间件使用。

    NoSQL出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。每个数据库都在自己的领域发挥不同的作用,例如redis在数据缓存领域经常被采用。

    现在的主流后端存储服务基本是以MySQL为主,NoSQL为辅搭建的


    二、在Linux中使用MySQL

    对MySQL有了基本的了解后,我们尝试使用MySQL,建立数据库和表结构,再插入一些数据

    (1)查看当前服务器的数据库

    登入MySQL后输入 show databases; 即可查看当前服务器有哪些数据库

    这些数据库都存放在配置文件的默认保存路径当中,输入vim /etc/my.cnf 即可打开配置文件

    进入该路径,查看当前路径下的所有文件

    (2)建立数据库

    输入 create database 库名; 即可创建一个数据库

    再次查看存储目录中的文件:

    可以看到这个就是我们刚刚创建出来的数据库

    所以这些数据库本质就是Linux下的一个目录

    (3)建立表结构

    要想在一个数据库中建立表结构,首先得进入这个数据库

    输入 use 库名; 进入该数据库

    输入 create table 表名(列名1 元素类型, 列名2 元素类型......);  即可创建一张指定结构的数据库表

    然后输入 show tables; 即可查询当前数据库中有哪些表结构 

    例如:

    观察之前Linux下的目录,可以发现:

    所以在数据库中建表,本质就是在Linux下创建对应的文件

    数据库本质都是文件,只不过这些文件不由程序员直接操作,而是由数据库服务帮我们进行操作

    (4)向表中插入数据

    输入 insert into 表名(列名1,列名2...) values(数据1,数据2...); 即可向表中插入数据

    例如:

    输入 select * from 表名; 即可查看表中的所有数据

    例如:


    三、MySQL架构

    MySQL是一个开源的可移植数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac、Solaris。

    虽然各种系统在底层实现方面各有不同,但是MySQL基本能保证在各个平台上的物理体系结构的一致性。其架构示意图如下:

    Client Connectors:MySQL的客户端,我们目前用的是命令行式的二进制程序,后面还可以用C++语言直接连接MySQL或者用MySQL的图形化界面来访问

    MySQL SERVER的主要功能分为三层:

    第一层(链接池),帮助我们进行链接管理和鉴别用户合法身份

    中间层可以对我们下达的SQL指令进行语法分析、词法分析和优化,并按照协议传达给下一层

    第三层对应一个个存储引擎,作用有点像计算机中的驱动。从上层接收处理后的语句,然后访问指定的数据库、文件和表结构,对数据进行增删查改

    因为数据有种类的差别,有文档型的、二进制型的等等,针对不同种类的数据需要不同的存储方案,所以需要多种存储引擎

    例如MyISAM比较适合对大文本进行读取,InnoDB有很丰富的索引支持,方便我们进行快速的搜索查找。这两个也是最常用的两个引擎

    最底下依赖的就是对应的文件系统,把数据以二进制的形式存储到特定的目录下,构建特定的普通文件

    所以MySQL是处于操作系统提供的文件系统之上的一套存储解决方案。


    四、SQL语句分类

    用户在数据库上执行的大部分工作都由 SQL 语句完成,例如我们之前建库、建表、插入数据时使用的SQL语句

    SQL语句主要分为五类:

    • DDL(Data Definition Language):数据定义语言,用来维护存储数据的结构,例如create,drop,alter
    • DML(Data Manipulation Language):数据操纵语言,用来对数据进行操作,例如insert,delete,update
    • DQL(Data Query Language):数据查询语言,例如select
    • DCL(Data Control Language):数据控制语言,主要负责权限管理和事务,例如grant,revoke,commit,rollback


    五、存储引擎

    存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引以及如何更新、查询数据的实现方法

    MySQL的核心就是插件式存储引擎,这些存储引擎位于最底层,负责与操作系统进行交互。

    要查看有哪些存储引擎,可以输入 show engines;

    或者 show engines \G

    完.

  • 相关阅读:
    C. Ntarsis‘ Set
    嵌入式linux系统中面试过程经验分享
    直播预告 | 如何从 0 到 1 打造敏捷团队?
    Citespace、vosviewer、R语言的文献计量学 、SCI
    C/C++学习网址
    vitepress启动报错: getaddrinfo ENOTFOUND localhost
    Senparc.Weixin SDK 微信平台开发教程(二十四):顺应 AIGC 应用,自动“续航”回复超长文本消息
    HTML5 WebSocket:实时通信的新篇章
    【Redis入门笔记 08】主从复制 & 集群
    Go开发微信小程序SDK推荐以及简单示例
  • 原文地址:https://blog.csdn.net/Eristic0618/article/details/139717682