【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

完.

相关推荐
技术宝哥14 分钟前
Redis(2):Redis + Lua为什么可以实现原子性
数据库·redis·lua
学地理的小胖砸1 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
dddaidai1232 小时前
Redis解析
数据库·redis·缓存
数据库幼崽2 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd2 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou3 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
lyrhhhhhhhh3 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
喝醉的小喵5 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多5 小时前
Linux——mysql主从复制与读写分离
数据库·mysql
初次见面我叫泰隆5 小时前
MySQL——1、数据库基础
数据库·adb