【MySQL】数据库基础

发布于:2024-06-16 ⋅ 阅读:(18) ⋅ 点赞:(0)

目录

一、数据库的概念

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

完.


网站公告

今日签到

点亮在社区的每一天
去签到