如何系统学习 MySQL?

2023-12-05

一、不建议这么学数据库

首先你要消除一个错误认知,即:

如果你想系统地掌握数据库常用的知识点,一定不要以网上各种散乱的文章为重点学习材料,理由有二:

  1. 网上的资料碎片化比较严重,对于新人来说,可能会造成盲人摸象的感觉,无法形成这块成体系的技术认知;

  2. 网上的很多数据库文章都是对诸如《MySQL技术内幕》《高性能 MYSQL》的二次理解和加工,很多文章的内容对原有数据库知识理解不到位、甚至理解出错。

二、建议这么学数据库

学习 MYSQL 数据库,建议方法:

  1. 找几本权威的数据库图书系统地学习一下,当然可以选择你感兴趣的部分,常用的数据库知识并不多;

  2. 自己安装一个数据库进行操作、实践。

例如,我在我的主机上安装了 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 优化技巧

以上属于对开发的基本的数据库知识要求,你可以找一本相关入门级的数据库图书推荐:

  • 《MySQL技术内幕(第5版)》

链接: https://pan.baidu.com/s/1KhEv1QkbJn82jcu5UrmH0Q 提取码: urdk

高级开发除了以上要求还要熟悉高可用 MySQL、主从同步、读写分离、分表分库等技术,这些技术的细节一定要清楚,它们是你成为技术专家或者高级架构的必备知识。我们在实际面试时,在讨论高可用服务服务方案时,很多面试者也会和我们讨论到这些技术,但是不少面试者只知道这些技术的大致思想,细节往往说不清楚,细节不会就意味着你的高可用方案无法落地,企业需要可以落地的方案。

这些技术我首推《高性能 MySQL》这本书,这本书高级开发者一定要通读的,另外还有 2 本非常好的图书也推荐一下:一本是《MySQL 排错指南》,读完这本书以后,你会对整个“数据库世界”充满了清晰的认识;另外一本是《数据库索引设计与优化》,这本书读起来非常舒服,尤其是对于喜欢算法和数据结构的同学来说。

  • 《高性能 MySQL》

  • 《MySQL 排错指南》

  • 《数据库索引设计与优化》

链接: https://pan.baidu.com/s/1cnRHbGFunvjCbn4hHFuPEw 提取码: bs4h

完整的书单在这里:

计算机必看经典书籍(含下载方式)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何系统学习 MySQL? 的相关文章

  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 在 MySQL 中存储表情符号的编码问题:如何使用 Prisma ORM 在 NodeJS 中定义字符排序规则?

    亲爱的 Nodejs 专家和数据库专家 我们在 MySQL 数据库中存储表情符号和其他特殊字符时遇到问题 我们使用 Prisma 得到一个错误 这是我们使用的 ORM 参数无法从排序规则 utf8 general ci 转换为 utf8mb
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • MySQL - 从临时表插入

    这看起来非常简单 但我坚持使用简单的插入语句 见下文 begin work CREATE TEMPORARY TABLE IF NOT EXISTS insert table AS select r resource id fr file
  • Windows 8.1 升级后 Apache 无法工作 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 今天从 Windows 8 升级到 Windows 8 1 后 Apache 不再工作 我上次从 Windows 7 升级到 Window
  • covertJSONtoSQL 在 NiFi 中返回空值

    我正在设计一项工作 使用以下命令将数据从 MySQL 中的数据库转移到另一个数据库 MySQL 执行SQL处理器随后将Avro转换为Json then 将Json转换为SQL then PutSQL如下流程图所示 将JSON转换为SQL返回
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 即使没有结果也返回一个值

    我有这种简单的查询 它返回给定 id 的非空整数字段 SELECT field1 FROM table WHERE id 123 LIMIT 1 问题是如果找不到 id 结果集就是空的 我需要查询始终返回一个值 即使没有结果 我有这个东西工
  • mysql转储到derby

    我正在使用 derby 在 eclipse 中进行开发 是否可以从 MySQL 转储表并以某种方式将其用于 derby 我知道 ddl 和 dml 对于两个 dbms 来说是不同的 但我正在寻找一种除了转储 导出之外的合适方法 我可以找到两
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • 如何通过Elasticsearch模糊匹配电子邮件或电话?

    我想通过 Elasticsearch 对电子邮件或电话进行模糊匹配 例如 匹配所有以以下结尾的电子邮件 gmail com or 匹配所有电话开头136 我知道我可以使用通配符 query wildcard email gmail com
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表

随机推荐

  • java高校学生实习管理系统springboot+vue

    高校学生实习管理系统管理员 学生 教师 管理员功能有个人中心 学生管理 教师管理 公告信息管理 实习申请管理 实习信息管理 实习成绩管理 学生可以注册 可以实习申请 查看公告信息 查看实习成绩 教师给学生添加实习成绩 审核学生实习申请 查看
  • C++ 游戏服务器方向需要多少功底?

    这篇文章是回答一位知友的提问 现在大二了马上升大三 就读于一个很垫底的211 专业是计算机相关的 但是对本专业内容不感兴趣 希望能从事c 后端的工作 对游戏比较有兴趣 但又不知道需要哪方面的知识 希望各位能给出一个客观的评价或者批评 帮忙指
  • C/C++ 函数调用是如何实现的?

    一 写在前面的话 C C 函数调用方式与栈原理是 C C 开发必须要掌握的基础知识 也是高级技术岗位面试中高频题 我真的真的真的建议无论是使用 C C 的学生还是广大 C C 开发者 都该掌握此回答中所介绍的知识 如果你看不懂接下来第二部分
  • Nodejs+vue+elementui+mysql酒店宾馆客房预订管理系统479v8

    对一个宾馆而言 一个良好的管理系统就等于优质的服务 赚钱的工具 为宾馆的发展带来光明的前景 模块介绍 1 用户注册与登录模块 员工和管理员注册与登录 个人信息修改等 2 个人中心模块 对个人信息进行修改添加等 3 员工管理模块 添加 修改员
  • 基于java的高校教职工档案管理系统springboot+jsp

    一 拟解决的关键问题 1 登陆模块 该模块对档案管理系统设定登录约束 并在该模块对档案系统登录用户进行权限分配 2 档案收集模块 对各类档案材料进行录入和入库 数据库 主要包括学历档案信息 工作经历档案信息 职称档案信息 职务信息档案 表彰
  • python+django民俗风俗习惯传统文化网站pycharm毕业设计

    1 所有记录信息要保持全面 信息记录内容不可以是空 2 各种数据间相互联系要保持正确 3 相同数据在不同记录中要保持一致 传统文化如果还用之前的只有线下进行黑板报形式的去实行 已经很落伍了 这样会导致了效率低下 而且 时间一长的话 积累下来
  • 计算机毕业设计python+django家庭养老服务管理系统vr18o

    快本居家养老系统管理员和工作人员两个角色 管理员功能有个人中心 老人账号管理 工作人员管理 老人档案管理 订单申请管理 检查检验项目管理 维修服务管理 订单信息管理 转诊信息管理 生活服务管理 服务记录管理 生活用品信息管理 药品信息管理
  • 基于Android的旅游服务APP系统

    收藏关注不迷路 源码文章末 文章目录 前言 一 项目介绍 二 开发环境 三 功能介绍 四 核心代码 五 效果图 六 文章目录 前言 本Android的旅游服务APP是根据当前我国旅游的大环境相关的内容实际情况开发的 在系统语言选择上我们使用
  • nodejs微信小程序+python+PHP健身房信息管理系统的设计与实现-计算机毕业设计推荐

    目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1 1背景及意义 1 1 2 国内外研究概况 1 1 3 研究的内容 1 第2章 相关技术 3 2 1 nodejs简介 4 2 2 express框架介绍 6 2
  • 计算机毕业设计推荐之java网上购物商城系统sringboot+vue_o9m4k

    系统使用过程主要涉及到管理员和用户两种角色 主要包含个人中心 用户管理 商品类别管理 热卖商品管理 投诉建议 系统管理 订单管理等功能 系统开发主要在 Windows 系统下进行 采用支持跨平台的 Java语言开发完成 因此可以运行在任意开
  • 大一大二的计算机专业同学应该学习什么?如何学习?

    本文是回答一位知友的提问 已经大一下了 现在在学 C 感觉书上很多术语都不懂 编程自己也得花很多时间才能做出来 但感觉自己身边的同学却什么都会 有什么好的建议吗 我一定努力改正 正文 一 可能的原因 调整心态 克服恐惧和畏难情绪 建议反思一
  • 前后端分离vscode+mysql校园报修维修管理系统nodejs+vue

    本基于nodejs的学校智能网上报修管理系统是根据当前高校网上报修相关的内容实际情况开发的 在系统语言选择上我们使用的nodejs语言 数据库是小巧灵活的MySQL数据库 本系统的开发可以极大的提高学校智能网上报修管理系统的管理效率 开发语
  • nodejs+vue+elementui电子数码产品商城推荐系统vscode毕业设计

    基于vue的电子产品推荐系统分为前台和后台两部 前台部分主要是让用户购买和查看商品使用的 后台主要是让管理员人员发布商品相关信息和管理订单使用的 前台部分包括用户注册登录 查看商品相关信息 查看公告信息 查看热卖产品 查看精品产品 将商品加
  • 基于springboot洗衣店管理系统

    收藏关注不迷路 源码文章末 文章目录 一 项目介绍 二 开发环境 三 功能介绍 四 核心代码 五 效果图 六 文章目录 一 项目介绍 本基于springboot洗衣店管理系统是根据当前洗衣店和用户的实际情况开发的 在系统语言选择上我们使用的
  • css设置渐变色

    css如何设置自定义渐变色 线性渐变篇 CSS渐变可以让你在两个或多个指定颜色之间显示平滑的过渡 CSS定义了三种渐变类型 Linear Gradients goes down up left right diagonally 下降 上升
  • python+django基于hadoop大数据的学习资源推送系统的设计与实现vue

    考虑到实际生活中在学习资源推送管理方面的需要以及对该系统认真的分析 将系统按权限进行划分 管理员登入使用本系统涉到的功能主要有个人中心 用户管理 学习视频管理 学习类型管理 系统管理等功能 管理员用例如图3 1所示 图3 1 管理员用例图
  • springboot+jsp高校大学生心理咨询系统

    1 课题目的及意义 随着全球化的发展 各国对高等素质的人才需求越来越大 培养高素质的人才 顺应世界的需求 就要求高校培养的不单单是德智体美劳德人才 还需要心理健康的人才 加强大学生心理素质教育是时代发展的需要 也是中国高等教育改革的需要 近
  • 基于java的可视化高校学生宿舍公寓管理系统springboot+vue

    实现了用户在线选择试题并完成答题 在线查看考核分数 管理员管理班级管理 每日打卡管理 字典管理 访客管理 宿舍缴费记录管理 离校登记管理 宿舍管理 宿舍管理员管理 物品进出登记管理 学生管理 住宿信息管理 管理员管理等功能 管理员功能 1
  • 单个 epoll + 线程池与每个线程一个 epoll 这两种架构哪个更适合大量短连接的场景?

    本文是回答一位知友的提问 单个 epoll 线程池与每个线程一个 epoll 这两种架构哪个更适合大量短连接的场景 不少教程上都提到线程池适合大量的网络短连接的任务场景 但我总感觉这个优势有点站不住脚 单 epoll 线程池模型 主要考虑到
  • 如何系统学习 MySQL?

    一 不建议这么学数据库 首先你要消除一个错误认知 即 如果你想系统地掌握数据库常用的知识点 一定不要以网上各种散乱的文章为重点学习材料 理由有二 网上的资料碎片化比较严重 对于新人来说 可能会造成盲人摸象的感觉 无法形成这块成体系的技术认知