【MySQL数据库】:MySQL数据库基础

安装数据库

MySQL 在 Centos 7环境安装

说明

  • 安装与卸载中,用户全部切换成为root,⼀旦安装,普通用户能使⽤的
  • 初期练习,mysql 不进行用户管理,全部使用 root 进行,尽快适应 mysql 语句,后⾯学了用户管理,再考虑新建普通用户 

MySQL 在 Centos 7环境安装过程

卸载不要的环境

判断mysql是否卸载成功有如下两个判断

  1. mysql 的服务已经停止了
  2. rpm 安装包已经卸载了
ps ajx |grep mysql 
systemctl stop mysqld  # 关闭mysqld

// 查看并卸载安装包
rpm -qa | grep mysql
rpm -qa | grep mysql | xargs yum -y remove

配置mysql 官方yum源

前往官网:Index of /232905 

进入官网我们发现都是有许许多多的安装包,那么我们应该去安装哪一个呢?我们发现此时安装包的信息由于网页的原因太过于简短了,我们可以单机右键点击查看网页源代码即可查看详细的!!

详细的安装包如下: 

 我们尽量的去安装mysql 5.7版本的,由于我的操作系统是centos7.6,所以我选择如下:

 让后我们使用 rz 命令将下载好的安装包从windows操作系统下载到Linux操作系统

 将 mysql57-community-release-el7.rpm 添加到 yum当中去

开始安装

root用户下
yum install -y mysql-community-server

 我们在安装的过程中,可能会遇到各种各样的问题,如下就遇到了安装遇到秘钥过期的问题!我们可以使用 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 来解决问题!!

 我们如何知道我们的 mysql 安装成功了呢?我们可以使用如下三个方法:

  1. 检查my.cnf 文件是否存在
  2. 检查 mysqld 是否存在
  3. 检查 mysql 是否存在

我们可以使用 systemctl start mysqld 命令来启动mysql

但是我们发现一个问题我们无法去登入 mysql,我们并不知道密码

 我们可以去打开mysql配置文件(my.cnf),并在配置⽂件(my.cnf)的最后一行添加 skip-grant-tables ,可以跳过密码登入!!但是我们重新登入发现还是不可以,因为我们是还未重新启动mysql服务

我们使用 systemctl restart mysqld 重新启动后,再次登入发现可以成功登入!!!

 如果我们想更加了解用户登入可以参考:【MySQL数据据库】:MySQL用户管理_mysql user数据库-CSDN博客

数据库的概念

数据库是按照一定的数据结构来组织、存储和管理数据的仓库。

虽然单纯的使用文件也可以存储数据,但会存在如下缺点:

  • 安全性问题:数据误操作后无法进行回滚。
  • 不利于数据的查询和管理:没有将存储的数据以某种数据结构组织起来。
  • 控制不方便:数据的控制需要用户自己来完成。
  • 不利于存储海量数据:数据量越大用户操控数据的成本越高。

为了解决上述问题,于是专家们设计出了更利于管理数据的数据库。

数据库是分为数据库服务器数据库客户端的,以MySQL数据库为例,我们使用MySQL数据库时会先通过mtsql命令 连接MySQL服务器。如下:

  • mysql 是数据库服务的客户端!!!
  • mysqld 它是数据库服务的服务端!!!

 这里我们使用的mysql命令就是数据库服务的客户端,而数据库服务的服务端可以通过 ps命令 进行查看。如下:

 这里查看到的 mysqld 就是数据库服务的服务端,我们使用mysql命令实际就是在连接mysqld服务。通过netstat命令可以看到,数据库服务的服务端底层采用的是TCP6协议,目前服务器处于监听状态。如下:

也就是说,数据库服务的服务端本质是一个网络服务器,我们使用mysql命令连接数据库服务的服务端时,本质就是MySQL客户端在向数据库服务的服务端发起连接请求,连接建立成功后MySQL客户端就会将用户输入的SQL语句发送给数据库服务的服务端,之后数据库服务的服务端就会根据SQL语句对数据进行对应的操作。


主流数据库

  • MySQL:广泛应用的开源关系型数据库,具有易用性和高性能。
  • Oracle:功能强大的商业数据库,在企业级应用中占据重要地位。
  • SQL Server:微软的关系型数据库,与 Windows 系统紧密结合。
  • PostgreSQL:高度可扩展的开源数据库,支持丰富的数据类型和复杂查询。
  • MongoDB:非关系型数据库(文档型数据库),适用于处理灵活的数据结构。
  • Redis:高性能的键值对存储数据库,常用于缓存等场景。

数据库的使用

 连接服务器

  • -h: 表示你要连接的MySQL服务器所在的主机,127.0.0.1表示本主机。
  • -P: 表示你要连接的MySQL服务器所对应的端口号,一般默认是3306。
  • -u: 表示用哪一个用户连接MySQL服务器,root表示超级用户。
  • -p: 表示该用户对应的密码,密码可以直接跟在-p后面,也可以回车后输入。

 如果要连接的是本地的MySQL服务器,那么连接时只需要指明用户名和用户密码即可。

连接到MySQL服务器后,就可以输入各种SQL语句让服务器执行了,当要退出mysql时直接输入quitexit\q即可。


服务器管理

关闭数据库服务的服务端

通过systemctl stop mysqld命令或service mysqld stop命令可以停止MySQL服务器。

启动数据库服务的服务端

通过systemctl start mysqld命令或service mysqld start命令可以启动MySQL服务器。

 重启数据库服务的服务端

通过systemctl restart mysqld命令或service mysqld restart命令可以重启MySQL服务器。 

数据库服务器,数据库,表关系 

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。

数据库服务器、数据库和表的关系如下:

  • 图中的Client对应的就是mysql命令,MySQL对应的就是mysqld服务。
  • DB(database)表示的是mysqld管理的多个数据库,而每一个DB下会包含多张表。

数据存储路径

通过MySQL创建的数据库和各种表结构,最终会以文件的形式存储下来,通过查看MySQL的配置文件中的datadir可以得知数据文件的存储路径。

比如我的MySQL配置文件的绝对路径为/etc/my.cnf,配置文件中datadir对应的值为/var/lib/mysql

将来MySQL创建的数据库文件都会存储在该目录下,可以看到该目录下有很多MySQL相关的数据文件。

 

创建数据库 

连接MySQL服务器后,通过create语句创建一个名为helloworld的数据库!!!

 这时/var/lib/mysql目录下,就会多出一个名为helloworld的目录。

 目前helloworld目录下只有一个名为的db.opt的文件,该文件中指明了当前数据库的默认字符编码和字符校验规则。

删除数据库 

我们创建数据库时,本质就是在MySQL的数据存储路径下新建了一个目录,而当我们将这个数据库删除后,这个目录其实也就不存在了。

此时在MySQL的数据存储路径下的helloworld目录也就不存在了,因此删除数据库本质就是删除数据存储路径下对应的目录。

 

使用数据库

使用数据库之前,可以先通过show语句查看当前都有哪些数据库,然后再通过use语句使用指定的数据库。

使用数据库可以理解成,就是使用cd命令进入到该数据库对应的目录当中。

创建数据库表

我们通过create语句创建一个简单的student表。

通过show语句可以查看创建的student表结构。

由于student表采用的存储引擎是InnoDB,因此在MySQL的数据存储路径下的helloworld目录下,就会多出两个文件,分别是student.frm和student.ibd。

 

其中student.frm是表结构文件,student.ibd是表数据和索引的文件。 

如果说创建数据库的本质是在数据存储路径下新建一个目录的话,那么创建表本质实际就是在特定的数据库目录下新建若干个文件(InnoDB存储引擎对应的是两个,MyISAM存储引擎对应的是三个),因此在创建表之前一定要先选择一个数据库。 

通过desc语句可以查看对应的表结构!!!

通过insert语句可以向表中插入数据!!!

使用 select * from student;   查询表中的数据

数据逻辑存储 

表中的数据是以二维表格的形式进行呈现的,包括行和列。

其中每一行我们称之为是一条记录,而每一列都代表一个属性(属性列)。

 MySQL架构

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。

MySQL架构主要可分为如下四层:

  1. 连接层:主要完成一些类似连接处理,授权认证及相关的安全方案。
  2. 服务层:在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断、SQL接口、SQL解析、SQL分析优化、缓存查询的处理以及部分内置函数执行等。各个存储引擎提供的功能都集中在这一层,如存储过程、触发器、试图等。
  3. 引擎层:由多种可拔插的存储引擎共同组成,真正负责MySQL中数据的存储和提取,每个存储引擎都有自己的优点和缺陷,服务层是通过存储引擎API来与它们交互的。
  4. 存储层:将数据存储在裸设备的文件系统之上,完成存储引擎的交互。

 MySQL客户端

数据库服务的服务端会收到MySQL客户端发来的SQL语句,并根据SQL语句执行对应的操作。

  • 这里的MySQL客户端不仅仅指的是连接MySQL时使用的mysql命令,MySQL客户端还包括语言接口客户端。
  • MySQL给各种语言提供的用于访问数据库的接口,用户通过调用这些接口也可以向MySQL数据库服务的服务端发送SQL语句。

mysql命令本质是一个可执行程序,通过file命令可以看到该可执行程序是采用动态链接的方式生成的,通过ldd命令可以看到该可执行程序依赖的C/C++库文件。

mysql命令本身就是C/C++编写的,因此在编写mysql程序时,一定需要调用MySQL提供给C/C++的语言接口客户端。当然,MySQL不仅仅提供了C/C++对应的语言接口,像Python、Java、PHP等都有对应的MySQL接口。

SQL分类

SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL语句可分为如下三类:

  • DDL(Data Definition Language)数据定义语言,用来维护存储数据的结构。比如create语句、drop语句、alter语句等。
  • DML(Data Manipulation Language)数据操作语言,用来对数据进行操作。比如insert语句、delete语句、update语句等。
  • DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。比如grant语句、revoke语句、commit语句。

说明一下: DML中又单独分了一个DQL(Data Query Language)数据查询语言,比如select语句、from语句、where语句等。

存储引擎

存储引擎就是数据库管理系统如何存储数据、如何为存储的数据建立索引、如何更新数据、如何查询数据等技术的实现方法,MySQL中的存储引擎是插件式的存储引擎,它可以支持多种存储引擎。

 通过show语句可以查看MySQL支持的存储引擎。

其中MySQL底层默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等。 

InnoDB存储引擎是支持事务的,而MyISAM存储引擎是不支持的。 

  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-元清-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值