目录

第一章:数据库是什么?为什么需要它?

1.1 数据库的定义:数字时代的文件柜

1.2 数据库 vs Excel:何时升级?

1.3 数据库的广泛应用

1.4 官方解释

1.5 为什么要使⽤数据库

第二章:数据库类型大全:找到你的"数据灵魂伴侣"

2.1 关系型数据库 (SQL数据库)

2.2 非关系型数据库 (NoSQL数据库)

2.3 如何选择?

简单来说一下MySQL和MySQL服务的关系

第三章:核心概念解析(带上你的幽默感)

3.1 表 (Table) - 数据的网格世界

3.2 列 (Column) - 数据的属性

3.3 行 (Row) - 实际的数据记录

3.4 主键 (Primary Key) - 数据的身份证

3.5 外键 (Foreign Key) - 表之间的桥梁

3.6 索引 (Index) - 数据的快速查找目录

3.7 关系类型 - 表之间的连接方式

第四章、多种数据类型大集合

4.1 数据值类型

4.2 字符串类型

4.3 CHAR与VARCHAR的区别

注意varchar的空间会多1byte,来s

4.4 如何选择CHAR与VARCHAR

4.5 VARCHAR与TEXT的区别

4.3日期类型

第五章、数据库管理入门

5.1查看当前服务器所有的数据库

5.2 创建数据库

5.3 查看当前数据库服务全局的默认字符集

5.4 选中数据库

5.5 查看数据路径

5.6 删除数据库

5.7查看MySQL的帮助


先来个小故事,让大家更容易理解为什么要去学习数据库。

想象一下,你是一家小咖啡店的老板,最初只用一个小本本记录每日销售。生意渐好后,你升级到Excel表格。某天,你想分析"所有上个月买了拿铁且每周来超过三次的顾客",Excel却卡顿不止,最后弹出一个表情仿佛在说"兄弟,你饶了我吧,我只是个表格软件!"。

这时,你需要的是一个数据库——一个真正擅长处理和管理大量数据的专业工具。别被这个词吓到,学习数据库就像是从骑自行车升级到开车:需要学习新技能,但一旦掌握,就能去得更远、更快、更轻松!

我将用这篇详尽的指南,带你从完全不懂数据库到能够自信地创建和管理自己的第一个数据库。我们会用大量比喻、实际示例和一点幽默感,让这个过程既有趣又充实。
 

第一章:数据库是什么?为什么需要它?

1.1 数据库的定义:数字时代的文件柜

简单来说,数据库就是一个有组织的数字文件柜,专门用来存储、管理和检索信息。

但它比物理文件柜聪明得多:

· 它知道每份文件在哪里
· 它可以瞬间找到所有相关文件
· 它可以防止你放入错误类型的文件
· 它可以同时让多人访问而不会混乱

1.2 数据库 vs Excel:何时升级?

Excel就像瑞士军刀,功能多样且便于携带,但在以下情况下会遇到困难:

· 数据量过大:当你有数十万行数据时,Excel会变得极其缓慢
· 多人协作:当多人需要同时编辑时,版本控制成了噩梦
· 数据完整性:当需要确保数据符合特定规则和质量标准时
· 复杂查询:当需要执行复杂的数据查找和分析时
· 安全性需求:当需要对不同用户设置不同数据访问权限时

真实比喻:Excel像是家用工具箱,适合小修小补;数据库则是专业修车厂的设备架,适合大型、复杂的工作。

1.3 数据库的广泛应用

数据库无处不在,即使你没有意识到:

· 社交媒体:存储用户信息、发帖、点赞关系
· 电子商务:产品目录、订单、客户信息
· 银行系统:账户、交易记录
· 医疗系统:患者记录、预约信息
· 游戏:玩家进度、成就、库存

1.4 官方解释

什么是数据库? 数据库是20 世纪 60 年代末发展起来的⼀项重要技术,已经成为计算机科学与技术的⼀个重要分 ⽀。数据库技术主要是⽤来解决数据处理的⾮数值计算问题,数据处理的主要内容是数据的存储、查 询、修改、排序和统计等。

1.5 为什么要使⽤数据库

1. 数据持久化:数据库可以将数据保存在存储介质中,即使应⽤程序关闭或服务器重启,数据也不会 丢失。

2. 数据结构化:数据库能够以结构化的⽅式存储数据,使得数据易于管理和查询。

3. 数据完整性:数据库管理系统(DBMS)提供了数据完整性的保障,确保数据的准确性和⼀致性。

4. 并发控制:数据库可以处理多个⽤⼾或进程同时访问和修改数据,同时确保数据的⼀致性。

5. 安全性:数据库提供了多种安全机制,如访问控制、加密等,保护数据不被未授权访问。

6. 可扩展性:随着数据量的增⻓,数据库可以⽔平或垂直扩展,以适应不断增⻓的数据需求。

7. 备份和恢复:数据库⽀持数据的备份和恢复,以防数据丢失或损坏。

8. 查询优化:数据库系统提供了⾼效的查询优化器,可以快速执⾏复杂的查询操作。

9. 事务管理:⼤部分关系型数据库都⽀持事务,确保⼀系列操作要么完全成功,要么完全失败,提⾼ 了操作的可靠性。

10. 多⽤⼾⽀持:数据库允许多个⽤⼾同时访问和操作数据,适合多⽤⼾环境。

理解了为什么需要数据库后,让我们看看数据库有哪些类型。

第二章:数据库类型大全:找到你的"数据灵魂伴侣"

数据库主要分为两大阵营:关系型和非关系型。选择哪种取决于你的具体需求。

2.1 关系型数据库 (SQL数据库)

想象一个德国工程师设计的文件柜——极度整洁、有序,所有东西都有固定位置和明确关系。

代表产品:MySQL, PostgreSQL, SQL Server, Oracle

特点:

· 数据以表的形式组织(行和列)
· 表之间通过关系连接
· 使用SQL(结构化查询语言)进行操作
· 强调数据一致性和完整性

适用场景:

· 需要高度结构化的数据
· 数据一致性至关重要(如银行系统)
· 复杂的查询和报表需求
· 事务处理(如订单系统)

我们之后就会以MYSQL进行展开!

2.2 非关系型数据库 (NoSQL数据库)

想象一个创意工作室的材料架——灵活、多样,适合存放各种形状和尺寸的物品。

代表产品:MongoDB, Redis, Cassandra, Neo4j

特点:

· 灵活的数据模型(文档、键值、图、列族)
· 通常更容易水平扩展
· 不一定使用SQL查询语言
· 更适合非结构化或半结构化数据

四种主要类型:

1. 文档数据库:存储类似JSON的文档(MongoDB)
2. 键值数据库:简单的键值对存储(Redis)
3. 列族数据库:按列而不是按行存储(Cassandra)
4. 图数据库:专门处理关系数据(Neo4j)

适用场景:

· 大量非结构化数据(如社交媒体帖子)
· 需要极高读写速度
· 快速迭代和灵活模式
· 大数据和实时应用

2.3 如何选择?

初学者建议:从关系型数据库开始,因为它:

1. 强迫你学习良好的数据组织习惯
2. 有更丰富的学习资源和社区支持
3. 适用范围更广,特别是对于传统业务应用

我们将主要关注关系型数据库,因为它们是大多数应用程序的基础,并且概念可以转移到其他类型的数据库。

简单来说一下MySQL和MySQL服务的关系

MySQL:相当于“奶茶店的全套设备+配方”——有锅有奶有珍珠,是做奶茶的“基础本钱”,但光有这些啥也卖不了。

- MySQL 服务:相当于“奶茶店开门营业”——把设备插上电、煮上珍珠、店员站好岗,顾客(比如你的代码、可视化工具)才能点单(操作数据)。
简单说:MySQL是“死的工具包”,MySQL服务是“活的干活状态”,没服务,MySQL就是堆没用的文件。

mysql 和服务是相通的,如图所示:请求与响应是成对出现的。

第三章:核心概念解析(带上你的幽默感)

让我们深入了解关系型数据库的核心构建块,我会用一些生活化的比喻来解释这些概念。

3.1 表 (Table) - 数据的网格世界

表是数据库中最基本的组织单位,就像Excel中的工作表。

比喻:表就像一家餐厅的菜单——有固定的类别(列)和具体的项目(行)。

3.2 列 (Column) - 数据的属性

列定义了表中存储什么类型的信息,每个列都有特定的数据类型

比喻:列就像调查问卷中的问题——每个问题期待特定类型的答案。

3.3 行 (Row) - 实际的数据记录

行是表中的一条具体数据记录,包含各个列的值。

比喻:行就像问卷的一份完整回答——包含了所有问题的答案。

3.4 主键 (Primary Key) - 数据的身份证

主键是唯一标识表中每一行的列(或列组合),就像每个人的身份证号码。

规则:

· 必须唯一:不能有两行具有相同的主键
· 不能为空:每行都必须有主键值
· 最好稳定:主键值不应随时间改变

比喻:主键就像学校给每个学生的唯一学号,即使有同名同姓的学生,学号也能准确区分他们。

3.5 外键 (Foreign Key) - 表之间的桥梁

外键是一个表中的字段,它是另一个表的主键。用于建立表之间的关系。

比喻:外键就像工作场所的工牌——它本身可能没有太多意义,但扫描后能获取你的全部员工信息。

3.6 索引 (Index) - 数据的快速查找目录

索引是一种数据结构,可以加快数据检索速度,但会增加插入和更新操作的开销。

比喻:索引就像书的索引——让你快速找到内容,而不必一页页翻阅全书。

3.7 关系类型 - 表之间的连接方式

1. 一对一关系:一行只与另一表的一行相关(如用户和用户详情)
2. 一对多关系:一行与另一表的多行相关(如客户和订单)
3. 多对多关系:多行与另一表的多行相关(如学生和课程)

现在我们已经了解了基本构建块,让我们学习如何与数据库"对话"。

第四章、多种数据类型大集合

4.1 数据值类型

4.2 字符串类型

4.3 CHAR与VARCHAR的区别

 • CHAR 固定⻓度的字符串, M 表⽰以字符为单位的列⻓度,取值范围 0 ~ 255 ,省略则⻓度为 1 ,在存储时总是⽤空格向右填充到指定的⻓度,获取列的值时会从尾部删除空格。允许定义 CHAR(0),此时列的值只能为NULL或空字符串,主要的⽬的是为了旧系兼容,⽐如类中必须有这个 属性,但不使⽤这个属性的值,也就是说值并没有意义,但列⼜不能没有。 • VARCHAR 可变⻓度字符串。 M 表⽰以字符为单位的最⼤列⻓度,取值范围0 ~ 65,535 (在所 有列中共享),有效⻓度取决于实际字符数和使⽤的字符集,并且⽤额外的⼀或两个字节记录实际使 ⽤的字节数,当实际字节数不超过 255 个字节⽤⼀个字节记录⻓度,超过 255 个字节时,使⽤两个 字节记录⻓度,获取列的值时不会从尾部删除空格,插⼊数据时会删除超出⻓度的空格。

注意varchar的空间会多1byte,来s

4.4 如何选择CHAR与VARCHAR

• 如果数据确定⻓度都⼀样,就使⽤定⻓ CHAR 类型,⽐如:⾝份证,md5,学号,邮编。

• 如果数据⻓度有变化,就使⽤变⻓ VARCHAR , ⽐如:名字,地址,但要规划好⻓度,保证最⻓的字 符串能存的进去。

• 定⻓ CHAR 类型⽐较浪费磁盘空间,但是效率⾼。

• 变⻓ VARCHAR 类型⽐较节省磁盘空间,但是效率低。

• 定⻓ CHAR 类型会直接开辟好对应的存储空间。 • 变⻓ VARCHAR 类型在不超过定义⻓度范围的情况下⽤多少开辟多少存储空间。

4.5 VARCHAR与TEXT的区别

 • 容量⼤⼩: VARCHAR 最⼤⽀持 65535 个字节; TEXT 最⼤⽀持 65535 个字节,在指定TEXT ⻓度时,当超过 65535 时⾃动转换为 MEDIUMTEXT 类型,当超过 16,777,215 时⾃动转换为 LONGTEXT 类型 • 存储位置: VARCHAR 类型的列实际内容⼩于768个字节时存在当前⾏,⼤于768时存在溢出⻚, 当前⾏保存溢出⻚的地址; TEXT 类型的列整体保存在溢出⻚,当前⾏只保存溢出⻚地址 • 查询性能:对于频繁查询的 VARCHAR 列可以创建索引,提升查询性能; TEXT 类型的列⽆法直 接创建普通索引,但可以使⽤ FULLTEXT 索引,由于索引的⽀持和存储位置的不同, VARCHAR 列的性能⾼于 TEXT 类型的列 • 适⽤场景:如果存储的数据⻓度较⼩且需要创建索引进⾏检索,可以选择 VARCHAR 类型,⽐如姓 名,⽤⼾,邮箱等;如果存储的数据⻓度较⼤且不需要频繁以该列为条件进⾏检索可以选择 TEXT 类型,⽐如⽂章内容等。

4.3日期类型

第五章、数据库管理入门

5.1查看当前服务器所有的数据库

show databases;

红色标记出来的是MySQL自带的数据库,记录的是关于MySQL自带的一些配置,性能,系统变量信息,不明白它的具体作用,千万别动,更不能删除,如果删除了,MySQl就无法启动了。如果在没有备份的情况下,就只能重新安装数据库服务了。

蓝色的标记的数据库都是自己创建的数据库,每个库要起一个不同的名字(名字不能重复)

天蓝色标记的数据库,是系统自带用于练习的数据库。

使用数据库只使用自己创建的数据库,别的都不用动。

5.2 创建数据库

create database class;

就可以创建一个名字为class的库;

if not exists 可写可不写,如果不存在就会创建这个库,如果有的话就会报警告。

那么如何看警告说一些什么呢?

show warnings;

创建数据库的时候最好手动设置字符集;ai_ci是口音和大小写不敏感,utf8mb4是编码集

create database if not exists tset1 character ser utf8mb4 collate utf8mb4_0900_ai_ci;

5.3 查看当前数据库服务全局的默认字符集

show variables like '%character%';

• MySQL8.0默认的排序规则是 utf8mb4_0900_ai_ci

,MySQL5.7默认排序规则是 utf8mb4_general_ci

不同的字串集与排序规则对数据库的影响

 • utf8mb4_0900_ai_ci 是MySQL8.0引⼊的新规则,在⽼版本中不能识别;

 • utf8mb4 编码是对 Unicode 字符集的⼀种实现,⽤1到4个字节表⽰⼀个字符,可以表⽰世界上 ⼏乎所有的字符,⽽且更节少空间

• 0900 是基于UCA9.0.0算法,UCA是Unicode CollationAlgorithm的缩写

• ai是Accent-insensitive的缩写,表⽰⼝声不敏感  

• ci是Case-insensitive的缩写表⽰⼤⼩写不敏感 

 • as是Accent-sensitive的缩写,表⽰⼝声敏感  • cs是Case-sensitive的缩写,表⽰⼤⼩写敏感

 • bin表⽰⼆进制 在学习完排序之后,可以通过⽰例观察不同排序规则对于⼤⼩写的影响

5.4 选中数据库

当我们想建表的时候,我们就得选中数据库开始对其操作。

use database;

5.5 查看数据路径

show database like'datadir';

5.6 删除数据库

drop database test;

删除数据库是一个非常危险的操作,在自己的项目或者是在公司里千万不要做,如果在删除之前要慎之又慎,如果公司有这种要求,一定要叫上自己的领导和同事一起删除,保留证据。最好直接把这个操作直接忘记掉!!!!!!!!

5.7查看MySQL的帮助

\?  一些快捷键

这就是本篇博客的所有知识,下一篇我们将带来,数据库建表的增删删查改。(CRUD)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐