MySQL数据库的基础
目录
Linux中Ubuntu环境下载安装MySQL
MySQL数据库基础
数据库的概念
主流数据库
基本使用
连接服务器
服务器管理
数据库服务器,数据库,表关系
使用案例
数据逻辑存储
MySQL架构
SQL分类
存储引擎
存储引擎
存储引擎对比
Linux中Ubuntu环境下载安装MySQL
在Linux中的Ubuntu环境下,下载MySQL的教程:
在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式_ubuntu离线安装mysql-CSDN博客
MySQL数据库基础
数据库的概念
数据库是存储和管理数据的系统,它允许用户存储、检索、更新和管理数据。数据库可以是关系型的,也可以是非关系型的,具体取决于数据的组织方式和管理需求。
从定义来看,数据库可以做到的貌似文件也可以做到,那么存储数据用文件就可以了,为什么还要弄个数据库?
器主要原因是,文件保存数据有以下几个缺点:
- 文件的安全性问题
- 文件不利于数据的查询和管理
- 文件不利于存储海量数据
- 文件在程序中控制不方便
为了解决上述问题,于是专家们设计出了更利于管理数据的数据库。它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。
其中数据库的存储介质与文件大差不差
- 磁盘
- 内存
主流数据库
- SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
- SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
- H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
其中,后面的文章也是使用的是MySQL,我们下载的也是MySQL。
基本使用
连接服务器
那么我们就开始首次在Linux下使用数据库吧
连接MySQL服务器的方式如下:
需要注意的是:我们这里是root,不是普通用户。当然如果你下载完MySQL后并且对普通用户授权了,也可以在普通用户下链接MySQL服务器。
解释说明:
- h: 表示你要连接的MySQL服务器所在的主机,127.0.0.1表示本主机。
- -P: 表示你要连接的MySQL服务器所使用的端口号,一般默认是3306。
- -u: 表示用哪一个用户连接MySQL服务器,root表示超级用户。
- -p: 表示该用户对应的密码,密码可以直接跟在-p后面,也可以回车后输入。
如果要连接的是本地的MySQL服务器,那么连接时只需要指明用户名和用户密码即可。如下:
连接到MySQL服务器后,就可以输入各种SQL语句让服务器执行了,当想退出时,只需要输入对应的指令:quit/exit或者\q即可。
服务器管理
如果在上面的下载的文章中已经设置了开机自启动,那么服务器管理的一部分内容就不需要再设置了。
停止服务器
通过systemctl stop mysql
命令或service mysql stop
命令可以停止MySQL服务器。比如:
启动服务器
通过systemctl start mysql
命令或service mysql start
命令可以启动MySQL服务器。比如:
重启服务器
通过systemctl restart mysql
命令或service mysql restart
命令可以重启MySQL服务器。
数据库服务器,数据库,表关系
- 所谓的安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
说明一下:
- 图中的Client对应的就是mysql命令,MySQL对应的就是在远端运营商的mysqld。
- 图中的DB(datebase)表示的是mysqld管理的多个数据库,并且每个DB下可以存放多个表。
其过程就类似网络中,我们在本机上的MySQL输入mysql命令,然后通过网络传播到服务器上的mysqld,然后mysqld通过一些处理,然后对磁盘或内存上的DB进行管理,然后再返回,此时我们就可以看到我们DB经过我们mysql命令处理后的结果。
使用案例
数据存储路径
通过MySQL创建的数据库和各种表结构,最终会以文件的形式存储下来,通过mysql命令查看MySQL的配置文件得知数据文件的存储路径。
SHOW VARIABLES LIKE 'datadir';
可以看到我的数据文件的绝对存储路径为:/var/lib/mysql/
将来MySQL创建的数据库文件都会存储在该目录下,可以看到该目录下有很多MySQL相关的数据文件。如下:
创建数据库
连接好MySQL后,我们开始着手创建第一个数据库,名为helloworld。
执行的mysql命令为:
creat database helloworld;
这时/var/lib/mysql
目录下,就会多出一个名为helloworld的目录:
使用数据库
我们就使用我们刚才创建的数据库,我们输入下面的mysql命令
use helloworld;
使用数据库可以理解成,就是使用cd命令进入到该数据库对应的目录当中。
当然在使用前还可以先通过show databases命令查看当前都有哪些数据库。
创建数据库表
1 建立数据库,本质就是Linux下的一个目录 这个工作是谁做的? mysqld服务帮我们做的
2. 在数据库内建立表,本质就是在Linux下创建对应的文件即可!
3. 数据库本质其实也是文件! | 只不过这些文件并不由程序员直接操作,而是由数据库服务帮我们进行操作
这里通过create命令创建一个简单
show create table student;
的student表。如下:
通过show命令可以查看创建的student表结构。比如:
show create table student;
然后我们在查看我们helloworld目录下就会多一个student.ibd文件,但按道理还会多一个student.frm与db.opt,但我不知道为什么Ubuntu下为什么没有。
表中插入数据
通过desc语句可以查看对应的表结构。
desc student;
通过insert语句可以向表中插入数据。
insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');
查询表中的数据
通过select语句可以查看表中的数据。
select * from student;
数据逻辑存储
数据的逻辑存储
表中的数据是以二维表格的形式进行呈现的,包括行和列。
其中每一行我们称之为是一条记录,而每一列都代表一个属性(属性列)。
MySQL架构
MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。
MySQL的架构设计如下:
MySQL架构主要可分为如下四层(从上到下):
- 连接层:主要完成一些类似连接处理,授权认证及相关的安全方案。
- 服务层:在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断、SQL接口、SQL解析、SQL分析优化、缓存查询的处理以及部分内置函数执行等。各个存储引擎提供的功能都集中在这一层,如存储过程、触发器、试图等。
- 引擎层:由多种可拔插的存储引擎共同组成,真正负责MySQL中数据的存储和提取,每个存储引擎都有自己的优点和缺陷,服务层是通过存储引擎API来与它们交互的。
- 存储层:将数据存储在裸设备的文件系统之上,完成存储引擎的交互。
SQL分类
SQL(Structured Query Language,结构化查询语言)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
- DDL(Data Definition Language)数据定义语言,用来维护存储数据的结构。代表指令:create、drop、alter等。
- DML(Data Manipulation Language)数据操作语言,用来对数据进行操作。代表指令:insert、delete、update等。其中DML中又单独分了一个DQL,数据查询语言,代表指令: select。
- DCL(Data Control Language)数据控制语言,主要负责权限管理和事务。代表指令:grant、revoke、commit。
存储引擎
存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
其中,MySQL的核心就是插件式存储引擎,支持多种存储引擎。
我们也可以通过show指令查看核心的存储引擎。
show engines;
其中MySQL底层默认使用的存储引擎是InnoDB,该存储引擎支持事务、行级锁、外键等。
存储引擎对比
各个存储引擎对比如下:
InnoDB存储引擎是支持事务的,而MyISAM存储引擎是不支持的。