【MySQL】数据库基础

目录

一、数据库的概念

[1.1 数据库是什么](#1.1 数据库是什么)

[1.2 为什么要有数据库](#1.2 为什么要有数据库)

[1.3 主流数据库](#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

完.

相关推荐
DashVector4 小时前
向量检索服务 DashVector产品计费
数据库·数据仓库·人工智能·算法·向量检索
KYGALYX4 小时前
在Linux中备份msyql数据库和表的详细操作
linux·运维·数据库
檀越剑指大厂5 小时前
金仓KReplay:定义数据库平滑迁移新标准
数据库
努力成为一个程序猿.5 小时前
【Flink】FlinkSQL-动态表和持续查询概念
大数据·数据库·flink
毕设十刻6 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
liliangcsdn6 小时前
如何利用约束提示优化LLM在问题转sql的一致性
数据库·sql
熙客7 小时前
Kubernetes是如何保证有状态应用数据安全和快速恢复的
mysql·云原生·容器·kubernetes
Java爱好狂.7 小时前
分布式ID|从源码角度深度解析美团Leaf双Buffer优化方案
java·数据库·分布式·分布式id·es·java面试·java程序员
Elastic 中国社区官方博客7 小时前
通过混合搜索重排序提升多语言嵌入模型的相关性
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
倔强的石头1068 小时前
KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
数据库·mysql·安全·金仓数据库