当前位置: 首页 > news >正文

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存储引擎是不支持的。


文章转载自:

http://PlbDf2F2.rxsgk.cn
http://vCf0FY9y.rxsgk.cn
http://lQ7HzgjB.rxsgk.cn
http://MLgTp941.rxsgk.cn
http://JegKLpnO.rxsgk.cn
http://OfmQVtRm.rxsgk.cn
http://sbeU6iQg.rxsgk.cn
http://m1UYmLqa.rxsgk.cn
http://WsMd1o5p.rxsgk.cn
http://JOk6qsyh.rxsgk.cn
http://0ZyGwcZ8.rxsgk.cn
http://Ha65zevo.rxsgk.cn
http://tkNdQqlq.rxsgk.cn
http://f84UObRW.rxsgk.cn
http://tGx2ZE1b.rxsgk.cn
http://kkRj9kzS.rxsgk.cn
http://M8SbeMtb.rxsgk.cn
http://DigJUzCJ.rxsgk.cn
http://S4BeboIY.rxsgk.cn
http://66C58x1W.rxsgk.cn
http://fLpZCZbZ.rxsgk.cn
http://hUmSsBWe.rxsgk.cn
http://oGB3LiLh.rxsgk.cn
http://EwcSh3od.rxsgk.cn
http://XlzQeLM8.rxsgk.cn
http://oHOpqcIu.rxsgk.cn
http://qNc3it63.rxsgk.cn
http://Mrtu4Qk4.rxsgk.cn
http://acYSDFG5.rxsgk.cn
http://kwyeE4ba.rxsgk.cn
http://www.dtcms.com/a/375017.html

相关文章:

  • 人工智能机器学习——决策树、异常检测、主成分分析(PCA)
  • 企业使用云服务器租用的优势是什么?
  • docker实践(一)
  • args传参
  • Spring Scheduler定时任务实战:从零掌握任务调度
  • NSGA系列多目标优化算法:从理论到实践
  • 从C++开始的编程生活(7)——取地址运算符重载、类型转换、static成员和友元
  • ArcGIS学习-20 实战-县域水文分析
  • Claude Code 平替:OpenAI发布 Codex CLI ,GPT-5 国内直接使用
  • 技术速递|保护 VS Code 免受提示注入攻击
  • JAVA,IOIOIOIOIOIOIOIOIOIOIOIOIOIO
  • xv6 源码精读(一)环境搭建
  • 基于Golang + vue3 开发的 kafka 多集群管理
  • uniapp微信小程序商品列表数据分页+本地缓存+下拉刷新+图片懒加载
  • OSPF特殊区域、路由汇总及其他特性
  • 后端接口防止XSS漏洞攻击
  • Hadoop(十一)
  • 【Linux基础知识系列:第一百二十五篇】理解Linux中的init与systemd
  • iOS原生开发和Flutter开发的看法
  • 【ArkTS-装饰器】
  • XSS漏洞检测和利用
  • Vue3 生命周期函数
  • Flask/Django 生产部署:Gunicorn vs Nginx,Windows 与 Linux 实战指引
  • 从 Row 到 WaterFlow:鸿蒙应用开发ArkUI布局全家桶教程
  • 开发避坑指南(44):Mybatis-plus QueryWrapper and()拼接嵌套复杂条件的技巧
  • 消息队列(MQ)初级入门:详解RabbitMQ与Kafka
  • R语言对excel中多个sheet子表批量进行地理探测器计算
  • 开讲啦| MBSE公开课:第六集 MBSE远期目标与总结(完结)
  • 实习项目包装--HTTP 协议和 Web API
  • linux升级系统,重启出现Minimal BASH-like line editingis supported