当前位置: 首页 > 后端技术 > PHP

MySql基础知识整理笔记(一)

时间:2023-03-29 14:19:55 PHP

前言工作以来Mysql使用频率很高,越来越觉得自己的MySql基础知识很差,所以重新学习Mysql,由顺便说一句,文中涉及的内容和资料均来自极客时间《SQL必知必会》专栏。对同款鞋感兴趣的可以自行购买,推广链接我就不贴了~基本概念定义按照SQL语言可以分为4个部分:1.DDL(DataDefinitionLanguage),用于定义数据库对象、数据表和列。使用DDL创建、删除、修改数据库和表的结构;2、DML(DatabaseManipulationLanguage),一种数据库操作语言,对数据库中的相关数据进行操作,如对表中的数据进行增删改查;3.DCL(DataControlLanguage),数据控制语言,用它来定义访问权限和安全等级;4、DQL(DataQueryLanguage),数据查询语言,用它来查询数据;Mysql架构Mysql是Client/Server架构,系统架构图如下:它由以下部分组成:ConnectionPool,EnterpriseManagementServices&Utilities,SQLInterface,Parser,Optimizer,Cache&Buffer)PluggableStorageEngines(PluggableStorageEngines)物理文件(FileSystem,Files&Logs)存储引擎InnoDB存储引擎:Mysql5.5版本后默认的存储引擎,优点是支持事务,行级锁,外键约束,支持崩溃后安全恢复;MyISAM存储引擎:不支持事务和外键,支持全文索引(但只对英文有效),特点是查询速度快;内存存储引擎:数据放在内存中(类似memcache)以获得更快的响应速度,但如果崩溃会丢失数据;NDB存储引擎:主要用于MysqlCluster分布式集群;归档存储引擎:具有良好的压缩机制,用于文件归档,写入时会进行压缩;sql语句执行顺序SELECTDISTINCTplayer_id,player_name,count(*)asnum#Order5FROMplayerJOINteamONplayer.team_id=team.team_id#Order1WHEREheight>1.80#Order2GROUPBYplayer.team_id#Order3HAVINGnum>2#Order4ORDERBYnumDESC#order6LIMIT2#order7completeorder是:1、FROM子句组装数据(包括JOIN)2、WHERE子句进行条件过滤3、GROUPBY分组4、使用聚合函数进行计算;5.具有过滤器分组;6.计算所有表达式;7.选择字段;8.ORDERBY排序9.LIMIT过滤Sql语句执行流程MySQL中的流程是:SQL语句→缓存查询→解析器→优化器→执行器结果直接返回给客户端;如果没有,它将进入解析器阶段。需要注意的是,由于查询缓存往往效率不高,MySQL8.0后该功能被废弃。Parser:在parser中对SQL语句进行语法分析和语义分析。优化器:在优化器中,会决定SQL语句的执行路径,比如是基于全表查找还是基于索引查找。Executor:执行前需要判断用户是否有权限,如果有则执行SQL查询并返回结果。MySQL8.0以下版本,如果设置了查询缓存,此时会缓存查询结果。