1.为什么要学数据库?
学习各种后端编程语言如Java/Python/C++等,或者现在流行的大数据,或者做数据分析等工作,都离不开数据库。比如Java开发系统的时候,程序员经常调侃自己做的就是“增删改查”,这里面增删改查其实就是使用Java去对数据库做各种操作,比如insert, delete, update ,select。
对应到我们作为用户平时使用的APP的场景就是:
发一个帖,系统代码就执行一条SQL语句,INSERT INTO 表名称 VALUES (值1, 值2,....)。
还有我们经常听说的一个梗:程序员删库跑路--drop database,.rm -rf *(非数据库操作)等等。
文章有点长,如果需要下文提到的免费书籍资料,可以直接点在公众号后台回复:数据库, 即可获取。
2.什么是数据库?
学术理论说话这个直接百度就行,简单理解数据库就是用于存放数据,一般分为关系型数据库和非关系型数据库。
1)关系型数据库就是以关系代数为基础。在SQL语言中都能找到关系代数相应的计算。其以行和列的形式存储数据,一张表类似excel的表格和R/Python的DataFrame。关系数据库=多张表+各表之间的关系
主流的关系型数据库:MySQL, SQLServer, Oracle,PostgreSQL 等。
这里入门建议学习MySQL,SQL语言都是类似的。SQL 是用于访问和处理数据库的标准的计算机语言。后续根据需要再学习非关系型数据库比如Redis或者MongoDB。
2)非关系型数据库
键值KeyValue数据库:这类数据库会使用哈希表,哈希表中有一个特定的键指向一个特定的值,KeyValue的特点是去中心化,不涉及业务关系。代表Redis。
列数据库:代表HBase,Cassandra
文档型数据库:代表MongoDB
图形数据库:代表Neo4j
3.SQL语言基础
以一个思维导图做总结:
4.网站
官网:
/
基础语法学习:
/mysql/mysql-tutorial.html
刷题练习(一个足矣):
https://leetcode-/problemset/database/
5.书籍
入门:《MySql必知必会》
入门书里面比较推荐的,内容不多,但作者会把一些很比较常用的东西先介绍给你,鼓励你去动手写写,把复杂的东西讲得通俗,非常适合0基础入门。
进阶:适合DBA
《高性能MySQL(第3版)》、 《MySQL技术内幕》,《MySQL性能调优》,《MySQL技术内幕 InnoDB存储引擎》,《深入理解MySQL》
最后:建议想系统学习还是购买纸质书籍