MySQL基础(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL基础

3.3 使用案例

数据存储路径


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


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


f9884d10e1f548169975ea2a636c239a.png


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


61c197856ab745ddbfb6f445c3985a6c.png


创建数据库


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


ab778a7f18bb4a0b86df058ab9e3bb72.png


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


e9d1891699dc48ea920cb6a9349b64dc.png


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


5e23f3886cb648b885d436da291f8043.png


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


1a044dc827ba4efab2158d1202ef7fbb.png


此时在MySQL的数据存储路径下的helloworld目录也就不存在了


a1eae04d79964c2284d9bc638915d3bd.png


使用数据库


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


1c8d1cd4b981469cbb5183413a5e884f.png


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


创建数据库表


可以通过create语句创建一个简单的student表


3d8906aef3c8408a9213098718fe7f5a.png


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


9e0007734fe14e408ee078d25beeb8f1.png


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


916d29858b794224a05973a7853c9b39.png


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


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


表中插入数据


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


5da58bee43a44614af6c0a8a3ec63a27.png


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


79021f3d89e8469bb5ab683d9d5a069b.png


查询表中的数据


通过select语句可以查看表中的数据


d24fc21de42b4f90a233b8668a84f85c.png


数据的逻辑存储


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


c8e8930fb015447186ffaaee5a1f6f46.png


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


四、MySQL架构

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


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

为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据

fd62153ad33949299c3aa194944c4b44.png


MySQL架构


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


ea2795f3d00442478d9968e3939829c2.png


连接层:主要完成一些类似连接处理,授权认证及相关的安全方案

服务层:在MySQL数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断、SQL接口、SQL解析、SQL分析优化、缓存查询的处理以及部分内置函数执行等。各个存储引擎提供的功能都集中在这一层,如存储过程、触发器、试图等

引擎层:由多种可拔插的存储引擎共同组成,真正负责MySQL中数据的存储和提取,每个存储引擎都有各自的优点和缺陷,服务层是通过存储引擎API来与其交互

存储层:将数据存储在裸设备的文件系统之上,完成存储引擎的交互

MySQL客户端


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


MySQL客户端不仅仅指的是连接MySQL时使用的mysql命令,MySQL客户端还包括语言接口客户端

MySQL给各种语言提供的用于访问数据库的接口,用户通过调用这些接口也可以向MySQL服务器发送SQL语句

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


4139e9fbf43848b7994cf52965d4164e.png


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中的存储引擎是插件式的存储引擎,可以支持多种存储引擎


6.1 查看存储引擎

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


fb11a8ae5da04e04a00dbbb854fef581.png


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


6.2 存储引擎对比

b8aa96ee00a442a1ae978e68403da420.png


注意:InnoDB存储引擎支持事务,而MyISAM存储引擎不支持


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
elasticsearch hanlp 插件安装操作
简要简述elasticsearch hanlp插件的基本安装操作
elasticsearch hanlp 插件安装操作
|
数据库 Android开发 开发者
Android Studio入门之内容共享ContentProvider讲解以及实现共享数据实战(附源码 超详细必看)
Android Studio入门之内容共享ContentProvider讲解以及实现共享数据实战(附源码 超详细必看)
600 0
Squid 安装与配置
本文转载自:https://help.aliyun.com/knowledge_detail/41342.html Squid 介绍 Squid 是一个缓存 Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。
1808 0
|
前端开发 rax Python
Open3d系列 | 2. Open3d实现点云数据增强
Open3d系列 | 2. Open3d实现点云数据增强
3663 1
Open3d系列 | 2. Open3d实现点云数据增强
|
8月前
|
前端开发 算法 API
鸿蒙特效教程08-幸运大转盘抽奖
本教程将带领大家从零开始,一步步实现一个完整的转盘抽奖效果,包括界面布局、Canvas绘制、动画效果和抽奖逻辑等。
274 0
鸿蒙特效教程08-幸运大转盘抽奖
|
8月前
|
人工智能 供应链 监控
千星计划如何解决引流裂变留存复购的难题?
千星计划通过零成本裂变引擎、指数级收益设计、AI风控及私域闭环,解决引流、裂变、留存和复购难题。其核心策略包括3人裂变层级叠加、强制任务机制、清流算法和视频号带货绑定等,大幅降低获客成本(从50元降至10元),提升留存率(85%以上)和复购频次(2.1次/月)。实际案例显示,采用该模型的企业30天内用户LTV从89元提升至217元。
使用ants并发任务,事半功倍
使用ants并发任务,事半功倍
|
编解码 前端开发 JavaScript
前端界的黑科技:掌握这些技术,让你的网站秒变未来感十足!
【10月更文挑战第31天】前端技术日新月异,黑科技层出不穷,让网页更加美观、交互更加丰富。本文通过响应式布局与媒体查询、前端框架与组件化开发等案例,展示这些技术如何让网站充满未来感。响应式布局使网站适应不同设备,前端框架如React、Vue则提高开发效率和代码质量。
220 3
|
SQL 关系型数据库 MySQL
京东面试:什么情况下 mysql RR不能解决幻读? RR隔离mysql如何实现?
老架构师尼恩在其读者交流群中分享了关于MySQL事务隔离级别的深入解析,特别针对RR级隔离如何解决幻读问题进行了详细讨论。文章不仅解释了ACID中的隔离性概念,还列举了四种事务隔离级别(未提交读、提交读、可重复读、串行读)的特点及应用场景。尼恩通过具体的例子和图表,清晰地展示了不同隔离级别下的并发事务问题(脏读、不可重复读、幻读)及其解决方案,特别是RR级隔离下的MVCC机制如何通过快照读和当前读来防止幻读。此外,尼恩还提供了相关面试题的解答技巧和参考资料,帮助读者更好地准备技术面试。更多详细内容和实战案例可在《尼恩Java面试宝典》中找到。
|
机器学习/深度学习 人工智能 物联网
智能家居技术的未来:从自动化到智能化的跨越
本文将探讨智能家居技术的发展趋势,从早期的自动化设备到现代的智能系统,分析其背后的技术驱动因素和市场动态。文章将详细讨论物联网(IoT)、人工智能(AI)、机器学习等技术如何推动智能家居的发展,并展望智能家居未来的发展方向。