展开全部

主编推荐语

MySQL是流行的关系型数据库管理系统之一,本书循序渐进地讲解了MySQL的应用实战与性能调优。

内容简介

本书从介绍数据库设计和数据库的基本使用开始,逐步深入一些复杂的内容,包括连接查询、子查询、字符串函数、数字函数、日期函数以及新版本的窗口函数,还包括存储过程、游标、创建高效的索引以及SQL优化技巧等。

本书通过大量的示例应用,系统地讲述读者应该掌握的知识,以及对于数据库的优化,其中包括MySQL的架构以及MySQL 8的新特征,也包含MySQL基准测试和性能剖析,数据库软硬件性能优化,内存优化,复制、备份和恢复,高可用与高可扩展性,尤其对于MySQL中各种锁机制以及MySQL的MVCC的核心原理都一一通过理论和大量的示例进行解析,以方便你理解。

目录

  • 版权信息
  • 前言
  • 第1章 MySQL入门和容器化部署
  • 1.1 MySQL介绍
  • 1.2 MySQL 8安装和升级
  • 1.2.1 安装前说明
  • 1.2.2 在Windows上安装MySQL
  • 1.2.3 在Linux上安装MySQL
  • 1.2.4 在Docker上安装MySQL
  • 第2章 什么样的数据库设计才是优秀的
  • 2.1 关系型数据库设计理论
  • 2.2 连接数据库和基本信息查询
  • 2.2.1 连接数据库
  • 2.2.2 基本信息查询
  • 2.3 数据库和表
  • 2.3.1 创建数据库
  • 2.3.2 创建表
  • 2.4 数据类型和类型异常处理
  • 2.4.1 数字数据类型
  • 2.4.2 日期和时间数据类型
  • 2.4.3 字符串数据类型
  • 2.4.4 JSON数据类型
  • 第3章 SQL语句全面解析和应用实战
  • 3.1 数据库操作
  • 3.2 数据表操作
  • 3.2.1 创建数据表
  • 3.2.2 数据表的修改与删除
  • 3.2.3 约束
  • 3.3 数据查询
  • 3.4 数据插入
  • 3.5 where(筛选)
  • 3.6 and和or(与和或)
  • 3.7 between(范围查找)
  • 3.8 distinct(去重关键字)
  • 3.9 update(修改或更新)
  • 3.10 delete(删除)
  • 3.11 like(模糊匹配)
  • 3.12 order by(排序)
  • 3.13 group by(分组)
  • 3.14 with rollup(分组统计再统计)
  • 3.15 having(分组筛选)
  • 3.16 union和union all(组合查询)
  • 3.17 join(连接查询)
  • 3.17.1 inner join(内连接)
  • 3.17.2 left join(左连接)
  • 3.17.3 right join(右连接)
  • 3.18 in和not in(多关键字筛选)
  • 3.19 exists和not exists(是否返回结果集)
  • 3.20 复制表
  • 3.21 临时表
  • 第4章 MySQL函数大全和高效率汇总统计实战
  • 4.1 MySQL字符串函数
  • 4.1.1 character_length(s):返回字符串长度
  • 4.1.2 concat(s1,s2,...,sn):字符串合并
  • 4.1.3 format(x,n):数字格式化
  • 4.1.4 lpad(s1,len,s2):字符串填充
  • 4.1.5 field(s,s1,s2,...):返回字符串出现的位置
  • 4.1.6 insert(s1,x,len,s2):替换字符串
  • 4.1.7 lcase(s):把字符串中的所有字母转换为小写字母
  • 4.1.8 ucase(s):把字符串中的所有字母转换为大写字母
  • 4.1.9 strcmp(s1,s2):比较字符串大小
  • 4.1.10 replace(s,s1,s2):字符串替换
  • 4.1.11 position(s1 in s):获取子字符串在字符串中出现的位置
  • 4.1.12 md5(s):字符串加密
  • 4.1.13 inet_aton(ip):把IP地址转换为数字
  • 4.1.14 inet_ntoa (s):把数字转换为IP地址
  • 4.2 MySQL数字函数
  • 4.2.1 ceil(x):返回不小于x的最小整数
  • 4.2.2 ceiling(x):返回不小于x的最小整数
  • 4.2.3 floor(x):返回不大于x的最大整数
  • 4.2.4 round(x):返回最接近x的整数
  • 4.2.5 max(expression):求最大值
  • 4.2.6 min(expression):求最小值
  • 4.2.7 sum(expression):求总和
  • 4.2.8 avg(expression):求平均值
  • 4.2.9 count(expression):求总记录数
  • 4.3 MySQL日期函数
  • 4.3.1 adddate(d,n):返回指定日期加上指定天数后的日期
  • 4.3.2 addtime(t,n):返回指定时间加上指定时间后的时间
  • 4.3.3 curdate():返回当前日期
  • 4.3.4 datediff(d1,d2):返回两个日期相隔的天数
  • 4.3.5 dayofyear(d):返回指定日期是本年的第几天
  • 4.3.6 extract(type from d):根据对应格式返回日期
  • 4.3.7 now():返回当前日期和时间
  • 4.3.8 quarter(d):返回日期对应的季度数
  • 4.3.9 second(t):返回指定时间中的秒数
  • 4.3.10 timediff(time1, time2):计算时间差
  • 4.3.11 date(t):从指定日期时间中提取日期值
  • 4.3.12 hour(t):返回指定时间中的小时数
  • 4.3.13 time(expression):提取日期时间参数中的时间部分
  • 4.3.14 time_format(t,f):根据表达式显示时间
  • 4.3.15 year(d):返回指定日期的年份
  • 4.4 MySQL高级函数
  • 4.4.1 cast( x as type):数据类型转换
  • 4.4.2 coalesce(expr1, ..., exprn):返回第一个非空表达式
  • 4.4.3 if(expr,v1,v2):表达式判断
  • 4.4.4 ifnull(v1,v2):null替换
  • 4.4.5 isnull(expression):判断表达式是否为null
  • 4.4.6 nullif(expr1, expr2):字符串相等则返回null
  • 4.4.7 last_insert_id():返回最近生成的自增ID
  • 4.4.8 case expression:表达式分支
  • 4.5 MySQL over():窗口函数汇总分析
  • 4.5.1 row_number():顺序排名函数
  • 4.5.2 rank():跳级排名函数
  • 4.5.3 dense_rank():不跳级排名函数
  • 4.5.4 lag(expr,n):前分析函数,返回前n行的值
  • 4.5.5 lead(expr,n):后分析函数,返回后n行的值
  • 4.5.6 first_value(expr):头尾函数,返回第一个值
  • 4.5.7 last_value(expr):头尾函数,返回最后一个值
  • 4.5.8 nth_value(expr,n):从结果集中的第n行获取值
  • 4.5.9 ntile(n):数据集分桶
  • 4.5.10 sum( )over(expr):聚合求和
  • 4.5.11 avg( )over(expr):聚合求平均值
  • 4.5.12 max( )over(expr):聚合求最大值
  • 4.5.13 min( )over(expr):聚合求最小值
  • 4.5.14 count( )over(expr):聚合总条数
  • 第5章 MySQL大表快速优化诀窍
  • 5.1 分区
  • 5.1.1 分区类型
  • 5.1.2 范围分区
  • 5.1.3 列表分区
  • 5.1.4 列分区
  • 5.1.5 哈希分区
  • 5.1.6 键分区
  • 5.1.7 子分区
  • 5.1.8 MySQL分区对null的处理
  • 5.1.9 分区管理
  • 5.1.10 分区的限制
  • 5.2 视图
  • 5.3 存储过程
  • 5.3.1 存储过程的创建和调用
  • 5.3.2 带参数的存储过程
  • 5.3.3 变量
  • 5.3.4 注释
  • 5.3.5 存储过程的修改和删除
  • 5.3.6 存储过程的控制语句
  • 5.4 游标
  • 5.5 字符集和排序规则
  • 5.5.1 MySQL中的字符集和排序规则
  • 5.5.2 列字符集和排序规则
  • 5.5.3 使用collate指定查询排序规则
  • 第6章 MySQL创建高效的索引
  • 6.1 索引
  • 6.2 创建索引的指导原则
  • 6.3 B-Tree索引和哈希索引的比较
  • 6.4 高效SQL必备分析利器的执行计划分析
  • 6.5 高效SQL的索引检索原理
  • 6.5.1 主键索引
  • 6.5.2 普通索引
  • 6.5.3 复合索引
  • 6.6 索引的使用技巧与SQL优化实战
  • 6.6.1 避免回表查询
  • 6.6.2 尽量使用联合索引
  • 6.6.3 索引条件下推优化
  • 6.6.4 避免全表扫描
  • 6.6.5 负向查询不能使用索引
  • 6.6.6 前导模糊查询不能使用索引
  • 6.6.7 在字段上计算不能命中索引
  • 6.6.8 查询条件类型不一致不能命中索引
  • 6.6.9 明确知道只返回一条记录可以使用limit进行限制
  • 6.6.10 limit分页优化
  • 6.6.11 使用表内连接进行limit分页优化
  • 6.6.12 union all优化(基于MySQL 8.0+)
  • 6.6.13 or优化(基于MySQL 8.0+)
  • 6.6.14 count(*)优化
  • 6.6.15 on duplicate key update优化
  • 第7章 InnoDB存储引擎揭秘和优化实战
  • 7.1 InnoDB存储引擎实践
  • 7.2 InnoDB和ACID模型
  • 7.2.1 MySQL事务处理的两种方法
  • 7.2.2 InnoDB MVCC
  • 7.3 锁机制
  • 7.3.1 表级锁
  • 7.3.2 行级锁
  • 7.3.3 共享锁
  • 7.3.4 排他锁
  • 7.3.5 意向锁
  • 7.3.6 乐观锁
  • 7.3.7 悲观锁
  • 7.3.8 间隙锁
  • 7.3.9 记录锁
  • 7.3.10 临键锁
  • 7.3.11 死锁
  • 7.4 事务隔离级别
  • 7.5 InnoDB内存结构解析和优化实战
  • 7.5.1 缓冲池原理和优化
  • 7.5.2 变更缓冲区原理与优化
  • 7.5.3 自适应哈希索引原理与配置
  • 7.5.4 日志缓冲区
  • 7.6 InnoDB表实战调优
  • 7.6.1 优化InnoDB表的存储
  • 7.6.2 InnoDB事务处理优化
  • 7.6.3 InnoDB只读事务优化
  • 7.6.4 优化InnoDB重做日志
  • 7.6.5 InnoDB磁盘I/O优化
  • 7.6.6 配置InnoDB线程并发数量
  • 7.6.7 配置InnoDB的I/O读写后台线程数量
  • 7.6.8 InnoDB的并行读线程数量
  • 7.6.9 InnoDB的I/O容量
  • 第8章 MySQL基准测试数据的备份与还原
  • 8.1 基准测试
  • 8.1.1 Sysbench介绍
  • 8.1.2 Sysbench测试实操
  • 8.2 备份
  • 8.3 还原
  • 8.3.1 利用source命令导入数据库
  • 8.3.2 利用load data导入数据
  • 8.3.3 利用mysqlimport导入数据
  • 第9章 MySQL高性能架构的读写分离
  • 9.1 读写分离
  • 9.2 MySQL主从复制
  • 9.3 MySQL主从复制架构的搭建
  • 9.3.1 配置主节点
  • 9.3.2 配置从节点
  • 9.3.3 主从复制
  • 附录 常用函数速查表
  • A.1 MySQL字符串函数
  • A.1.1 ASCII(s):返回字符串的ASCII码
  • A.1.2 char_length(s):返回字符串长度
  • A.1.3 character_length(s):返回字符串长度
  • A.1.4 concat(s1,s2,...,sn):字符串合并
  • A.1.5 concat_WS(x, s1,s2,...,sn):字符串合并
  • A.1.6 field(s,s1,s2,...):返回字符串出现的位置
  • A.1.7 find in__set(s1,s2):返回字符串的匹配位置
  • A.1.8 format(x,n):数字格式化
  • A.1.9 insert(s1,x,len,s2):替换字符串
  • A.1.10 locate(s1,s):获取字符串出现的位置
  • A.1.11 lcase(s):把字符串中的所有字母转换为小写字母
  • A.1.12 left(s,n):返回字符串的前n个字符
  • A.1.13 lower(s):把字符串中的所有字母转换为小写字母
  • A.1.14 lpad(s1,len,s2):字符串填充
  • A.1.15 ltrim(s):去掉字符串开始处的空格
  • A.1.16 mid(s,n,len):从字符串的指定位置截取子字符串
  • A.1.17 replace(s,s1,s2):字符串替换
  • A.1.18 reverse(s):字符串反转
  • A.1.19 right(s,n):返回字符串后n个字符
  • A.1.20 rpad(s1,len,s2):在字符串中填充相应字符串
  • A.1.21 position(s1 in s):获取子字符串在字符串中出现的位置
  • A.1.22 repeat(s,n):字符串重复拼接
  • A.1.23 substring_index(s, s2, number):返回字符串中第n个出现的子字符串
  • A.1.24 trim(s):去掉字符串开始和结尾处的空格
  • A.1.25 ucase(s):把字符串中的所有字母转换为大写字母
  • A.1.26 rtrim(s):去掉字符串结尾处的空格
  • A.1.27 strcmp(s1,s2):比较字符串的大小
  • A.1.28 substr(s, start, length):从字符串中截取子字符串
  • A.1.29 substring(s, start, length):从字符串中截取子字符串
  • A.1.30 md5(s):字符串加密
  • A.1.31 inet_aton (ip):把IP地址转换为数字
  • A.1.32 inet_ntoa(s):把数字转换为IP地址
  • A.2 MySQL数字函数
  • A.2.1 abs(x):求绝对值
  • A.2.2 sign(x):返回数字符号
  • A.2.3 acos(x):求反余弦值
  • A.2.4 asin(x):求反正弦值
  • A.2.5 atan (x):求反正切值
  • A.2.6 sin(x):求正弦值
  • A.2.7 cos(x):求余弦值
  • A.2.8 cot(x):求余切值
  • A.2.9 tan(x):求正切值
  • A.2.10 degrees(x):将弧度转换为角度
  • A.2.11 radians(x):将角度转换为弧度
  • A.2.12 exp(x):返回e的x次方
  • A.2.13 ceil(x):返回不小于x的最小整数
  • A.2.14 ceiling(x):返回不小于x的最小整数
  • A.2.15 floor(x):返回不大于x的最大整数
  • A.2.16 round(x):返回最接近x的整数
  • A.2.17 greatest(expr1,expr2, ...):返回列表中的最大值
  • A.2.18 least(expr1, expr2, expr3, ...):返回列表中的最小值
  • A.2.19 ln(x):求自然对数
  • A.2.20 log(x)或log(base, x):求对数
  • A.2.21 log10(x):求以10为底的对数
  • A.2.22 log2(x):求以2为底的对数
  • A.2.23 max(expression):求最大值
  • A.2.24 min(expression):求最小值
  • A.2.25 sum(expression):求总和
  • A.2.26 avg(expression):求平均值
  • A.2.27 count(expression):求总记录数
  • A.2.28 mod(x,y):求余数
  • A.2.29 pow(x,y):求x的y次方
  • A.2.30 sqrt(x):求平方根
  • A.2.31 rand():求随机数
  • A.2.32 truncate(x,y):返回保留到小数点后n位的值
  • A.3 MySQL日期函数
  • A.3.1 adddate(d,n):返回指定日期加上指定天数后的日期
  • A.3.2 addtime(t,n):返回指定时间加上指定时间后的时间
  • A.3.3 curdate():返回当前日期
  • A.3.4 current_date():返回当前日期
  • A.3.5 current_time():返回当前时间
  • A.3.6 current_timestamp():返回当前日期和时间
  • A.3.7 curtime():返回当前时间
  • A.3.8 date(t):从指定日期时间中提取日期值
  • A.3.9 datediff(d1,d2):返回两个日期相隔的天数
  • A.3.10 date_add(d, interval expr type):给指定日期加上一个时间段后的日期
  • A.3.11 date_format(d,f):根据表达式显示日期
  • A.3.12 date_sub(date, interval expr type):从当前日期减去指定的时间间隔
  • A.3.13 day(d):返回日期值中的日值
  • A.3.14 dayname(d):返回指定日期是星期几
  • A.3.15 dayofmonth(d):返回指定日期是本月的第几天
  • A.3.16 dayofweek(d):返回指定日期是所在星期的第几天
  • A.3.17 dayofyear(d):返回指定日期是本年的第几天
  • A.3.18 extract (type from d):根据对应格式返回日期
  • A.3.19 from_days(n):返回元年加n天的日期
  • A.3.20 hour(t):返回指定时间中的小时数
  • A.3.21 last_day(d):返回给定日期所在月份的最后一天
  • A.3.22 localtime():返回当前日期和时间
  • A.3.23 localtimestamp():返回当前日期和时间
  • A.3.24 makedate(year, day-of-year):时间组合天数
  • A.3.25 maketime(hour, minute, second):时间组合
  • A.3.26 microsecond(date):返回时间参数中的微秒数
  • A.3.27 minute(t):返回指定时间中的分钟数
  • A.3.28 monthname(d):返回日期中的月份名称
  • A.3.29 month(d):返回日期中的月份值
  • A.3.30 now():返回当前日期和时间
  • A.3.31 period_add(period, number):日期加月份数
  • A.3.32 period_diff(period1, period2):返回两个时间之间的月份差
  • A.3.33 quarter(d):返回日期对应的季度数
  • A.3.34 second(t):返回指定时间中的秒数
  • A.3.35 sec to__time(s):秒数转换为时间
  • A.3.36 str to__date(string, format_mask):把字符串转换为日期
  • A.3.37 subdate(d,n):从指定日期减去指定天数后的日期
  • A.3.38 subtime(t,n):从指定时间减去指定秒数后的时间
  • A.3.39 sysdate():返回当前日期和时间
  • A.3.40 time(expression):提取日期时间参数中的时间部分
  • A.3.41 time_format(t,f):根据表达式显示时间
  • A.3.42 time to__sec(t):把时间转换为秒数
  • A.3.43 timediff(time1, time2):计算时间差
  • A.3.44 timestamp(expression, interval):指定时间加上时间间隔后的时间
  • A.3.45 to_days(d):计算元年到当前日期的天数
  • A.3.46 week(d):返回指定日期是本年的第几周
  • A.3.47 weekday(d):返回指定日期是星期几
  • A.3.48 year(d):返回指定日期的年份
  • A.4 MySQL高级函数
  • A.4.1 bin(x):返回字符串的二进制编码
  • A.4.2 binary(s):将字符串转换为二进制数
  • A.4.3 case expression:表达式分支
  • A.4.4 cast( x as type):数据类型转换
  • A.4.5 coalesce(expr1,...,exprn):返回第一个非空表达式
  • A.4.6 connection_id():返回唯一连接ID
  • A.4.7 conv(x,f1,f2):数据进制转换
  • A.4.8 convert( s using cs):求字符串的字符集
  • A.4.9 current_user():返回当前的用户名
  • A.4.10 database():返回当前的数据库名
  • A.4.11 if(expr,v1,v2):表达式判断
  • A.4.12 ifnull(v1,v2):null替换
  • A.4.13 isnull(expression):判断表达式是否为null
  • A.4.14 nullif(expr1, expr2):字符串相等则返回null
  • A.4.15 last_insert_id():返回最近生成的自增ID
  • A.4.16 session_user():返回当前会话的用户名
  • A.4.17 version():返回数据库的版本号
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0

    通过阅读本书,读者不仅能快速高效地解决业务问题,还能站在数据库管理员的角度来优化自己的数据库。此外,本书还提供了与 MySQL 内部工作原理相关的内容,读者越是了解 MySQL 的工作原理,就越能合理地解决工程中遇到的问题。

      转发
      评论

    出版方

    机械工业出版社有限公司

    机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。