SQL
定义
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数
据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL是关系数据
库系统的标准语言。
关系型数据库包括:MySQL, SQL Server, Oracle, Sybase, postgreSQL 以及 MS Access等;
SQL命令包括:DQL、DML、DDL、DCL以及TCL;
DQL
Data Query Language - 数据查询语言;
select :从一个或者多个表中检索特定的记录;
DML
Data Manipulate Language - 数据操作语言;
insert :插入记录;
update :更新记录;
delete :删除记录;DDL
Data Define Languge - 数据定义语言;
create :创建一个新的表、表的视图、或者在数据库中的对象;
alter :修改现有的数据库对象,例如修改表的属性或者字段;
drop :删除表、数据库对象或者视图;
DCL
Data Control Language - 数据控制语言;
grant :授予用户权限;
revoke :收回用户权限;
TCL
Transaction Control Language - 事务控制语言;
commit :事务提交;
rollback :事务回滚;
数据库基本术语
数据库:数据库是一些关联表的集合;
数据表:表是数据的矩阵;
列:一列包含相同类型的数据;
行:或者称为记录是一组相关的数据;
主键:主键是唯一的;一个数据表只能包含一个主键;
外键:外键用来关联两个表,来保证参照完整性;MyISAM存储引擎本身并不支持外键,只起到注
释作用;而innodb完整支持外键;
复合键:或称组合键;将多个列作为一个索引键;
索引:用于快速访问数据表的数据;索引是对表中的一列或者多列的值进行排序的一种结构;
MYSQL体系结构
MySQL由以下几部分组成:
连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件、插
件式存储引擎、物理文件。
连接者
不同语言的代码程序和mysql的交互(SQL交互);
连接池
管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求;
网络处理流程:主线程接收连接,接收连接交由连接池处理;
主要处理方式:IO多路复用select + 阻塞的io;
需要理解:MySQL命令处理是并发处理的;
如下图
- select(,NULL) 一直阻塞,来监听lfd (为啥用阻塞的,因为连接数不多,memcached也是这样实现的)
管理服务和工具组件
系统管理和控制工具,例如备份恢复、Mysql复制、集群等;
SQL接口
将SQL语句解析生成相应对象;DML,DDL,存储过程,视图,触发器等;
查询解析器
将SQL对象交由解析器验证和解析,并生成语法树;
查询优化器
SQL语句执行前使用查询优化器进行优化;
缓冲组件
是一块内存区域,用来弥补磁盘速度较慢对数据库性能的影响;在数据库进行读取页操作,首先将
从磁盘读到的页存放在缓冲池中,下一次再读相同的页时,首先判断该页是否在缓冲池中,若在缓
冲池命中,直接读取;否则读取磁盘中的页,说明该页被LRU淘汰了;缓冲池中LRU采用最近最少
使用算法来进行管理;
缓冲池缓存的数据类型有:索引页、数据页、以及与存储引擎缓存相关的数据(比如innodb引
擎:undo页、插入缓冲、自适应hash索引、innodb相关锁信息、数据字典信息等);
MYSQL 8.0后就没缓存了
后续的学习都以MySQL 5.7版本(因为这个版本稳定)
存储引擎我们首选InnoDB,其性能最好
文件系统
存储索引数据,数据表数据,事务相关数据等等。