互联网
类型
可以朗读
语音朗读
159千字
字数
2022-01-01
发行日期
展开全部
主编推荐语
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():返回数据库的版本号
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。