数据库这门课为什么这么难学,该怎么学?

[复制链接]
查看8620 | 回复20 | 2021-6-7 13:41:21 | 显示全部楼层 |阅读模式
我们用的教材是:
123462109 | 2021-6-7 23:01:38 | 显示全部楼层
给亲推荐一系列数据库的免费学习课程,希望能够帮到亲。0 @5 r* A' g. \- w. k$ S6 `, Z
先来个脑图0 C4 ]+ @2 R6 _) s& a7 Z
数据库这门课为什么这么难学,该怎么学?-1.jpg 课程一:《MySQL数据库入门学习》
7 _" k4 [7 `$ Y2 ~. I% Q免费学习地址:https://edu.aliyun.com/course/153/lesson/list?utm_content=g_1000055517+ A) C* G4 P7 j3 W/ z
课程介绍:本课程通过最流行的开源数据库MySQL带你了解数据库的世界。
6 u& i/ G9 x; [* e0 }
$ ~* u; s8 ]0 D" l8 i7 j) U2 r  N0 S* m" H" |9 E6 z: f9 i: B4 E2 ?
课程二:《Redis数据库入门》
- b4 [$ w' Y+ m& s# g  D免费学习地址: https://edu.aliyun.com/course/22/lesson/list?utm_content=g_10000555188 ?* T6 f/ I: t( P
课程介绍:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。$ b, p+ {$ n; `1 d2 X1 z8 I4 v
Redis 是一个高性能的key-value数据库。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
2 B& X1 x7 X* @+ V( O3 [. y$ k8 Y4 [
  \" A# P7 K* n9 G
5 A: y& F2 _$ T课程三:《分布式数据库技术与实现》
% K. {) N/ d7 X, @- N: \+ k, q! ?免费学习地址:https://edu.aliyun.com/course/37/lesson/list?utm_content=g_10000555198 V5 a5 {0 C4 D* ]' i# N
课程介绍:本课程主要讲解分步式数据库系统的主要功能和实现方式,课程中首先阐述传统数据库所存在的问题,结合此问题说明分步式数据库系统如何解决这些问题,以及阿里云平台下分步式数据库系统如何优化这些问题。& W8 |, T/ ^+ m+ L
/ t" l2 k8 b: ^2 I( Z! N

! I) _; X& ~  H7 l+ @" `" F课程四:《PostgreSQL数据库从入门到精通》
. ~& a& u# p" k; x5 y" [2 S免费学习地址:https://edu.aliyun.com/course/52/lesson/list?utm_content=g_1000055520
9 t( G% |7 e6 }; `* `  U课程介绍:PostgreSQL被誉为“世界上功能最强大的开源数据库”,是以加州大学伯克利分校计算机系开发的POSTGRES 4.2为基础的对象关系型数据库管理系统。
/ q5 a  s& h- E& t; mPostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如,通过增加新的数据类型、函数、操作符、聚集函数、索引。
9 g2 }" e; h, `! n8 F/ w开发者可以免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。
7 \3 ?) }% \' o7 |# R- D. O- t5 ?0 B

# Q) P3 g1 R* K1 k  P) P$ x1 n课程五:《SQL Server on Linux入门教程》
' Z7 b% q" f8 t% J' N免费学习地址:https://edu.aliyun.com/course/51/lesson/list?utm_content=g_1000055521. a9 ~5 K0 h, j$ \8 }
课程介绍:SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。
6 b7 }! v: L7 l) D本课程主要介绍SQLServer On Linux的基本知识。
. Z% ]( m0 x# N0 O: [$ H9 N) l# j% e) B4 j5 c6 n2 y2 F7 w

6 n. q2 `+ Z& k: R1 Q课程六:《HBase入门教程》
2 z0 z9 [& ?; p& [免费学习地址:https://edu.aliyun.com/course/73/lesson/list?utm_content=g_1000055522
9 o/ L3 w# `2 s2 J! O" A6 l9 K课程介绍:HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。
4 h+ }5 {: q4 e6 e- Y* {/ zHBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
神斧胃 | 2021-6-8 00:40:40 | 显示全部楼层
数据库一点不难学,问题是很多教材的理论和实践脱节。
& P3 E% @7 B, R: d: I
( k, H) N- p- n3 x; ^  s我本科和研究生期间都上过数据库课程,多是讲理论,不讲实践,其实很多理论是制造数据库软件的人才需要深挖的(我不是说这些知识理论没用啊),如果从实用角度出发,直接找一个实际项目用某个数据库开干要学得快得多。+ c- C1 g# ~/ Y1 T5 D. \9 d
6 S5 x4 v2 a8 ~+ B1 a' f
在实际项目中,往往也不会严格遵守第三范式,这进一步让人觉得书本上学的和工作不一样,这也是教材很让人遗憾的一个地方。
4 p$ x2 D6 q! P! Y8 Q+ e/ M: }4 d7 C# P5 T6 H  [. g& @% ?& E
总之,学数据库先明确自己的目标,是要学做一个数据库软件,还是学做一个使用数据库的软件,目标明确了好办事。
康姆福特宝康x | 2021-6-8 02:08:22 | 显示全部楼层
数据库这个东西,(曾经)就是一个数据管理的系统级软件,事实上,Oracle数据库是可以不要操作系统支持的。自NoSQL兴起后,数据库就是一个专门用于数据管理的计算机系统,NoSQL多半是分布式的,当然memcached、Redis之类的产品或系统可以配成单机。
) i# w. f& ]  U: @# h# ]" Q在数据库的教科书,DB、DBMS、DBM这几个概念是不同的。但是,我觉得这样不对。也许在当时,这种认知有一定的道理,但是,到了今天,层次结构已经成为系统设计的主要方法,所以,我们应该说,数据库是一个层次结构的系统,类似于我们把计算机系统划分为四个层次、把TCP/IP网络划分为五个层次,以及B/S系统的层次化设计办法。
! Z+ k# U5 g5 F* K0 O  t. L从数据库软件及其应用的设计需求来看,应该满足数据管理、系统软件、资源管理、数据访问方法、计算处理、编程接口等。作为一个计算机系统,数据库同样采用分层设计,同样是一个四层结构的计算机系统。所以:
, z$ Q) e9 @% Q+ e
    既然是数据管理,那么就必然服从数据结构的一般原理。既然是系统级软件,那么必然服从软件设计的一般原理。既然数据是一种计算机资源,那么必定服从资源管理的一般原理。既然有数据访问,那么必然有数据访问的空间邻近性和时间邻近性。既然是一种计算,那么必然服从一种计算模式(不同的数据结构,计算模式不同)。既然提供了一种语言,那么必然服从语言设计的一般规律(哲学理念)。既然数据元素之间有关系,那么必然要提供描述这种关系的方式。既然是一个计算机系统,那么同样是一个底层为硬件,顶层为应用的层次结构。既然是一个计算机系统,那么同样讲究透明性、虚拟性。既然是有并发处理,那么就需要考虑数据隔离,也就是共享资源中的互斥或同步问题。
    - W) n9 w) T' ~/ ]  z4 p  e
好象就这么多吧,如果数据结构、操作系统、离散数学、软件工程、计算机组成等几门基础课程功底好点,稍微点拨一下,然后就可以通过项目自学了。
3 W& r; F1 L& ~  m6 U8 o, h好吧,数据库之所以难学,是因为写书的人、讲课的人、培训的人,都是稀里糊涂的。$ h( J8 ~/ a- g( _& k" h5 O# ^: D
---------------------------------------------------------------------------------------------
( I3 _% Y6 w6 ?% ?9 P! M1、一般数据库分为三~四门课程:数据库概论,数据库应用和数据库原理,外加一门数据库课程设计。不过,其它课程也很重要。
& k, c- F/ F3 B5 w6 L4 m6 a2、从整体上看,数据库是一种针对数据管理需求的特定的计算机系统。先要了解一下背景。有几个方面,一个数据管理的需要,一个是底层硬件的特性,一个是数据结构,一个是系统级软件的设计。事实上,数据库和数据结构,有另外一个相同的说法,数据的管理和处理。然后,数据库几乎总是在块设备(磁盘)上(即使是最近几年SSD比较便宜了,但是还是有大量的商用系统使用机械硬盘)。
! P1 j# `8 [& M2 i' I: x1 V( L3、数据库有两条路径,一个是从应用开始学,一个是从理论开始学。当然,最后应该能够把理论、应用结合起来,并且穿插学术研究和项目实践的历史发展及其背景。由于计算机系统的设计必然是透明的、虚拟的,所以从应用层开始学起,也没有问题。$ v! ]# h! z. b3 Z
4、从应用来看,数据库是为了满足是数据的统一管理的需求。为了满足这个要求,数据库必须向用户提供数据类型的定义方法、数据的操作方法、数据的一致性的保障。8 r  \9 v- p) D" n$ d* }! t' X1 H
5、从使用的角度来说,首先就是要掌握如何运用数据类型的定义方法、数据的操作方法来管理数据,并且在使用过程中,遵守一些必要的数据管理的规范。因此,根据项目,建立数据库、数据表、选择恰当的数据类型、遵守相关的规范。在这个过程中,掌握E-R图这个工具,对项目中的数据进行分析,即提取实体、实体的属性、实体的关系。
* w; F* P* H; y" `6、建库建表之后,就要掌握相关的数据操作方法和数据库内建的编程语言(存储过程),解决具体的问题。
2 W# a) w% X+ G7、由于数据是存储于外存中的(不考虑内存数据库),根据计算机组成原理,我们知道,外存I/O性能是系统瓶颈。在一个给定的外存设备的条件下,如何提高数据库的性能?所以,我们就要根据应用的特性,合理地进行设计。这个时候,就涉及到数据结构了。7 E9 }. C' o7 z5 ?0 s
8、我们知道,数据结构的存储结构,影响到数据操作的性能。对于外存中的数据,为了提高系统的性能,多采用索引结构,以加快数据项的定位。有的索引结构,写性能优于读性能,或者读性能优于写性能。因此,我们应该进行分析,哪一张表的哪一列应该建立什么样的索引。
) n5 l& r% j6 b% Z6 j" K) w9、在数据存在多张表的情况下,为了进一步提高系统的性能,我们还要推算数据表的多表操作时的I/O情况,依此优化数据表的索引设置。通常,我们分析多表操作中的关系演算过程,对多表操作的关系演算过程进行优化。
+ Y3 c9 }+ A8 f+ S* z& k10、某些实际应用(事务处理)要求数据操作是原子性的(类似于操作系统的PV操作),所以,数据库必须支持事务处理的要求,要不所有的数据操作全部成功,要不所有的数据全部保持原始状态。
9 x/ n( q" m/ W* Z! u11、数据库应用基本上是多用户应用,所以,数据库必须支持并发性。按照操作系统,我们知道,数据也是一种资源。所以,必须对资源的访问进行控制,也就是资源锁和互斥锁。/ N- f! P0 T7 x" J* j* f" M
12、当事务处理和并发控制结合在一起时,事情就变得复杂起来。再加上系统性能的考虑,也就有了悲观锁和乐观锁。3 x# c; c. h7 a( h3 U3 m5 g( E
13、系统级软件,往往采用分层设计。同样地,数据库也采用分层设计理念,类似于计算机网络等其它信息系统。
9 p9 s. j9 J, I; q+ x(修改中)
7 b$ a& K! R  r+ j% r5 `) l* ~5 A- m14、再次强调一下,数据库,实际上就是一种特殊的数据结构。回忆一下,抽象数据类型,我们利用抽象数据类型描述现实世界中的数据,数据元素之间的关系,数据的操作。我们要给出抽象数据类型的逻辑结构和存储结构。) q, e8 G( a% H2 ~" v
15、当然,由于数据库是分层设计,所以存储结构和逻辑结构是位于不同的层次。数据结构的逻辑结构对应了数据库的信息世界,数据结构的存储结构对应了数据库的机器世界。
- Y% H4 r6 D$ {) g/ p, O# w7 Z16、对于CRUD,可谓是非常眼熟,数据结构的最常见的操作。
0 v9 a. a1 p0 C9 W17、既然是一种数据结构,那么,数据库的操作也具有时间开销和空间开销。时间开销和空间开销,是数据库操作的时间复杂度和空间复杂度。
, z- Q: @% w7 B: w6 o; \4 v& F% i3 }18、因此,即使作为一个普通的应用层开发人员,也应该对数据库的底层有所了解,以降低数据库操作的时间开销和空间开销。
- e0 I  r- Y1 U4 y19、SQL的设计理念,我记得知乎还是哪里有一个高手回答过。作为一门语言,有其哲学理念。理解其设计理念,有助于我们掌握这门语言。对于语言理解不深,就不抛砖引玉了。
2 V5 y, C2 a0 t, n0 n4 ^4 D20、在逻辑上,库-表-行-列-项,构成一种层次结构。数据库的数据,固然是一种数据结构,但是,为了进行管理,也设计了一种逻辑上的层次管理方法。有点象文件系统的层次结构——目录和文件结构,当然是在逻辑上的层面。比如库—表—行—列—项。每一种具体的数据库,它们的具体设计方案不同。/ Q; ]8 M4 A  K2 r$ j4 c: k: N2 c0 G
21、在分层设计中,有一种独有的概念,视图。视图是一种逻辑上的概念,是一种对表进行操作的结果。这个结果是一个虚拟的表,并不存在于物理存储空间。6 i" u- v+ {. x3 }' N7 K+ p0 g3 Y
22、在分层设计中,为了提高系统的性能,因此也设计了特定的cache方案。
/ `& T6 h: i- w7 z& M23、数据库中的数据是一种资源,根据操作系统中的进程互斥和同步的原理,在并发访问时,就会因为同时访问资源而导致各种问题。
( S. ]% Y( Q* q) e( M* |24、此外,从系统的角度来说,还应该提供安全。# X9 a' D8 O) ]/ O3 L% a) v
25、对于优化,主要是指关系代数的优化,也就是尽可能减少时间开销和空间开销。
9 ]8 U' }5 ~9 `" `7 q- M嗯。好象如果其它课程学得好,数据库也就这点东西了。
毛卫华 | 2021-6-8 04:04:24 | 显示全部楼层
数据库难学吗?我觉得也没有那么难。数据库的体系的搭建应该是非常有趣而且自然的。如果你觉得难学,那很可能是没有用对资料。这里推荐一个很好的数据库学习资源,PingCAP的一个github项目:
+ Q& B  x+ r. a+ Q! h/ b. I# ghttps://github.com/pingcap/awesome-database-learning强推一下里面提到的courses:2 n% S: t7 C3 d2 m2 o
CMU Database Systems (15-445/645), thanks to Andy Pavlo
# v* m! k2 G" j0 g+ sCMU Advanced Database Systems (15-721), thanks to Andy Pavlo
1 i! K: I* t' J1 Q$ aUC Berkeley Introduction to Database Systems
3 ]: A( ]. S8 r  J2 @7 R; d2 i0 r' S1 K; xStanford Database System Implementation
, V, S! p3 M3 u% }* SLet's Build a Simple Database, thanks to cstack
每一门都是非常有趣非常好的课程,学习的话一定要完成作业。从工程角度而言,几门导论课扎实地学了一门之后,找实习/工作应该就不愁了。从research角度来说,Andy的两门课程学得扎实了之后,甚至可以直接尝试自己想idea发sigmod/vldb了。
天使卡 | 2021-6-8 07:05:48 | 显示全部楼层
在开始接触其概念和名词前,先问自己个问题,为什么需要有数据库?把数据存在一个文件里不行吗?4 c1 ?/ a7 \1 H3 h3 k

) l0 g+ J/ T$ S9 v想想如果没有数据库,用一个文件怎么组织存储数据,如何满足不同应用的需求,带着这个问题去学习。到最后,可能你会发现你的那个文件,已经变成一个数据库了。) X# F) q- y0 j5 t# Y  H! X, S- I
9 l7 L- ]3 z5 m
也许还可以帮助理解nosql的database。
漠雨1 | 2021-6-8 18:18:57 | 显示全部楼层
数据库这门课程的知识点很多,也很零散,作为初学者,我们可以从2方面进行基础学习:! ~$ b- K- I7 ?2 d
1、对数据库有基本的了解
9 t5 s0 D' u6 V0 Y2 C# p2、掌握SQL语言及数据库软件的使用
一、对数据库有基本的了解
% P, n! Q+ W- m3 o5 C6 r8 A4 ?- V7 G' Z: d+ f
理论知识是学好数据库的基础,首先要对数据库的有一个初步的了解,这些概念性的东西我们不用记,只是留下一个大的印象就行。
& G$ y3 u! x5 u8 t( @1、了解数据库4要素,知道他们指的的什么,有什么特点:1 ?3 J& o) s2 `9 _% o, _* m

) X' J+ r# @; [7 S& q
    数据(Data)数据库(Database,DB)数据库管理系统(Database Management System,DBMS)数据库系统
    3 ^% P0 ~9 m9 ~8 {( f
1.数据(Data)
" j' y) [1 [0 Y6 Y7 r. R数据(Data)是描述事物的符号记录,是数据库中存储的基本对象。数据在大多数人头脑中的第一个反应就是数字。其实从广义上说,数据的种类很多,文字、图形、图像、声音、语言、学生的档案记录、货物的运输情况等都是数据。( L- W: J% _7 g! W; t3 ?
2.数据库(Database,DB)
' N% @* @  }: f数据库(Database, DB)是存放数据的仓库。只不过这个仓库位于计算机存储设备上,而且数据是按一定的格式存放的。
, U0 W! z0 {/ q. s' S" o! l数据库本身不是独立存在的,它是组成数据库系统的一部分,在实际应用中,人们面对的是数据库系统(Database System, DBS)。
* I4 T$ H7 B, `3.数据库管理系统(Database Management System,DBMS)
2 T3 ]2 l6 U8 \数据库管理系统(DBMS)是我们熟悉的Accessk、MySQL、Oracle等数据库的统称。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。& d8 E( `4 p! L- \1 o& R/ K: a5 s* N3 A
4.数据库系统(Database System)
+ e" A% B8 t" l$ |. \. B数据库系统一般由数据库、数据库管理系统(及开发工具)、应用系统、数据库管理员和用户构成。# D: X, L6 y2 T! o
数据库这门课为什么这么难学,该怎么学?-1.jpg 其中数据库管理员(Database Administrator, DBA)是负责数据库的建立、使用和维护等工作的专门人员。- p9 z6 U8 m3 x$ ]
2、了解数据模型的概及常用几种数据库模型9 s3 W+ r0 e, Y: e& l& E3 n% S
7 Q1 Q6 _' @! `5 E
1、数据模型" u- V8 X; J" L4 |/ M9 D
数据不能直接从现实世界存放到数据库中,它需要经过人们的认识、理解、整理、规范和加工。而数据模型就是对现实世界的数据特征的抽象,数据模型要满足三个方面的要求:
. c% s, X* Q+ f% H2 [
    能比较真实的模拟世界容易被人理解便于在计算机上实现8 ^1 `9 x  G7 ^
不同的数据模型具有不同的数据结构形式。目前常用的数据模型有3种:层次模型、网状模型和关系模型。其中层次模型和网状模型统称为非关系模型。
( L3 `$ v' {- p/ j由于采用的数据模型不同,相应的数据库管理系统(DBMS)也不同。) K4 B& r( S# C. |1 j6 C- S2 e; z
在当今的互联网中,最常用的数据库模型主要是两种,即关系型数据库和非关系型数据库,这两类最重要的也是目前实际使用最多的数据库种类。
3 Y5 ^' L5 g! e: l+ Y2 m
关系型数据库
关系型数据库,是基于表结构的数据库,其利用SQL语言来对数据进行定义和操作。
/ g+ `# ^' X+ w8 |, B; m8 M* d关系型数据库存储的数据往往是简单且静态的,比如我们常见的excel表格,这种数据库具有结构化程度高,独立性强,冗余度低等等优点。
& X( @# P1 H- y2 F7 d7 w. J- O5 ]现在市面上,比较常见的关系型数据库软件有MySQL、MSSQL、Oracle等等。+ V8 J6 R+ ?) B' |; T8 l) V# k
非关系性数据库
非关系型数据库一般指NoSQL,可以为我们提供动态的Schema来对非结构化数据进行存储。
+ L+ \2 j) J6 h8 ]1 R# s8 e在NoSQL中数据可以以多种方式存储,例如:列存储、文档存储、图存储或键值对存储等等等等。市面上比较常见的NoSQL有MongoDB、Cassandra等等。
1 y; b$ u- d* O- ~说到这,可能就有同学要问了?有没有一种数据库,是集百家所长,介于关系型数据库与NoSQL之间呢?
3 |' {5 f: b+ O3 N; ~, q2 v8 E答案是肯定的, PostgresSQL就是一个很好的例子。PostgresSQL是一款对象导向的数据库系统,适用于大量的半结构化数据的存储。PostgreSQL也是如今市面上使用最广的一款数据库软件之一
8 L5 m  r+ B4 k我们该怎么从关系型数据库和NoSQL中进行选择呢?
& b4 x- O7 E9 D% Z* g# w这个问题的答案就要取决于我们的应用场景。% `* c, V1 _( l% E+ J) }6 K: |6 r
一般来讲,关系型数据库是垂直可扩展的,这就意味着我们可以通过在一台数据库服务器上对CPU,RAM等硬件进行提升,以提升关系型数据库的负载能力。2 C; _3 z% z9 u
而另一方面,NoSQL是横向可扩展的,也就意味着我们可以通过在我们的NoSQL中加入更多的服务器来对其进行扩展。' g' T9 R  V4 _4 H; t- t
所以,关系型数据库更适合于存储大规模的,具有简单并且相对静态结构的数据。而当我们需要存储的数据是复杂的,一直在变的,需要我们的数据模型变得更灵活的时候,NoSQL就是一个很好的选择了。
1 F8 L% f6 ?- \& b) U2 Q8 ~( ^' ]进一步来讲,当我们的数据只有一定的个体或者应用来访问时,关系型数据库仍然是一个很好的选择。- _9 V1 \) e" l5 F& V8 ^2 k
而如果说我们的数据的访问个体数或者应用数会快速增长时,就可以用NoSQL,因为这意味着我们可能会接收到更多的半结构化或者非结构化的复杂数据。同时NoSQL的横向扩展特性也使得它的扩展比关系型数据库要更加便宜。0 k! F. \. I5 v/ U
二、SQL语言及数据库软件的使用0 u, D) X2 c! N( d
4 \% w6 k( Y! ?% o* L  N  @4 `+ Z
SQL是一种结构化查询语言,也是一种专门用来与数据库沟通的语言,学会了SQL语言,我们就可以愉快的从数据库管理系统中查找、编辑数据。
' f2 G8 o7 d# r" n! T) b学习SQL语言最大的难点不是找资源,也不是入门难,最难的是如何找到一个适合自己的系统的学习路径,并坚持。
7 ~0 y) W  M# x0 t4 F我们可以从以下几个步骤开始学习:# u( o9 j5 u) ^! J0 U7 s: T" \5 [
1、看书了解SQL语法        " c6 y9 D' Q$ n3 k' M" H
看系统的书或者视频,比如《sql必知必会》或《sql基础教程》,这一步主要是让自己对SQL语言的语法有个大概的框架。
' A0 L" I  G$ k& _0 ~/ f遇到看不懂的东西,直接先略过,完成比完美更重要。这样看完后,我们可能只懂了少部分,更多的是云里雾里。
" P9 A  C2 }) e. J不过,没关系,因为这个状态才是正常的,学任何东西想要一部到位都是不可能的,千万不要以天才的标准来要求自己。" e9 C  |8 g; C: P  T' g5 c2 j
2、跟着敲例题2 y7 T; H2 C' ?3 {. o# q3 d1 h
我们学习的SQL最后还是要上级操作的,所以第二步就是选择一个线上编编辑器来练习教程中的例题或习题,动手做过后,会记得更清楚。
; h& z! `3 q4 d3 m在这个过程中,如果有不能实现的code,直接百度就能找到答案。! q5 k( x5 k3 ]" S2 J# A
3、刷题库题, D% E; S$ E" @( Q; M5 q, Q  c' D. k$ g
刷完例题或习题后,我们对SQL语言语法这一部分就了解得差不多了,接下来就是大量刷题库进行巩固,经过这一步,我们就能轻松应对考试或面试的习题。
: I# }: f7 x2 y9 G- y& T* `4、选1种数据库软件开始实践8 ^5 D" _; ^0 y9 _1 K( @- q+ F% r
掌握了SQL语法后,我们就要选择一个具体的数据库产品去掌握它,入门推荐Mysql。9 A: B7 I5 Y! J, o
这里的学习方法又要重复前面的三步:6 F8 T9 F+ u' F7 {, p9 t" U
    看书了解:推荐《MySQL必知必会》跟着敲例题:在电脑上安装MySQL库,把例题、习题都做一遍刷题库:网上资源太多,这里不在赘述。
    7 G0 _! c( M- h8 O6 B# B$ N$ i
以上就是数据库的入门学习方法。也欢迎访问友盟学院《数据行业必备知识大词典》的相关课程,带你深度解析大数据相关的概念、术语、流程、选型与应用场景,简单易懂,快速掌握!
# S7 J, _5 a, S/ [( D! ]友盟学院 - 数据行业必备知识大词典更多数据分析相关干货,还可以看看这些问答。↓↓↓
/ [8 ^) R4 t8 M5 ~- ^
    用户画像:什么是用户画像,一般用户画像的作用是什么?数据埋点:数据埋点是什么?设置埋点的意义是什么?数据分析:数据分析中,你认为用户行为分析最重要的3个点是什么?数据运营:数据运营的具体工作内容是什么?) _4 I, Q$ K/ a
❤看后三件事❤5 ]5 E  H0 ]# U! G1 J
如果你觉得这篇文章对你挺有启发,希望你可以帮我三个小忙:! |" w1 i7 ^) R( f
1、关注 @友盟全域数据 让我们成为长期关系;( Z% C( i/ Z% r* n% M  Q: A
2、点赞,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-);
$ u4 H8 X4 K, f% j4 ~3、评论,让我第一时间了解你的真实想法;
+ n! }/ e2 L; o) o4 z感谢你的支持!/ T7 l3 r, z0 M
数据库这门课为什么这么难学,该怎么学?-2.jpg
友谊不毕业毕e | 2021-6-9 01:51:33 | 显示全部楼层
作为MOOC狂魔,我推荐一个MOOC来帮助学习。+ N* R' U! g9 k
在中国大学MOOC平台上有哈工大战德臣教授开的三门MOOC, t" S0 t8 f, V8 ~
数据库系统(上):模型与语言_哈尔滨工业大学_中国大学MOOC(慕课)数据库系统(中):建模与设计_哈尔滨工业大学_中国大学MOOC(慕课)数据库系统(下):管理与技术_哈尔滨工业大学_中国大学MOOC(慕课)当时考研复试,我作为一个跨考学生对这本《数据库系统概念》无从下手,所以就跟着战老师的MOOC。关键是,战老师的MOOC习题很充足,这非常有利于知识的内化,哪一章节不会就去听哪章节,把习题做了肯定没问题!
林风幽水谛 | 2021-6-9 13:16:48 | 显示全部楼层
首先一个正在重新学数据库的人来说一下自己的看法。
( m. R; u; m- t  G如果你想要找一个后端开发的工作的话。那最重要的三门基础课就是操作系统+计算机网络+数据库2 s$ F+ Z; I) v$ u- }; S  S
尤其是面试的时候。基本上会对数据库要求特别高。因此学好数据库就变得非常重要了。2 b% `; u/ r+ G
首先题主用的这个教材是没有问题的。cmu的数据库也是用了这本教材。另外不知道题主有没有听说过cmu的神课15-445。我最近也在学习这个课。真的收获非常多。4 t, S4 p4 F" I1 j+ O6 p0 v* Z
下面这个是这门课程2020年的连接地址& l4 h0 d' O6 q2 I. D
https://15445.courses.cs.cmu.edu/fall2020/index.html首先老师真的非常帅有没有
1 N/ O8 I' n- s/ {- f% ?8 I 数据库这门课为什么这么难学,该怎么学?-1.jpg 而且这个老师非常有意思每节课的开始都会放dj。嗷你问我课程视频。下面放上两个不同语言的视频课程。
: |0 P# A. q9 g3 thttps://www.youtube.com/watch?v=oeYBdghaIjc&list=PLSE8ODhjZXjbohkNBWQs_otTrBTrjyohi【卡内基梅隆大学】15-445# 645 数据库系统简介 Intro to Database Systems 中文字幕(CMU)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili一个是YouTube的原版视频,还有一个是b站上有翻译的视频。
2 s! d- n! u! j; N- X; Y. o 数据库这门课为什么这么难学,该怎么学?-2.jpg 这是上课的dj截图。而且老师讲的非常有趣,不过就是语速有点快 需要大家暂停多思考,就不要开倍速啦$ m$ W6 C/ c" c* ~0 }1 O
这门课现在用的教材就是题主那本书的第七版。
. _6 z. x! C/ m" R4 _$ X 数据库这门课为什么这么难学,该怎么学?-3.jpg 下面再附上一个这本书的下载连接
. f% r3 J. L# Z7 t* `% q' z7 ~" @https://1lib.net/book/5239365/67e873当然除了这门课之外。国内的比较推荐的就是战德臣老师的mooc。战神应该是哈工大非常出名的老师。而且他的数据库mooc同样是国家精品课程,讲的非常出色
. t* m2 d1 h  ]数据库系统(上):模型与语言_哈尔滨工业大学_中国大学MOOC(慕课)数据库系统(中):建模与设计_哈尔滨工业大学_中国大学MOOC(慕课)数据库系统(下):管理与技术_哈尔滨工业大学_中国大学MOOC(慕课)这门课分为上中下三个部分。每个部分都很重要,想要学好数据库的话推荐都认真看完。真的会帮助非常大。. l" y3 W( I$ P/ J6 e  R1 c5 }4 F1 i
同样如果想动手实践一下的话。这里强推cmu数据库的实验,我们先简单看一下它的实验都包括什么
5 B) S8 m. Q: B  x: e2 j7 g; L# \
    Buffer Pool ManagerB+Tree IndexQuery ExecutionConcurrency Control
    2 f8 O0 k! }! n' l4 h
基本上包括了整个数据库管理系统的所有核心部分。这个都做完的话那数据库还有学不好的说法吗。
" @+ ~- }& V3 m+ qcmu的老师说过,用这个实验项目去找工作是完全没有问题的,既能学习知识又可以丰富简历何乐而不为那( K) i% z3 w7 ~2 Y
最后推荐一下我自己正在写的cmu数据库的专栏如果感兴趣的话,可以关注点赞收藏hh
- W4 V' |5 h, C# e, Z; Y/ F: |CMU15-445数据库Lab
嗯哼454 | 2021-6-9 23:47:06 | 显示全部楼层
@阿里云云栖号 的回答已经比较全面了,适合小白入门和进阶提高,可以经常拿出来看看,比较适合程序员和IT人。
( p2 t( G5 r7 {8 K( u4 B老李今天想来说说数据人该怎么学习数据库。
, u1 @- w8 U( D“数据分析需要懂数据库的知识吗?”8 l! N; p" V" k; g% X
李老头最近经常听到这样的问题,很多新人都觉得如果自己只做业务,不走技术线,是不是就可以不用学习数据库了?是不是面试的时候就不需要准备了?毕竟很多新人刚进公司,一看到数据库里各种表的复杂链接方式,就开始犯起头疼了,更有甚者连SQL与数据库的区别都不知道,数据仓库这些概念就更不用提了。  l" R' v3 d4 H0 j
数据库这门课为什么这么难学,该怎么学?-1.jpg 然而,让很多人失望的是,数据库知识是我在面试新人时最常问的问题,没有之一。
& }5 f: V& T1 n& L7 W( N$ I 数据库这门课为什么这么难学,该怎么学?-2.jpg 一、数据分析需要懂数据库吗  w$ ?: L$ }+ o* z" e; P
! i" W) Q; l8 h( ~
对数据库的了解程度,要看你定位在数据分析的哪一种层次,我见过一些数据分析人员不懂数据库,都是基于 Excel 的文件源做数据分析,他们更擅长业务。但是,他们通常情况下必须依赖于 IT 部门的支持,需要 IT 部门提供一些基本的分析数据。凭借对业务的理解,对业务数据的理解也一样可以做好数据分析工作。9 i4 }6 }# ?& u
数据库这门课为什么这么难学,该怎么学?-3.jpg 也有一类数据分析人员,本身就是从数据库、商业智能BI的角色转向纯粹的数据分析人员,通过对业务的理解加上数据处理的技能和知识在分析领域也可以做的很好。4 ]4 Z$ {. {& D
他们的一大优点就是在很大程度上不需要过度依赖IT部门,给他们一定的权限就可以自己动手直接面对统一的数据源做数据分析,有时一条SQL就是数据分析的一个环节。
5 Z$ N" _2 H$ T0 D- M7 c2 l8 v
9 U: k+ p4 \4 |
' i! @/ {* Z0 @ 数据库这门课为什么这么难学,该怎么学?-4.jpg 所以,作为数据分析人员,个人觉得技多不压身,多一种获取不同数据渠道的本领,自然是有好处的。) r" n* _4 }; n% O0 {7 U
二、什么是数据库?$ P2 z- U% m, @1 f+ H
2 O$ N' z8 x# W& a' L& _: c
首先在了解数据库之前,我们要先了解一下数据是怎么储存的?我们都知道,当我们的祖先还在荒野中茹毛饮血的时候,就学会了利用结绳记事来进行数据储存,这些被打上结的绳子就是“数据”,虽然这种数据很难保存、很难提取。. Q0 t5 U: Y  A1 _
数据库这门课为什么这么难学,该怎么学?-5.jpg 后来祖先利用甲骨、竹简、纸张来储存文字数据,近代发明了录音机、摄像机储存音频数据,虽然数据载体一直在变化,但是数据存储的方式并没有发生很大的变化,都属于传统存储方式。
. B. W, D+ C9 W' T" r: K5 h+ w; v直到信息时代的到来,数据存储的方式才发生了重大变革并朝着两分方向发展:文件与数据库。2 {9 C/ n9 P5 h/ g
    文件相当于把数据存放在Excel当中,形成读写文件后进行存储,然后通过python等工具对文件数据进行筛选、处理、提取;数据库则是把数据按照其结构将其储存在计算机中,形成一个具有大数据量的数据集合,相当于存放文件的文件柜。4 _8 M0 T9 Z4 t. z1 Z9 m- p4 s
数据库这门课为什么这么难学,该怎么学?-6.jpg 利用数据库存储数据是目前最为流行的方式,因为数据库拥有持久化存储、读写速度也很高,更关键的是数据库可以极大程度保证数据的有效性,而不像是Excel等文件极易容易产生修改错误。
" X( b) R- ?- b8 I! [; J三、数据库分类?" K' m6 P/ {* o. W3 b% X$ y1 j) |9 e

0 A1 O1 x  H) m. v; F  w) b5 Y按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。而在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库非关系型数据库
; O! u$ r! a% o! y1 I0 m7 A关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。
3 p  b: ?" x  {. m. g 数据库这门课为什么这么难学,该怎么学?-7.jpg 关系型通俗的理解是,数据作为二维数组存在,你可以理解为图书馆的图书排列。书架、楼层你可以理解为关系型的数据结构,书作为数据存在,而所有图书馆管理员就是数据库的进程,用于不同的工作。有人救火(数据修复、备份),有人整理书架、书籍(数据整理、归档),而用户进程就是指的来到图书馆的顾客,他们看书、移动书籍,而管理员就会对着维护。
4 _8 @% J; @1 S. l: c; a' u4 C 数据库这门课为什么这么难学,该怎么学?-8.jpg 关系型数据库诞生距今已有40多年了,从理论产生到发展到实现产品,例如:常见的MySQLOracle,oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购了。
6 G- e9 h8 s1 f3 U$ V7 F: f 数据库这门课为什么这么难学,该怎么学?-9.jpg 非关系型数据库也被称为NoSQL数据库,本意是“Not Only SQL”,作为传统数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥难以想象的高效率和高性能。1 E" ~3 z8 Y0 m1 i/ V
因为随着web2.0网站的兴起,海量数据对关系型数据库存储的容量要求高,单机无法满足需求,很多时候需要用集群来解决问题,关系型数据库就显得力不从心了。" e" p" B! F0 p# Q) D. c; A
数据库这门课为什么这么难学,该怎么学?-10.jpg 非关系型数据库因而诞生,实际上非关系型数据库就是针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品,比如Google的BigTable与Amazon的Dynamo。
, Z* I3 @) `4 E四、SQL与数据库的关系
+ }! t/ a# p7 C0 T# O. r3 m, l' W  N# ?; y1 S* r4 c( Q& c
这个时候很多人就会把sql与数据库的概念搞混了,很多新人就以为Sql就是用来存储数据的数据库,还有的以为sql是数据库的一种。为了方便大家理解,我给大家打个比方:3 t- J  `! w* ]. x- B8 z) i. ^) A
如果数据就是一张张的表格,我们就可以按照不同的表格关系放在不同的文件夹里,这个文件夹就相当于数据库的基础构成要素——数据表( x- E" y3 |4 K! a
而当我们的文件夹也非常繁多复杂的时候,我们就可以将文件夹按照不同的构成分类储存在文件柜中,每个文件柜中可能有非常多的分类用来存放不同的文件夹,这个文件柜就相当于数据库. v' Y: d2 F1 C2 ]1 l' H
数据库这门课为什么这么难学,该怎么学?-11.jpg 而当我们想要从文件柜中找到某份文件的时候,我们需要按照一定的规则去寻找,比如说“合同文件放在第三层第四排的架子上”,这种查找规则的实施就需要数据库管理系统(DBMS)来实现,相当于一名文件管理员,帮助我们管理数据库中的数据。最常见的数据库管理系统包括SqlServer、MySql、Oracle等。
: ^' }. i8 X; f& S$ k! O 数据库这门课为什么这么难学,该怎么学?-12.jpg 而我们如果想要对文件管理员下达指令,就需要一种沟通语言,这种沟通语言就是SQL,所以SQL就是一种结构化的查询语言,用来操作数据库管理系统。
9 }* ?1 V# Z* o* L8 E0 a5 r9 V他们之间的关系可以这样表示:3 A1 l; V2 w: ~1 c+ D- A
数据库这门课为什么这么难学,该怎么学?-13.jpg 这样大家应该不会再把SQL当做数据库了吧?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

208

金钱

0

收听

0

听众
性别

新手上路

金钱
208 元