数据库零底子该如何入门?全面学习路线 + 数据库教程 ...

打印 上一主题 下一主题

主题 1701|帖子 1701|积分 5103

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
先容

数据库就是存放数据的库,负责存储、管理和检索数据。
我们平时看到的网站上的数据,根本都是存放到数据库中的,在用户需要的时候,再通过后端程序从数据库中取出来。
因此,数据库是后端开发的必备技能,也是焦点技能! 无论你学什么语言的后端,数据库肯定都要好勤学,也是口试的重中之重!
数据库又分为关系型数据库和非关系型数据库。关系型数据库适用于存储相互之间有关联的数据,比如做一个弟子管理系统,要存储弟子、班级,一个班级有多个弟子,这就是一种关联关系,关系型数据库典型的技能是 MySQL;而非关系型数据库紧张用于存储零散的、相互独立的数据,典型的技能是 Redis。
本路线我们紧张学习的是关系型数据库,而且以最主流、学习本钱相对更低的关系型数据库 MySQL 为主。假如要学习非关系型数据库 Redis,请移步至:Redis 学习路线
   注意,MySQL 是一种数据库管理系统,但是不能说数据库就是 MySQL!
  就业方向

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

  • 数据库管理员:有些公司也把这个岗位叫做 “数据库运维”,顾名思义,工作职责就是负责管理和维护数据库。也包括数据库的备份和规复、容量规划、优化等等。一样平常小公司不太会有这种岗位,可能是一个运维就把各种公司用到的服务全包了。
  • 数据库开发:和后端开发的职责有肯定交集,都会写 SQL。但是有些公司的业务 SQL 可能非常复杂,这种情况下就有专门的数据库开发同学来主导编写 SQL 语句,然后再递交给后端去接入到系统中。这类岗位要求你编写 SQL 的能力必须非常强!
  • 数据分析:负责从数据库(数据堆栈)中提取数据,从中得到更有价值的信息,紧张的工作也是写 SQL 查库。但这类岗位相对更卷一些,而且需要肯定的数学底子。
  • 大数据开发:和数据库开发类似,都是编写 SQL 和程序从数据库中查出 / 盘算出需要的数据。但是大数据开发的要求会更高一些,因为他们每每面对的数据量更大、面对的数据库更多样、需要思量的性能和存储问题更多、编写的程序更复杂。
此外,另有数据科学家、数据挖掘、云数据库工程师等等,坑位相对更少、要求相对更高,不做过多先容了。
大纲

对数据库的学习紧张分为 4 部门:

  • 数据库理论
  • MySQL 入门及实践
  • SQL 语句
  • 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 调优

    • 软件层面优化
    • 硬件层面优化
    • 设置优化
    • 索引优化
    • 表和字段设计

  • 数据备份与规复
  • 主从复制
  • 读写分离
  • 分库分表
经典口试题

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


  • 什么是数据表、字段、主键、外键、视图?
  • 什么是数据库的三大范式?
事务和锁


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


  • MySQL 支持哪些存储引擎?默认利用哪个?
  • MySQL 引擎中,MySIAM 和 InnoDB 有什么区别,各有什么优缺点,如何选择?
  • 什么是数据库索引,利用索引有什么优缺点?
  • MySQL 中的索引是怎么实现的?
  • B+ 树是什么,B 树和 B+ 树有什么区别?为什么 MySQL 要用 B+ 树实现索引?
  • 数据库索引有哪些范例?聚簇索引和非聚簇索引有什么区别,各有什么优缺点?
  • 什么是索引下推,它有什么利益?
  • 什么情况下数据库索引会失效?
  • 什么是数据库索引的最左匹配原则?
  • 你平时是怎么利用数据库索引的,有哪些高效利用索引的经验和技巧?
实践操作


  • 什么是存储过程?利用存储过程有哪些优缺点?
  • MySQL 有哪些日志?请分别先容一下?
  • binlog 和 redolog 有什么区别?什么是两阶段提交?
  • 什么是 undolog 日志?undolog 如何保证事务的原子性?
  • 什么是 MySQL 的查询缓存,有什么优缺点?
  • 如何对 MySQL 的数据举行备份和规复?
  • 什么是 MySQL 实行计划?如何获取实行计划并对其举行分析?
  • 一条 SQL 语句在 MySQL 中的实行过程是怎样的?
  • 以 MySQL 为例,有哪些数据库性能优化的方法?
  • 如何定位 MySQL 慢查询?
背口试题的话,现在网上的资源太多了,搜一下就好:https://search.bilibili.com/all?keyword=mysql%E9%9D%A2%E8%AF%95%E9%A2%98
此外,编程导航网站上也有一些口试题和题解,供各人参考:编程导航 MySQL 口试题

加油小伙伴们
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表