一、不建议这么学数据库
首先你要消除一个错误认知,即:
如果你想系统地掌握数据库常用的知识点,一定不要以网上各种散乱的文章为重点学习材料,理由有二:
-
网上的资料碎片化比较严重,对于新人来说,可能会造成盲人摸象的感觉,无法形成这块成体系的技术认知;
-
网上的很多数据库文章都是对诸如《MySQL技术内幕》《高性能 MYSQL》的二次理解和加工,很多文章的内容对原有数据库知识理解不到位、甚至理解出错。
二、建议这么学数据库
学习 MYSQL 数据库,建议方法:
-
找几本权威的数据库图书系统地学习一下,当然可以选择你感兴趣的部分,常用的数据库知识并不多;
-
自己安装一个数据库进行操作、实践。
例如,我在我的主机上安装了 MYSQL,我就可以这么练习:
Last login: Tue Jul 6 10:50:02 2021 from 106.26.160.131
Welcome to Alibaba Cloud Elastic Compute Service !
[root@myaliyun ~]# mysql -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3550
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show database
-> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'database' at line 1
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| flamingo |
| mysql |
| performance_schema |
| teamtalk |
| test |
+--------------------+
6 rows in set (0.01 sec)
MariaDB [(none)]> use flamingo;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [flamingo]> show tables;
+---------------------+
| Tables_in_flamingo |
+---------------------+
| t_chatmsg |
| t_user |
| t_user_relationship |
+---------------------+
3 rows in set (0.00 sec)
MariaDB [flamingo]> desc t_chatmsg;
+---------------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+-------------------+-----------------------------+
| f_create_time | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| f_id | bigint(20) | NO | PRI | NULL | auto_increment |
| f_msgcontent | blob | NO | | NULL | |
| f_remark | varchar(64) | YES | | NULL | |
| f_senderid | bigint(20) | NO | | NULL | |
| f_targetid | bigint(20) | NO | | NULL | |
+---------------+-------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)
MariaDB [flamingo]> select * from t_chatmsg limit 5;
Empty set (0.00 sec)
MariaDB [flamingo]>
三、学习哪些内容?
数据库需要掌握的基础知识有:
(1)熟悉基本 SQL 操作 包括增删改查(insert、delete、update、select语句),排序 order,条件查询(where 子语句),限制查询结果数量(LIMIT语句)等
(2)稍微高级一点的 SQL 操作(如 Group by,in,join,left join,多表联合查询,别名的使用,select 子语句等)
(3)索引的概念、索引的原理、索引的创建技巧
(4)数据库本身的操作,建库建表,数据的导入导出
(5)数据库用户权限控制(权限机制)
(6)MySQL的两种数据库引擎的区别
(7)SQL 优化技巧
以上属于对开发的基本的数据库知识要求,你可以找一本相关入门级的数据库图书推荐:
链接:
https://pan.baidu.com/s/1KhEv1QkbJn82jcu5UrmH0Q
提取码: urdk
高级开发除了以上要求还要熟悉高可用 MySQL、主从同步、读写分离、分表分库等技术,这些技术的细节一定要清楚,它们是你成为技术专家或者高级架构的必备知识。我们在实际面试时,在讨论高可用服务服务方案时,很多面试者也会和我们讨论到这些技术,但是不少面试者只知道这些技术的大致思想,细节往往说不清楚,细节不会就意味着你的高可用方案无法落地,企业需要可以落地的方案。
这些技术我首推《高性能 MySQL》这本书,这本书高级开发者一定要通读的,另外还有 2 本非常好的图书也推荐一下:一本是《MySQL 排错指南》,读完这本书以后,你会对整个“数据库世界”充满了清晰的认识;另外一本是《数据库索引设计与优化》,这本书读起来非常舒服,尤其是对于喜欢算法和数据结构的同学来说。
-
《高性能 MySQL》
-
《MySQL 排错指南》
-
《数据库索引设计与优化》
链接:
https://pan.baidu.com/s/1cnRHbGFunvjCbn4hHFuPEw
提取码: bs4h
完整的书单在这里:
计算机必看经典书籍(含下载方式)