软件工程领域内所有的系统,都应该从这两个问题开始——
1.“这是什么?“
2.“为什么要有这个?”
那么第一个问题——
什么是数据库?MySQL是什么?SQL是什么?
数据库,用来存储数据。由表组成,可以有0到n张表,
表就像是Excel,它适合存放一些简单的文字信息——
一个人的身份证号码
电话号码
姓名
Excel不适合存放什么信息呢?
照片
电影
小说
这些单个 大体量的文件对象,不会放在数据库里。
比如说,淘宝上所有的商品,背后的商品信息、店铺信息、销量等数据,就躺在数据库中的表格中,但是店铺上的宣传视频、图片、音乐,不会放在数据库中。
世界上有各种各样的数据库,但幸运的是,你只需要学会MySQL基本使用方法,就可以应对绝大多数的场景。
MySQL是什么?
MySQL是一种数据库软件,数据库和MySQL的关系,就像是聊天软件与QQ、微信的关系。
世界上有各种各样的数据库,比如Oracle、MySQL、SQL Server等等,一般互联网公司都会用MySQL,因为它是免费、使用范围最广。
一般面试,也只会问及MySQL相关的知识。
SQL是什么?
是一种编程语言,就像Java、C++、Python,但是它特别简单。
SQL是用来操纵数据库的一种语言。
只需要上百个英文单词,SQL就可以对数据进行让人眼花缭乱的操作,非常容易上手。
总结一下,数据库是一种数据存储系统,其中最有代表性的是MySQL,它是使用最广泛的数据库,我们使用SQL语言对他进行操作。
第二个问题——
为什么要有数据库?
因为Excel不能供一个大型系统使用,它的性能不够好。我们需要一个可以供多人同时访问、操纵、安全的数据存储系统。
通俗来说,数据库是一个共享的硬盘,可以多人同时地进行访问、更改数据。在数据量很大(0~300G)的时候,数据库的性能将会非常地好。
(想象一下一个几十G的Excel,操作他将会非常困难)
先给出我的核心观点:学习,无论你是学什么,也无论你有没有基础。思考永远是第一位的,有些知识你没接触过不要紧,用不着害怕,也没必要害怕。重要的是一秒钟也不要停止思考,问题要想透彻,正所谓磨刀不误砍柴工。尤其是作为工程师,要有打破砂锅问到底的精神,否则你怎么学都没用。
首先概览下mysql的知识体系:
基础:
sql语句
表结构设计
调优:
索引、慢查询优化
配置参数调优
核心原理:
InnoDb存储引擎 (包括隔离级别、事务、锁、缓存池、回滚日志等等)
Mysqld (包括连接管理、进程管理、查询缓存、查询优化、日志等等)
架构与运维:
用户与权限、安全
备份与恢复
日志
分布式与高可用
对于零基础的童鞋:
首先,学习基本的SQL语法。完成这个后,你就可以编写SQL语句了。
这一步推荐:W3Schools的 SQL 教程。
其次,学习数据库的主要功能和使用方法,比如用户相关或者权限相关等等。
我推荐两本书:
一、《MySQL必知必会》 这本书讲的非常全,从基本概念,到查询到插入新建表,用户的管理,都有具体的例子,非常适合没有任何基础的同学来学习Mysql,总之这本书学习的方法就是:1、十分钟了解下数据库的基本概念 2、找到练手的数据库 3、对照着上面的内容去敲。本书里也有大量的内容是讲sql的,可以结合w3c的sql教程一起,有取舍地看。
二、《数据库系统概念》这本书是dba必看的。
看完这些并且实践+思考之后,可以算入门了。