mysql 只展示两张表不同的数据_编程百晓生 | 啥是数据库?

04

啥是数据库?

b5089ceed54b58a6ef1c482dffaab130.png

鱼小皮

哥,我凉了。

e5eda404fdcb26375693943325390ce9.png

怎么肥四?

e5eda404fdcb26375693943325390ce9.png f749501eb3e41c39e9648e0c2f472a7e.png

老百

b5089ceed54b58a6ef1c482dffaab130.png

鱼小皮

我实习的那家公司倒闭了,我拿不到实习证明了。

e5eda404fdcb26375693943325390ce9.png

好好的公司,怎么说倒就倒了?

e5eda404fdcb26375693943325390ce9.png de27aac53c90b7c7a3377f9de23b4d91.png

老百

ad4d3dbf9f6f8ed1724afcbd0c22042b.png

鱼小皮

听说有个哥们把公司所有的业务数据都整没了。真是不可思议!

e5eda404fdcb26375693943325390ce9.png

唉,那铁定是删库跑路了啊!

e5eda404fdcb26375693943325390ce9.png 45205b16c181428ff8f5d0545244feaa.png

老百

28aee603931785dc0d28e79ac267fe1c.png

鱼小皮

啊?删库?删什么库?

e5eda404fdcb26375693943325390ce9.png

当然是数据库呀!一般情况下,企业会把业务数据存放在数据库中。数据库是企业的生命,一旦其中的数据被删除,后果不堪设想!

e5eda404fdcb26375693943325390ce9.png df1cd16f4627496bbc0120671c5a33b2.png

老百

47d2874dd1ab3d57ae7e01fbd0a83a3a.png

鱼小皮

听起来很厉害的样子,快给我讲讲什么是数据库吧!

e5eda404fdcb26375693943325390ce9.png

什么是数据库?

数据库(Database,简称 DB)是按照一定结构和规则来存储和管理数据的仓库。数据库通常以文件的形式长期存储在服务器内,是有组织、可共享、统一管理的大量数据集。

下图就是两个数据库文件:

878569ea78e0096efe90af628143ace5.png

但是,这些数据文件不是直接以便于人类理解的形式存储的,让我们打开其中一个文件:

0ee22a441a387a750943b5ff92270e77.png

db 文件内容

de27aac53c90b7c7a3377f9de23b4d91.png

鱼小皮

这都是啥啊,乱七八糟的,数据存到这种文件里不就完全读不懂了!

e5eda404fdcb26375693943325390ce9.png

出于安全和性能等考虑,我们无法直接使用这些数据库文件,而是需要一个数据库管理系统来帮助我们管理数据库。

e5eda404fdcb26375693943325390ce9.png f749501eb3e41c39e9648e0c2f472a7e.png

老百

数据库管理系统

数据库管理系统(Database Management System,简称 DBMS),是对数据库进行统一的管理和控制的大型软件。耳熟能详的 MySQL 就是一个数据库管理系统。

数据库管理系统使我们能够轻松地建立、使用和维护数据库,对数据库的共享提供了很好的支持,并能保证数据库的安全性和完整性。不同的数据库管理系统对应的数据库存储文件的结构也不同。

数据库和数据库管理系统在软件开发中扮演着不可或缺的角色。比如要开发一个教务系统,学生的信息都会存放在数据库中。当学生想登录教务网站查询自己的考试成绩时,部署在服务器上的程序会连接数据库管理系统进行查询,并从数据库中取出该学生的成绩,最后显示到页面上。

95ee7dccea9910e5abed8d4205b3f4a9.png

查询数据过程

de27aac53c90b7c7a3377f9de23b4d91.png

鱼小皮

原来如此,但为什么要把数据存在数据库中呢?直接存到文件中,不也可以被程序读取么?

e5eda404fdcb26375693943325390ce9.png

打个比方,我们有很多衣服,如果直接堆在一起,找衣服的时候就会很麻烦。

e5eda404fdcb26375693943325390ce9.png f749501eb3e41c39e9648e0c2f472a7e.png

老百

b8a39192fbe97c8b31bea9df69104ccb.png

但如果我们有一个衣柜,就可以按照一定规则,把不同的衣服放在不同的格子中整理,再去找衣服就很方便。数据库就是这样一个整理数据的柜子。

e5eda404fdcb26375693943325390ce9.png f749501eb3e41c39e9648e0c2f472a7e.png

老百

71584d09a32414dd84f689740585036f.png 1dae871fd63f8a996b273858aeaed6be.png

鱼小皮

那我把文件存到 Excel 里,查询时不也很方便么?

e5eda404fdcb26375693943325390ce9.png

Excel 虽然可以将数据以表格的形式展示,但是 Excel 文件难以被共享(多人同时访问),数据之间也缺乏关联性。

e5eda404fdcb26375693943325390ce9.png f749501eb3e41c39e9648e0c2f472a7e.png

老百

230f9f817701bee387df767a9139a5b2.png

鱼小皮

那用腾讯在线文档不就可以了么?

e5eda404fdcb26375693943325390ce9.png

闭嘴!让我给你好好讲讲数据库的优点!

e5eda404fdcb26375693943325390ce9.png 0c903bf31374322ea94f3b5752509ccb.png

老百

数据库的优点

数据库之所以能被开发者广泛使用,是因为其有很多文件等其他存储方式不可替代的优点(此处主要讲关系型数据库的优点)。

1. 使用方便

传统的关系型数据库采用类似表格的行列式存储, 查询方便且易于理解。

2. 存储结构稳定

关系型数据库要求数据以结构化的方式存储,必须先定义表,再存储数据,因此数据的形式和内容可控,比如禁止用户存储空字段。因此可靠性更高。

3. 统一管控

数据可以由数据库管理系统统一管理和控制,数据库的各种信息一目了然,就像 Windows 系统的资源管理器一样。

4. 数据共享方便

由数据库管理系统集中管理数据库,用户要使用数据时,只需和数据库管理系统建立连接即可。因此数据可被多个用户程序共享。

5. 权限控制

使用数据库管理系统能够很方便地控制不同用户对数据库不同部分的访问及操作权限,能够很好的保证数据库安全性。

6. 数据独立性高

开发者和程序只需要关心数据库的逻辑结构(数据间的关系),而不需要去理解数据库底层的文件存储(看也看不懂)。即使底层的数据文件存储结构发生改变,也不需要改变我们的应用程序。

7. 数据备份与恢复

使用数据库管理系统可以定期对数据进行备份与恢复,保障数据的安全性。

8. 空间占用少,性能高

数据库管理系统会采用特定的数据结构来存储数据,并优化存储空间和数据查询性能,相对于我们自己建立文件来存储和读取数据,空间占用更少、性能会更高。

49425b3dbc17d6f361385bf4660fc862.png

鱼小皮

原来使用数据库有这么多好处,但是什么数据都可以存到数据库中么?比如图片?

e5eda404fdcb26375693943325390ce9.png

理论上任何数据都可以存到数据库中,就像你可以往衣柜里放别的东西。但是不同的数据应选择不同类型的数据库进行存储,才能发挥出数据库的价值。

e5eda404fdcb26375693943325390ce9.png df1cd16f4627496bbc0120671c5a33b2.png

老百

数据库的分类

数据库可以分为两大类:关系型数据库和非关系型数据库。

关系型数据库

关系型数据库(RDBMS)是使用最广泛的数据库,采用了关系模型来组织数据,其主要结构是库 + 表 + 表之间的关系 + 字段,便于用户理解。

一个库有多张表:

13cef7235630095f169b444ccfa16ea0.png

 main 数据库下有多张表

每张表采用行列式存储,类似表格。每一行代表一条数据,每一列代表一个字段。通常每张表都要定义一个主键,主键的值不能重复,用于标识唯一的一行数据,就和我们每个人都有唯一的身份证号一样。

098f9ab7cf0e4eb9db9d4b9680b3cba6.png

用户表(id 是主键)

表之间可以通过值相同的字段关联(通常用 id 关联):

30d7db2a57052cbde1024469ce0dbf5b.png

用户表和用户扩展信息表通过 id 关联

通过将表进行关联,可以在查询时同时查出多个表的列,比如可以将上面两张关联表拼接为下表:

3bf5e655d6282b84b2650c6675e6522b.png

将两张关联表根据 id 合并为一张表

目前最主流的关系型数据库有 MySQL 和 Oracle。

de7dea106c553279aeffbdca3cd7dc5e.png

非关系型数据库(NoSQL)

非关系型数据库又称 NoSQL(Not Only SQL,不仅仅是 SQL)。由于数据类型太多样了,关系型数据库并不适用于所有的数据,因此针对不同的数据类型,出现了不同的 NoSQL。

使用特定类型的 NoSQL 存储特定类型的数据,具有提升性能、节约空间等好处。

常见的非关系型数据库有键值存储数据库 Redis、列式存储数据库 HBase、文档数据库 MongoDB、图形数据库 Neo4J、时序数据库 InfluxDB、对象数据库、XML 数据库等。

e9faf5a36a3f6b77c7c540ebe25bf508.png 6fe22dcd7ba16367440a0d26609fb9e3.png

鱼小皮

原来有那么多数据库,大开眼界。那我应该怎么学习数据库呢?

e5eda404fdcb26375693943325390ce9.png

先学最实用的关系型数据库吧,我给你亿点学习建议。

e5eda404fdcb26375693943325390ce9.png 8e6b9041fc1eb93fb09381c4aa8b0bcc.png

老百

数据库学习建议

数据库的学习分为五个阶段,前两个阶段是使用数据库的基础,最为重要。一般学完前三个阶段就可以在企业中很好地应用数据库了。

1. SQL

结构化查询语言(Structured Query Language)简称 SQL,是一种面向数据库的编程语言。使用 SQL 可以查询、管理和控制数据库。

SQL 又分为五类:

1. DDL(Data Definition Language)数据定义语言,包括创建数据库表、定义字段等。

2. DML(Data Manipulation Language)数据操作语言,包括增删改查(大家常说的 CRUD)。

3. DQL(Data Query Language)数据查询语言,就是 select 语句(也是 DML),语句灵活、优化技巧多,是 SQL 学习的重中之重。

4. DCL(Data Control Language)数据控制语言,控制用户对数据库的访问权限。

5. TCL(Transaction Control Language)事务控制语言,比如事务的开启、回滚等。

2. 设计

要能够针对业务场景设计出数据库、数据表和表之间的关系,通常需要遵循一定的规范。其中,表字段类型的选取尤为重要,选取不当会影响查询的性能,比如应当用整型代替字符串类型来存储 IP 地址。

可以多参考他人的设计,熟能生巧。

3. 调优

使用一些技巧来提升你的数据库查询和操作性能。常用的有给字段添加索引、定位慢查询并优化、配置 MySQL 参数调优等。调优是在企业中应用数据库必不可少的环节,因此 MySQL 调优也是面试的重点

4. 原理

了解数据库底层的存储原理,比如 MySQL 中的 InnoDB 存储引擎是如何实现的、索引底层的 B+Tree 是如何实现的等等。这有助于我们设计出高性能的数据表,并且更进一步调优性能。

8a989832f4b9affc070dc9825b851717.png

B+Tree 数据结构

5. 运维

数据库的运维对企业十分重要,一般都有专门的人员来维护数据库,主要工作包括

1. 保证数据库的正常运行。

2. 控制用户的访问权限,保证数据库的安全。

3. 在数据量大时进行集群、读写分离的搭建,保证数据库的性能。

4. 在数据库出现异常时能够快速定位日志进行排错。

5. 定期备份数据,并且在数据出现错误进行回滚、数据丢失时进行恢复。

6. 提出提升数据库性能的 SQL 优化建议。

运维的知识和经验更多的是在实际工作中学习和积累的。可以看一些视频案例进行学习。

49425b3dbc17d6f361385bf4660fc862.png

鱼小皮

谢谢哥,太详细了!我一定好好学习数据库!将来也要删库跑路!

e5eda404fdcb26375693943325390ce9.png

!?

e5eda404fdcb26375693943325390ce9.png cc5a75634a5794e988f8abb63827ee28.png

老百

ed2502846cc4dfa6a6d941ae6f3dbd69.png

点击下方阅读原文可以在线练习 SQL 哦。

往期推荐

小记 | 再次登上学生时代的个人博客,泪目

小记 | 一周上线百万级高并发系统

编程百晓生 | 我竟然被狗狗币勒索了?

编程百晓生 | 大的数据就是大数据?

编程百晓生 | 啥是前端 ?

鱼皮送福利啦

ea084a707999a7716e4738b77d50d89c.png

10 月 31 日起 15 天内,鱼皮将为文章阅读数、分享数、留言数最多的读者送上企鹅周边~ 并抽取几名粉丝送出随机小礼品!

阅读最多:超长鼠标垫

分享最多:QQ长鹅

留言最多:QQ小公仔

幸运奖:腾讯云U盘、笔记本等

感谢大家支持,鱼皮会继续努力创作优质内容!

c0fa9eb8df62c7b2ca89d2d6762d0931.png
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值