数据库之MySQL
文章平均质量分 91
深入浅出,层层递进,逐步学习Mysql数据库的使用
边学边卷
不想开摆,只能开卷
展开
-
MySQL练习题
MySQL的课后练习题一、基本的SELECT语句1. 查询员工12个月工资总和,并起别名为ANNUAL SALARY2. 查询employees表中去除重复的job_Id以后的数据3. 查询工资大于12000的员工姓名和工资4. 查询员工号为176的员工的姓名和部门号5. 显示表departments的结构并查询全部数据二、运算符1. 查询工资不在5000到12000的员工姓名和工资2. 查询在20或50号部门工作的员工姓名和部门号3. 查询公司中没有管理者的姓名员工及job_Id4. 查询公司中有奖金的员原创 2022-05-18 11:47:04 · 2577 阅读 · 2 评论 -
MySQL的基础指令DML指令一
MySQL基础回顾之DQL一DQL(Data Query Language)-数据查询语句一1. select基本语句1.1 基础的写法:若有多个字段则用`,`隔开1.2 进阶:用`*`代表所有字段1.3 进阶:为列起一个别名1.4 进阶:去除重复数据1.5 进阶:空值(null)参与运算1.6 进阶:着重号``1.7 进阶:查询常数2.过滤数据-where关键字2.1 基础的写法2.2 运算符的介绍2.2.1 算术运算2.2.2 比较运算符2.2.3 逻辑运算符2.2.4 位运算符(暂时略过,感觉用的很少原创 2022-04-29 17:12:45 · 1444 阅读 · 0 评论 -
MySQL的基础指令DML指令二
MySQL基础回顾值DQL二-MySQL中的函数与其他关键字一、函数1. 单行函数1.1 特点1.2 常用函数1.2.1 常用数值函数1.2.2 常用字符串函数1.2.3 常用日期和时间函数1.2.4 常用流程控制函数1.2.5 常用加解密函数1.2.4 常用MySQL信息函数2. 聚合函数2.1 特点2.2 常用函数二、数据分组-GROUP BY关键字的使用1. 需求一2. 需求二3. 细节处理三、分组后筛选数据-HAVING关键字的使用1. 需求一2.需求二3.细节处理一、函数函数在计算机语言的使原创 2022-04-29 20:38:00 · 404 阅读 · 0 评论 -
MySQL的基础指令DML指令三(查询完结)
MySQL基础回顾之DQL三-MySQL中多表查询、SQL执行过程、子查询前言一、多表查询(sql99语法)分类一:等值连接和非等值连接1.等值连接2.非等值连接分类二:自连接和非自连接1.自连接2.非自连接分类三:内连接和外连接前言1.内连接1.1 基本概念1.2 基本的写法2.外连接2.1 左外连接2.1.1 基本概念2.1.2 基本的写法2.2 右外连接2.2.1 基本概念2.2.2 基本的写法2.3 全外连接2.3.1 基本概念2.3.2 sql99提供的写法2.3.3 MySQL实现的写法二、SQ原创 2022-04-29 22:17:58 · 595 阅读 · 0 评论 -
MySQL的基础指令DML指令四(DML完结)
MySQL的基础指令DML指令四-增、改、删一、添加数据1. 添加一条数据2. 添加多条数据二、更新数据1. 更新一条数据2. 更新多条数据三、删除数据1. 删除一条数据2. 删除多条数据一、添加数据1. 添加一条数据方式一:值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。INSERT INTO 表名VALUES (value1,value2,....);方式二:在 INSERT 子句中随意列出列名,但是一旦列出,VALUES中要插入的value1,…原创 2022-05-02 12:14:52 · 304 阅读 · 0 评论 -
MySQL基础之DDL指令
MySQL基础之DDL指令-数据库、数据表的操作一、数据库的操作前言 数据库的命名规则1. 数据库的创建2. 数据库的使用3. 数据库的修改二、数据表的操作1. 表的创建2. 表的修改2.1 表中列的修改2.2 表的修改一、数据库的操作前言 数据库的命名规则数据库名、表名不得超过30个字符,变量名限制为29个。必须只能包含 A–Z, a–z, 0–9, _共63个字符。数据库名、表名、字段名等对象名中间不要包含空格。同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字原创 2022-05-02 11:04:16 · 1093 阅读 · 0 评论 -
MySQL基础之事务和DCL指令
MySQL的事务-初级篇一、事务1. 事务的基本概念2. 事务的ACID属性3. 事务的分类4. 事务的创建5. 事务的隔离等级5.1 三种错误假设5.1.1 脏读5.1.2 不可重复读5.1.3 幻读5.2 四个级别5.2.1 读未提交5.2.2 读已提交5.2.3 可重复读5.2.4 串行化5.3 五个状态5.3.1 活动的(active)5.3.2 部分提交的(partially committed)5.3.3 失败的(failed)5.3.4 中止的(aborted)5.3.5 提交的(co原创 2022-05-02 11:51:13 · 381 阅读 · 0 评论 -
MySQL高级之逻辑架构
MySQL的逻辑架构、执行过程、缓冲池一、概览逻辑架构附加 Connectors1. 连接层1.1 过程1.2 总结2. 服务层2.1 SQL Interface: SQL接口2.2 Parser: 解析器2.3 Optimizer: 查询优化器2.4 Caches & Buffers: 查询缓存组件(废弃)3. 引擎层附加 存储层二、 MySQL执行流程1. SQL的执行流程2. 总结三、数据库缓冲池1. 引言2. 缓冲池的数据读取流程一、概览逻辑架构附加 Connectors利用外部语原创 2022-05-03 10:02:38 · 134 阅读 · 0 评论 -
MySQL高级之索引一
MySQL高级之索引的数据结构一、索引的基础知识1. 基本概念2. 索引的优缺点2.1 优点2.2 缺点二、索引的数据结构1. Compact行格式简介2. 聚簇索引数据结构详解-B+树2.1 聚簇索引结构的演变2.1.1 数据数目不过页2.1.2 目录数目不过页2.1.3 目录数目过页2.1.4 总结2.1.5 更正3. 非聚簇索引数据结构3.1 从点到线:从聚簇到非聚簇3.1.1 区别一:叶子节点不存放数据3.1.2 区别二:不通过主键排序数据3.1.3 注意点:主键不可或缺3.2 举例一、索引的原创 2022-05-03 12:08:04 · 568 阅读 · 0 评论 -
MySQL高级之索引二
MySQL高级之索引底层结构的选择一、底层结构的选择过程1. Hash结构1.1 优点1.2 缺点1.3 引申:自适应Hash2. 二叉搜索树结构2.1 优点2.2 缺点3. AVL树(平衡二叉树)结构3.1 优点3.2 缺点4. B树结构4.1 优点4.2 特点5. 为什么选择B+树5.1 B+树和B树的对比5.2 B+树的优越性二、索引的常见面试问题1. 为了减少IO,索引树会一次性加载吗?2. B+树的存储能力如何?为何说一般查找行记录,最多只需1~3次磁盘IO?三、MyISAM引擎的索引1. MyI原创 2022-05-03 19:11:09 · 616 阅读 · 0 评论 -
MySQL高级之索引三
MySQL高级之索引的分类、创建、使用时机一、索引的分类1. 按照物理实现方式分类1.1 聚簇索引1.2 非聚簇索引2. 按照字段个数划分2.1 单列索引2.2 多列索引(联合索引)3 按照功能逻辑分类3.1 普通索引3.1 唯一性索引3.1 主键索引3.1 全文索引3.1 空间索引二、索引的创建三、索引的使用情况1. 什么时候适合创建索引2. 什么时候不适合创建索引一、索引的分类1. 按照物理实现方式分类1.1 聚簇索引看之前的文章,已经详细说过,不再赘述。1.2 非聚簇索引看之前的文章原创 2022-05-03 19:50:47 · 458 阅读 · 0 评论 -
MySQL高级之属性的实现原理之日志
MySQL高级之REDO和UNDO日志一、REDO日志(持久性)1. 需求2. 概述3. 组成4. 流程5. 刷盘策略5.1 刷盘流程5.2 参数设置二、UNDO日志(原子性、一致性)1. 基础概念2. 回滚细节3. UNDO LOG类型3.1 insert undo log3.2 update undo log4. UNDO LOG的存储4.1 基本结构4.2 页的重用4.3 UNDO LOG和页的删除4.4 回滚段与事务4.5 回滚段的数据类型一、REDO日志(持久性)1. 需求InnoDB存储原创 2022-05-04 10:52:46 · 221 阅读 · 0 评论 -
MySQL高级之属性的实现原理之锁
MySQL的隔离性实现之锁前言:MySQL的隔离性一、MySQL并发事务访问的情况1. 读-读1.1 基本概念1.2 规定2. 写-写2.1 基本概念2.2 规定2.3 锁的基础知识3. 读-写或写-读3.1 基本概念3.2 规定3.2 解决方案(读写都加锁)二、锁的详细介绍1. 读锁和写锁1.1 概览1.2 锁定读1.2.1 对读取的记录加S锁1.2.2 对读取的记录加X锁1.2.3 SQL8新特性1.3 写操作2. 表锁和行锁2.1 概览2.2 表级锁2.2.1 表级别的S锁和X锁2.2.2 意向原创 2022-05-06 15:19:21 · 331 阅读 · 0 评论 -
MySQL高级之属性的实现原理之MVCC
MySQL的隔离性实现之MVCC前言一、MVCC基础知识1. MVCC基础知识1.1 MVCC基本概念1.2 快照读和当前读3. 数据的隔离级别新解2. MVCC优点二、MVCC的核心1. 表中数据的隐藏字段和UodoLog版本链2. ReadView视图2.1 基本概念2.2 使用范围 --- 限定在读已提交和可重复读2.3 ReadView的组成2.4 ReadView的规则2.5 ReadView的操作流程2.6 在读已提交和可重复读下的区别2.6.1 读已提交2.6.2 可重复读前言上篇文章曾经原创 2022-05-06 16:49:15 · 322 阅读 · 0 评论 -
MySQL高级之日志
MySQL高级之日志一、二进制日志1. 基本知识1.1 基本概念1.2 作用2. 相关指令2.1 查看默认情况2.2 设置日志参数2.3 查看日志内容2.4 进行数据恢复2.5 删除日志文件3. binlog的写入机制3.1 写入机制3.2 参数设置3.3 两阶段提交3.3.1 问题的引入3.3.2 两阶段提交4. 注意二、中继日志1. 基础知识1.1 基本概念1.2 作用三、慢查询日志四、通用查询日志五、错误日志六、REDO和UNDO日志一、二进制日志1. 基本知识1.1 基本概念二进制日志,原创 2022-05-07 10:53:30 · 357 阅读 · 0 评论 -
MySQL高级之主从复制
MySQL高级之主从复制一、主从复制基础知识1. 引入主从复制2. 主从复制的作用二、主从复制原理一句话描述:Slave会从Master读取binlog来进行数据同步。1. 三个线程2. 复制三步骤3. 复制基本原则4. 主从同步的要求三、一主一从的搭建四、主从复制的延时问题1. 基本概念2. 解决方式2.1 异步复制2.2 半同步复制2.3 组复制一、主从复制基础知识1. 引入主从复制一般应用对数据库而言都是“ 读多写少 ”,也就说对数据库读取数据的压力比较大,因此,我们可以采用数据库集群的方案,原创 2022-05-07 11:25:12 · 566 阅读 · 0 评论