零基础如何自学MySQL数据库?

[复制链接]
查看3944 | 回复0 | 2022-3-29 01:37:36 | 显示全部楼层 |阅读模式
先给出我的核心观点:学习,无论你是学什么,也无论你有没有基础。思考永远是第一位的,有些知识你没接触过不要紧,用不着害怕,也没必要害怕。重要的是一秒钟也不要停止思考,问题要想透彻,正所谓磨刀不误砍柴工。尤其是作为工程师,要有打破砂锅问到底的精神,否则你怎么学都没用。
# b5 b6 `! @, b+ t; e首先概览下mysql的知识体系:
6 N5 O( F, B- w/ e
2 K8 y8 k7 I6 ~% L: l基础:
9 J  B" w1 i& a1 N& l6 M
    - [8 m. j  f2 @1 H- u9 }+ F" V6 a# ^* p
  • sql语句
    & f( l2 a0 k- `6 ^* h- S( S1 H
  • 表结构设计
    / A0 d! u: @6 G, k( }7 c' Y
调优:
+ X" {1 K6 w+ J: O
    1 a1 ]9 {. D9 U4 W/ O, ~) Y4 Z) X5 V
  • 索引、慢查询优化
    / g( T  ?2 l9 N- [5 }
  • 配置参数调优" W& \( N6 }2 `( Q! D+ V: K
核心原理:
1 o% g% ^: K( r2 c* a$ X7 P

    ! ?" g4 z* q5 C# g! a) x1 R
  • InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)
    ( }5 [- d4 j' P8 Z& S, ^' j$ T
  • Mysqld  (包括连接管理、进程管理、查询缓存、查询优化、日志等等)  l3 o, e7 B# x1 E
架构与运维:
- t. L4 _7 n4 K0 R

    & U  H& Y9 [8 k8 `+ @' n: o
  • 用户与权限、安全
    ; w) s0 w5 W* h
  • 备份与恢复, o. ?8 ~3 _0 a" Q) m8 a3 V
  • 日志
    ( S. z& l/ O. t& d: F8 I. e: v
  • 分布式与高可用: A1 ^. Z0 x+ h8 B
对于零基础的童鞋:+ N1 _4 y: a1 I. ~* E. y+ y3 ~. i4 }
$ U+ e( I; V! {0 w

& {( k- Y+ c6 M; l, @6 s; q 零基础如何自学MySQL数据库?-1.jpg 4 Z$ n4 O) z3 L" i: a2 u5 T
首先,学习基本的SQL语法。完成这个后,你就可以编写SQL语句了。
* d# _( ^: ]+ w+ E# h5 {* x% H这一步推荐:W3Schools的 SQL 教程。, T: {8 a$ h! l
其次,学习数据库的主要功能和使用方法,比如用户相关或者权限相关等等。5 N+ K1 v6 g( p, ~. i
我推荐两本书:5 g" ^9 B& C9 H! K4 F  K0 d
一、《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。
. j' H7 C+ I9 M+ t8 w( U二、《数据库系统概念》这本书是dba必看的。2 }# _. o8 G5 \* A$ H" h' M' ]
看完这些并且实践+思考之后,可以算入门了。# ?* Z) N2 m! ~4 e9 j' s
接下来对于希望深入学习的童鞋
+ {: v/ z! r/ W5 j  \+ H
1 H6 e5 {+ B9 Q我推荐几本书(很多大神都这么推荐),《高性能MySQL(第3版)》、 《MySQL技术内幕(第4版)》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》还有Mysql的官网。读完这些东西,再加些丰富的经验,理论上来讲就具备DBA的水平了。# H: v% M5 S: k( S* P
十分推荐阅读Planet MySQL上汇总的博客,特别是Percona's MySQL & InnoDB performance and scalability blog.
: C9 e  ^  \( J2 c
/ A0 U$ P" e/ @8 T3 x3 p+ K/ c但是,正如我开头所言的。面对问题的时候一定要积极思考!
* D: Q! W% r! `( ]( J4 l! v$ G比如:
& B/ j+ q9 G  X+ ^2 `我问你,面对一个并发量比较高的场景,如何配置mysql的连接数?
" ~$ V1 F- |9 F( f$ B: c你可能会回答:“哦,就是调高max_connection的数值吧。”
) A# K7 o: E6 n  A; `# l$ a8 y1 d/ W! w那,你有没有思考过调到多少是最合适的呢?为什么这样设置就最合适呢?
3 r: ?6 p# |6 C2 ^9 N' C3 H也许你会回答:“恩我知道,可以看系统之前的max_used_connection的数值,然后来设置。也可以调高back_log的值。”
  T8 k) Y1 {& ]/ Z5 ^) W5 E那你有没有思考过,max_connection连接数太高会有什么不好的影响呢?back_log设置的太高有什么不好的地方呢?max_connect的上限其实是取决于mysql能获得的文件描述符的数量,也就是说你就算设置成10000,最后也是没用的,系统会根据机器的情况自动调低。2 e) s+ D" g: O
也许你会回答:“恩我知道,设置太高,会有系统开销...”7 s4 O0 E) S( k/ N+ y- w" q2 o
那你有没有思考过,这些开销具体是什么呢?是什么工作导致了需要这些内存开销?5 K4 \  o. ?+ J; e6 ~, ?7 ?
也许你还会回答,在连接创建的时候,会立刻为它分配连接缓冲区以及查询缓冲区,这些都会吃内存。
+ ^! f* V: _/ @& {" I那你有没有思考过,占据的资源具体是多少呢?取决于哪些因素呢?
" b, u+ U- W7 `# f/ Q9 y" H. a( U9 {! g
好了,我们先结束这个问题。回到知乎的问题上来,其实我说了这么多,就是表达要如何自学mysql。5 t$ K3 o5 Y+ m

  V* P  w- H9 \4 O5 C  _所以的所以,你必须不断思考,才能在工作中面对具体场景的时候,非常淡定地推断:“哦,一定是这里出了问题。应该怎么怎么做。”
" c; \; Q! K' t面对问题,拿出打破砂锅问到底的精神,先思考一番,给出自己的假设,不要着急地去找度娘,谷歌。思考过后,带着你的推断或者答案,大胆地去搜索吧!去看看别人的见解,去看看官方的描述!8 O' F" s/ F$ r' j- b( z
这才是一个工程师应有的态度。
) R* ?+ g9 M( J8 ~% n% c: E, m# Q2 w7 V/ i9 b
最后我想给出一些有价值的学习资料。可以省去一些时间。
; I8 V5 h+ N' D  d: o% l. [: f2 M$ F-电子书:+ e$ Q/ W4 a% c8 l# |+ P1 v
7 k3 y& E* V( [- H
我认为多看书还是有好处的。有些书值得反复看许多遍,有时候只看一遍无法深刻理解吸收,思考也不够充分。
, a/ O( z% t) K; v7 r7 w4 O4 T9 i' J电子书下载传送门9 K( E" A# N1 u$ K0 ]* [- @) e1 }
    , i! G& \% G' _; P3 r; h
  • 《mysql必知必会》8 q! u" V- E8 h! t) N' h) s
  • 《高性能mysql第三版》
    & M  Y# u; i. f7 m. Z& m
  • 《数据库系统概念》
    & w0 j" O. A' G4 J/ J3 ~
  • 《深入理解MySQL》0 s& {) \" ^& o  m% F# v
  • 《MySQL性能调优与架构设计--全册》《SQL Antipatterns》. B) B# @5 C7 a9 F. w# \
  • 《MySQL技术内幕  InnoDB存储引擎》9 R: y6 X) {5 p) O9 j7 S0 ?/ e; I
-学习mysql的网站:: C  W# W5 T) d2 t  O) x- @

3 K0 g8 @! V, J* V0 iMySQL Tutorial - Learn MySQL Fast, Easy and Fun.
& i' t- T' ^3 E& u1 ]/ g; S+ H: w可以快速,简单和有趣的学习MySQL。以简单易懂的方式为您提供完整的MySQL教程。每个教程都有SQL脚本和可用屏幕截图的实际示例。  l9 p6 e! y" q% N* G
mysql学习资料 | mysql深入学习笔记 深度笔记
3 G# l) ?" {4 \" a+ k+ s! t有很多mysql的资料可以看,还可以看网友做的学习笔记。
: }& m/ a2 [' O' KW3Schools SQL 教程
( x/ G5 [9 u: V4 c可以学习基础的sql语句
- }" i! W2 s3 Y/ N$ U+ P# I& c3 Z: c-阅读官方手册: B" q4 Y1 h% E+ W% i" J
  A# e8 Q; Q6 {+ i; m' D
无论英文好不好,看英文手册的能力是一定要有,也一定要培养的。
3 m) _5 \8 J/ D& zmysql官方手册:14 The InnoDB Storage Engine
% A0 A- N* o# _5 G: P0 D/ i: K
0 W/ l# q' R5 L0 F' g-大牛的博客, Y- @7 p5 {3 p
) Q! L; x7 p# h
领域专家的博客是十分具有学习价值的,下面列举几个比较好的:8 s/ f2 T1 B2 c! L# U0 i
何登成的技术博客 何登成的技术博客* T* a! |4 z1 [  |& |
淘宝丁奇 追风刀·丁奇 - ITeye技术网站
, l. M3 b1 S6 m4 }9 ~周振兴@淘宝 花名:苏普 一个故事@MySQL DBA+ F8 S4 A# j7 g( L, A
阿里云数据库高级专家彭立勋为 MariaDB Foundation 正式成员,负责全球Replication模块相关补丁的Review。彭立勋也成为首位被MariaDB基金会引入的中国程序员。P.Linux Laboratory
& a+ P, H0 p( I* d# x2 P; y+ P/ HPlanet MySQL  x6 A. d$ r; I5 Q  ?% `6 K  z
  M* Z5 b. m$ {# l  ^" S4 v* R8 d
最后就是,要多用。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

203

金钱

0

收听

0

听众
性别
保密

新手上路

金钱
203 元