欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 数据库零基础该如何入门?全面学习路线 + 数据库教程

数据库零基础该如何入门?全面学习路线 + 数据库教程

2024/10/25 21:24:28 来源:https://blog.csdn.net/weixin_41701290/article/details/141024812  浏览:    关键词:数据库零基础该如何入门?全面学习路线 + 数据库教程

介绍

数据库就是存放数据的库,负责存储、管理和检索数据。

我们平时看到的网站上的数据,基本都是存放到数据库中的,在用户需要的时候,再通过后端程序从数据库中取出来。

因此,数据库是后端开发的必备技能,也是核心技能! 无论你学什么语言的后端,数据库一定都要好好学,也是面试的重中之重!

数据库又分为关系型数据库和非关系型数据库。关系型数据库适用于存储相互之间有关联的数据,比如做一个学生管理系统,要存储学生、班级,一个班级有多个学生,这就是一种关联关系,关系型数据库典型的技术是 MySQL;而非关系型数据库主要用于存储零散的、相互独立的数据,典型的技术是 Redis。

本路线我们主要学习的是关系型数据库,并且以最主流、学习成本相对更低的关系型数据库 MySQL 为主。如果要学习非关系型数据库 Redis,请移步至:Redis 学习路线

注意,MySQL 是一种数据库管理系统,但是不能说数据库就是 MySQL!

就业方向

和数据库相关的岗位还是挺多的,不过每个岗位的要学的知识都不止数据库这一个,往往还要学习很多行业特定的专业技能。

  1. 数据库管理员:有些公司也把这个岗位叫做 “数据库运维”,顾名思义,工作职责就是负责管理和维护数据库。也包括数据库的备份和恢复、容量规划、优化等等。一般小公司不太会有这种岗位,可能是一个运维就把各种公司用到的服务全包了。
  2. 数据库开发:和后端开发的职责有一定交集,都会写 SQL。但是有些公司的业务 SQL 可能非常复杂,这种情况下就有专门的数据库开发同学来主导编写 SQL 语句,然后再递交给后端去接入到系统中。这类岗位要求你编写 SQL 的能力必须非常强!
  3. 数据分析:负责从数据库(数据仓库)中提取数据,从中得到更有价值的信息,主要的工作也是写 SQL 查库。但这类岗位相对更卷一些,并且需要一定的数学基础。
  4. 大数据开发:和数据库开发类似,都是编写 SQL 和程序从数据库中查出 / 计算出需要的数据。但是大数据开发的要求会更高一些,因为他们往往面对的数据量更大、面对的数据库更多样、需要考虑的性能和存储问题更多、编写的程序更复杂。

此外,还有数据科学家、数据挖掘、云数据库工程师等等,坑位相对更少、要求相对更高,不做过多介绍了。

大纲

对数据库的学习主要分为 4 部分:

  1. 数据库理论
  2. MySQL 入门及实践
  3. SQL 语句
  4. MySQL 高级(原理)

一般对绝大多数同学来说,把前 3 部分学完就足够了,高级部分面试会考察一些,背背八股文面试题就行。

其中,最最最重要的是一定要能根据业务场景独立设计库表,并且熟练编写 SQL 语句。

一、数据库理论

以前在大学的时候,老师是先给我们讲理论,再上手写代码实践的。但是现在网上很多的教程都是带着大家边实践边讲理论,我觉得这种方式更好,能让大家更轻松地快速入门、不枯燥。

入门可以看这个视频教程:https://www.bilibili.com/video/BV1Kr4y1i7ru,只用看 P1 - P57 集就足够了。

可以搭配菜鸟教程的 MySQL 文档进行巩固和实操:https://www.runoob.com/mysql/mysql-tutorial.html(文档中的 PHP 代码部分可忽略)

知识点

  • 数据库基本概念

    • 数据库
      • 关系型数据库
      • 非关系型数据库
    • 数据库管理系统
    • 字段
    • 视图
    • 约束
    • SQL
    • 查询
    • 索引
    • 事务
    • 主键
    • 外键
    • 语法分类
      • DDL
      • DML
      • DCL
      • DQL
  • 数据库设计

    • 数据库三大范式
    • 表关联
      • 1 对 1
      • 1 对多
      • 多对多
      • 笛卡尔积
    • E-R 图

资源

以下资源仅供参考和查漏补缺,有选择地观看即可。

视频:

  • 老杜 MySQL 入门基础 + 数据库实战:https://www.bilibili.com/video/BV1Vy4y1z7EX (内容相对精炼,有习题)
  • 尚硅谷 MySQL 基础到高级:https://www.bilibili.com/video/BV1iq4y1u7vj (近 22 年的课,质量也还不错)
  • 尚硅谷 - MySQL基础教程:https://www.bilibili.com/video/BV1xW411u7ax (小姐姐讲课,但感觉音质一般)

书籍:

  • 《MySQL 即学即用》:https://book.douban.com/subject/36230167/
  • 《MySQL是怎样使用的,快速入门MySQL》:https://book.douban.com/subject/35670862/

二、MySQL 入门及实践

这个阶段和上个阶段是可以一起学习的,就看上面说的教程即可。

本阶段先了解 MySQL 的基本用法,能够通过 MySQL 控制台或可视化工具来操作数据库。然后就可以去看其他的教程,用你熟悉的编程语言去操作数据库了,比如 Java 的 JDBC 或 MyBatis 框架;在学习过程中,建议多尝试自己设计库表,培养良好的数据库设计能力。

当你要自己设计数据库时,可以看看 数据库大全 这个网站,里面有很多的案例可供学习参考。

知识点

  • MySQL 安装
  • MySQL 常用命令
  • MySQL 基本操作
    • 插入数据
    • 删除数据
    • 修改数据
    • 查询数据
  • MySQL 关键字
  • MySQL 函数
  • MySQL 查询语法
    • 基本查询
    • 条件查询
    • 聚合查询
    • 分组查询
    • 连接
      • 内连接
      • 外连接
    • 子查询
    • 组合查询
  • MySQL 约束
  • MySQL 存储引擎
    • 游标
  • MySQL 触发器
  • MySQL 事务
  • MySQL 索引
  • MySQL 视图
  • MySQL 库表设计
  • 客户端操作(比如 Java)

三、SQL 语句

对后端开发和数据开发来说,SQL 都是一个核心技能。

很多速成的同学可能只会使用框架来操作数据库,缺少了自己编写 SQL 的能力。所以这里建议大家先把以下知识点中的 SQL 语法都尝试编写执行一遍,然后在平时开发系统时多写多练、熟能生巧,而不是死记硬背。

可以通过以下网站在线练习 SQL:

  • 鱼皮的 SQL 自学网:http://sqlmother.yupi.icu/
  • SQL 在线运行:https://www.bejson.com/runcode/sql/
  • SQL - 菜鸟教程:https://www.runoob.com/sql/sql-tutorial.html

知识点

  • 基本概念
    • 什么是 SQL
    • 不同数据库的 SQL 差异
  • 基础语法
    • 选择 select
      • select *
      • select field
      • select field as xxx
    • 排序 order by
    • 条件查询 where
      • and
      • or
      • not
      • like
      • is null / is not null
    • 去重 distinct
    • 截断 limit
    • 分页 offset
    • 分支 case when
  • 分组聚合 group by
    • 单级
    • 多级
    • having 子句
  • 函数
    • 时间函数
    • 字符串函数
    • 聚合函数
    • 开窗函数
      • sum over
      • sum over order
      • lag、lead
      • row number
  • 关联查询
    • where
    • join
    • left join
    • right join
    • outer join
  • 子查询
  • 组合查询
    • union
    • union all

MySQL 高级

如果你是一名后端开发,还没有把框架学完、还不能独立开发完整项目,那么先不要学习这部分知识。

不过对于一名数据库管理员(数据库运维)来说,这部分知识是必学的!

推荐几本不错的书籍:

  • 《MySQL 是怎样运行的》:https://book.douban.com/subject/35231266/ (算是国产良心强作)
  • 《高性能 MySQL》:https://book.douban.com/subject/36096578/ (领域经典,但是读起来可能会有一定难度)

还有一些小实践,比如构建自己的数据库:https://cstack.github.io/db_tutorial/

看视频的话就经典培训机构:

  • 黑马:https://www.bilibili.com/video/BV1Kr4y1i7ru (P58 - P195)
  • 尚硅谷:https://www.bilibili.com/video/BV1iq4y1u7vj (P96 - P199)

知识点

  • MySQL 体系架构
  • MySQL 执行原理
  • MySQL 并发控制
  • MySQL 事务隔离级别
  • MySQL 权限控制
  • MySQL 安全管理
  • MySQL 存储引擎
    • InnoDB
    • MyISAM
  • MySQL 数据文件
  • MySQL 锁
    • 排他锁 / 共享锁
    • 行锁 / 表锁
    • 意向锁
      • 意向共享锁
      • 意向独占锁
    • 间隙锁
  • MySQL 运维管理
  • MySQL 监控
  • MySQL 性能指标
  • MySQL 调优
    • 软件层面优化
    • 硬件层面优化
    • 配置优化
    • 索引优化
    • 表和字段设计
  • 数据备份与恢复
  • 主从复制
  • 读写分离
  • 分库分表

经典面试题

列举一些数据库相关的高频考题(不到面试前一个月,不要急着背):

基础理论

  1. 什么是数据表、字段、主键、外键、视图?
  2. 什么是数据库的三大范式?

事务和锁

  1. 什么是数据库事务?事务的 ACID 特性是什么?
  2. 并发事务的控制方式有哪些?
  3. MySQL 事务有哪些隔离级别,分别有什么特点?
  4. MySQL 事务的默认隔离级别是什么?
  5. MySQL 事务的隔离级别是怎么实现的?
  6. 什么是 MVCC?InnoDB 引擎是如何实现 MVCC 机制的?
  7. MySQL 中表级锁和行级锁有什么区别?各自有什么优缺点?
  8. 什么是数据库中的共享锁、排他锁?
  9. 是什么意向锁?它有什么作用?

存储和索引

  1. MySQL 支持哪些存储引擎?默认使用哪个?
  2. MySQL 引擎中,MySIAM 和 InnoDB 有什么区别,各有什么优缺点,如何选择?
  3. 什么是数据库索引,使用索引有什么优缺点?
  4. MySQL 中的索引是怎么实现的?
  5. B+ 树是什么,B 树和 B+ 树有什么区别?为什么 MySQL 要用 B+ 树实现索引?
  6. 数据库索引有哪些类型?聚簇索引和非聚簇索引有什么区别,各有什么优缺点?
  7. 什么是索引下推,它有什么好处?
  8. 什么情况下数据库索引会失效?
  9. 什么是数据库索引的最左匹配原则?
  10. 你平时是怎么使用数据库索引的,有哪些高效利用索引的经验和技巧?

实践操作

  1. 什么是存储过程?使用存储过程有哪些优缺点?
  2. MySQL 有哪些日志?请分别介绍一下?
  3. binlog 和 redolog 有什么区别?什么是两阶段提交?
  4. 什么是 undolog 日志?undolog 如何保证事务的原子性?
  5. 什么是 MySQL 的查询缓存,有什么优缺点?
  6. 如何对 MySQL 的数据进行备份和恢复?
  7. 什么是 MySQL 执行计划?如何获取执行计划并对其进行分析?
  8. 一条 SQL 语句在 MySQL 中的执行过程是怎样的?
  9. 以 MySQL 为例,有哪些数据库性能优化的方法?
  10. 如何定位 MySQL 慢查询?

背面试题的话,现在网上的资源太多了,搜一下就好:https://search.bilibili.com/all?keyword=mysql%E9%9D%A2%E8%AF%95%E9%A2%98

此外,编程导航网站上也有一些面试题和题解,供大家参考:编程导航 MySQL 面试题


加油小伙伴们 💪🏻!

更多编程学习资源

  • Java前端程序员必做项目实战教程+毕设网站
  • 程序员免费编程学习交流社区(自学必备)
  • 程序员保姆级求职写简历指南(找工作必备)
  • 程序员免费面试刷题网站工具(找工作必备)
  • 最新Java零基础入门学习路线 + Java教程
  • 最新Python零基础入门学习路线 + Python教程
  • 最新前端零基础入门学习路线 + 前端教程
  • 最新数据结构和算法零基础入门学习路线 + 算法教程
  • 最新C++零基础入门学习路线、C++教程
  • 最新数据库零基础入门学习路线 + 数据库教程
  • 最新Redis零基础入门学习路线 + Redis教程
  • 最新计算机基础入门学习路线 + 计算机基础教程
  • 最新小程序入门学习路线 + 小程序开发教程
  • 最新SQL零基础入门学习路线 + SQL教程
  • 最新Linux零基础入门学习路线 + Linux教程
  • 最新Git/GitHub零基础入门学习路线 + Git教程
  • 最新操作系统零基础入门学习路线 + 操作系统教程
  • 最新计算机网络零基础入门学习路线 + 计算机网络教程
  • 最新设计模式零基础入门学习路线 + 设计模式教程
  • 最新软件工程零基础入门学习路线 + 软件工程教程

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com