文章目录
- 概述
- 数据库
- OLTP
- OLAP
- SQL
- DQL
- DML
- DDL
- DCL
- TCL
- MYSQL
- 连接池
- 管理服务和工具组件
- SQL接口
- 查询解析器
- 查询优化器
- 缓冲组件
- CRUD
- 创建数据库
- 删除数据库
- 选择数据库
- 创建表
- 删除表
- 清空数据表
- 增
- 删
- 改
- 查
- 小结
概述
数据库
**按照数据结构来组织、存储和管理数据的仓库;**是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合;
OLTP
OLTP(online transaction processing)翻译为联机事务处理;主要对数据库增删改查;
OLTP主要用来记录某类业务事件的发生;数据会以增删改的方式在数据库中进行数据的更新处理
操作,要求实时性高、稳定性强、确保数据及时更新成功;
OLAP
OLAP(On-Line Analytical Processing)翻译为联机分析处理;主要对数据库查询;
当数据积累到一定的程度,我们需要对过去发生的事情做一个总结分析时,就需要把过去一段时间
内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,这时候就
是在做OLAP了;
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 :事务回滚;
MYSQL
MySQL由以下几部分组成:
连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件、插
件式存储引擎、物理文件。
连接池
管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求;
网络处理流程:主线程接收连接,接收连接交由连接池处理;
主要处理方式:IO多路复用select + 阻塞的io;
需要理解:MySQL命令处理是并发处理的;
主线程负责接收客户端连接,然后为每个客户端 fd 分配一个连接线程,负责处理该客户端的 sql
命令处理;
管理服务和工具组件
系统管理和控制工具,例如备份恢复、Mysql复制、集群等;
SQL接口
将SQL语句解析生成相应对象;DML,DDL,存储过程,视图,触发器等;
查询解析器
将SQL对象交由解析器验证和解析,并生成语法树;
查询优化器
SQL语句执行前使用查询优化器进行优化;
缓冲组件
是一块内存区域,用来弥补磁盘速度较慢对数据库性能的影响;在数据库进行读取页操作,首先将
从磁盘读到的页存放在缓冲池中,下一次再读相同的页时,首先判断该页是否在缓冲池中,若在缓
冲池命中,直接读取;否则读取磁盘中的页,说明该页被LRU淘汰了;缓冲池中LRU采用最近最少
使用算法来进行管理;
缓冲池缓存的数据类型有:索引页、数据页、以及与存储引擎缓存相关的数据(比如innodb引
擎:undo页、插入缓冲、自适应hash索引、innodb相关锁信息、数据字典信息等);
CRUD
创建数据库
CREATE DATABASE `数据库名` DEFAULT CHARACTER SET utf8;
删除数据库
DROP DATABASE `数据库名`;
选择数据库
USE `数据库名`;
创建表
CREATE TABLE `table_name` (column_name column_type);
CREATE TABLE IF NOT EXISTS `0voice_tbl` (
`id` INT UNSIGNED AUTO_INCREMENT COMMENT '编号',
`course` VARCHAR(100) NOT NULL COMMENT '课程',
`teacher` VARCHAR(40) NOT NULL COMMENT '讲师',
`price` DECIMAL(8,2) NOT NULL COMMENT '价格',
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT = '课程表';
删除表
DROP TABLE `table_name`;
清空数据表
TRUNCATE TABLE `table_name`; -- 截断表 以页为单位(至少有两行数据),有自增索引的话,从初始值开始累加
DELETE TABLE `table_name`; -- 逐行删除,有自增索引的话,从之前值继续累加
增
INSERT INTO `table_name`(`field1`, `field2`, ..., `fieldn`) VALUES (value1,
value2, ..., valuen);
删
DELETE FROM `table_name` [WHERE Clause];
改
UPDATE table_name SET field1=new_value1, field2=new_value2 [,
fieldn=new_valuen]
查
SELECT field1, field2,...fieldN FROM table_name
[WHERE Clause]
小结
数据库这节开始写,好久没写数据库,觉得有点陌生了,现在复习下,顺便记录下。重新学习一遍,每一遍都有不一样的体会,可能就是刻意练习里的心理表征吧。这篇就写到这吧。感兴趣吗,可以一起学习学习。OK,结束,下一篇,继续。