同一列两行数据怎么合并成一行_数据分析面试被刷后,后悔没早点会学会这些数据库知识!...

6a7dac29e33a455b54c03e461ce4901f.png

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

数据库是什么?

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

d8bed65e8f4691d6cb5354e5c80f8d1a.png

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

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

06a7972122d070649daa9806b9790672.png

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

数据库的分类?

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

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

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

66fda12e8dc090540cefaaf375f7fbf2.png

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

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

d61c60b808462a76efc4887728de8695.png

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

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

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

be765b7144b7a4503672bcec6ff120af.png

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

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

68745473b099e2e60a202e6ed4649b00.png

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

数据库怎么储存数据

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

1、表:

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

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

d6b35b2137abc32901a3bd906d5b08e4.png

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

2、列:

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

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

b64664735489b558cf7113048a4c86ef.png

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

047a6252fcf232682abf4db680289ff9.png

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

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

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

3、行:

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

4、主键:

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

090738e01ec7dbf581f4b756dc018812.png

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

174a87d561f494a3924f484e7251f678.png

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

fd275b1b89f1ed32ce732af14f9a2341.png

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

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

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

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

a67add9e511b71fde1d1592ac9d78843.png

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

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

d3e7aea5502c2f791ccadeaa6fbcab02.png

519559f97adeae05ac33b6a876c4dc06.png

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值