8

数据分析面试被刷后,后悔没早点会学会这些数据库知识!

 3 years ago
source link: https://zhuanlan.zhihu.com/p/313536601
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

数据分析面试被刷后,后悔没早点会学会这些数据库知识!

数据分析不是个事儿

在数据分析面试中,有一类知识绝对是面试官重头考察的内容,但是很多人却常常忽略,也就是——数据库与SQL

数据库是什么?

你可以把数据想象成一个个文件夹,数据库就是一个一个文件柜,这个文件柜存放着非常多的数据,无论这个数据是什么、或者是如何组织的

v2-ce806dc227aba6e52fdc4f5895fd21ac_720w.jpg

这里要注意,人们通常用数据库这个术语来代表他们使用的数据库软件,这是不正确的,这是以前你混淆的根源

确切的说,数据库软件应该称为DBMS,也就是数据库管理系统,数据库就是由DBMS创建和操纵的,比如我们可以在sql sever创建一个数据库

也就是说DBMS就像是一个图书管理员,你不直接访问数据库,而是利用DBMS访问数据库,让图书管理员帮你找一个文件柜。

数据库的分类?

所说的数据库都指的是数据库管理系统,这按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库

而在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)

在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。

关系型通俗的理解是,数据作为二维数组存在,你可以理解为图书馆的图书排列。

书架、楼层你可以理解为关系型的数据结构,书作为数据存在,而所有图书馆管理员就是数据库的进程,用于不同的工作。有人救火(数据修复、备份),有人整理书架、书籍(数据整理、归档),而用户进程就是指的来到图书馆的顾客,他们看书、移动书籍,而管理员就会对着维护。

关系型数据库诞生距今已有40多年了,从理论产生到发展到实现产品,例如:

常见的MySQL和Oracle数据库,Oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购了。

非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“NO SQL”的意思

因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充,在特定的场景下可以发挥难以想象的高效率和高性能。

NoSQL是非关系型数据库的广义定义,它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连续操作,在大数据存取上具备关系型数据库无法比拟的性能优势。

数据库怎么储存数据

那么,关系型数据库是怎么存储数据的?

1、表:

在你将文件夹放入文件柜的时候,不能将他们随便的扔进某个抽屉就完事了,而是在文件柜中创建文件,然后将相关的资料放入相关的文件中,这就是数据库的表。

表是一种结构化的文件,用来存储某种特定类型的数据,比如说这样的sql文件,其里面包含了20多个数据库表,每个表的名字都不应该是相同的,但是我们可以在不同的数据库里存放相同表名的数据表。

同时我们不能把学生数据与老师数据放在同一个表里,这样会我们不好提取数据,检索和访问都比较麻烦,所以我们应该创建两个表,每个清单一个表。

2、列:

列是组成表的字段信息,一张表可以有一个或者多个列组成。

我们可以这么理解,每一列都是数据库表中的每一个字段,比如下面的学生id列、学生姓名列、考试成绩列就是三个字段。

正确地将数据分解为多个列是十分重要的,比如班级和学生姓名应该是独立的列,通过将他们进行分解开,才有可能利用特定的列队数据进行排列和过滤,如果学生姓名和班级组合在了一个列里,按照班级过滤就会十分的困难。

数据库中每个列都有对应的数据类型,数据类型定义列可以存储的数据种类。

例如,如果列中存储的是数字,那么对应的数据类型应该是数值类型,如果列种存储的是日期、文本、注释、金额等,应该用恰当的数据类型规定出来。

数据类型:所容许的数据类型,每个列都应该有相对应的数据类型,限制存储的数据形式。

3、行:

数据库表中的数据是按照行进行存储的,每一行就是存储的一个数据,比如第一行是张三的数据,第二行是李四的数据。

4、主键:

表中每一行都应该有可以唯一标识自己的一列,比如学生信息表中我们不能用学生的姓名作为主键,因为我们会发现一旦出现重名的情况,我们就会出现两个不同的数据;

当然也不能用考试成绩作为主键,比如按照“90分”作为主键进行提取时我们还会提取出两个数据;

所以我们应该用学生id作为主键,因为无论如何学生id是不会重复的,它具有唯一性,所以可以作为主键。

所以主键就是唯一区分数据表行的标识,用来表示一个特定的行。

没有主键的话,我们更新或者删除表中特定的行就会十分的困难,他必须满足两个条件:

  • 任意两行都不应该有相同的主键值
  • 每一行都必须具有一个主键值(主键列不存在null值)

数据库中能够将不同的表进行关联,靠的就是主键,例如下面两个表:

比如上面两张图,左图是学生信息表,右图是老师信息表。左图的主键是学生ID,右图的主键是老师ID。细心的读者可能发现右图还有一个学生ID,这里的学生ID是专门用来联接用户表的,它并不是主键。只不过两张表通过学生ID这个唯一信息来关联。

但两张表关联也并不是信息能一一对应的,也会存在空缺的时候,比如:

所以,想要认知数据库的内容,首先我们先要明白sql、sql sever、my sql、oricle与数据库、数据库管理系统的区别在哪,因为很多人在学数据分析的时候,都是在网上到处找资料,不同的资料里滥用了这些名词,造成了大家的混淆,也增加了大家对于sql认知的难度。

今天只是给大家一点开胃小菜,下一期我们继续学习SQL的具体语法,这也是数据分析面试的重要内容。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK