🙏 感谢您的支持! 我们在七月份已经筹集了 $65 — 这足够我们工作到下个月。请帮助我们保持进度,进一步支持这个项目。 支持这个项目 →
SQL 代码已复制到剪贴板

课程 1.1 · 阅读时间:~8分钟

一个数据库是一个有组织的结构化数据集合,电子存储并由称为DBMS(数据库管理系统)的软件管理。在本课中,您将学习什么是数据库,DBMS如何工作,存在哪些类型的数据库,以及为什么SQL仍然是与之交互的通用语言。

SQL是用于操作关系数据库的标准语言。我们将在后面的单独课程中详细介绍它。

数据库简介:什么是数据库和DBMS?

现代应用程序——从电子商务平台到分析仪表板——都依赖数据库来存储和处理数据。理解数据库和DBMS的工作原理是学习SQL和在实际项目中处理数据的基本起点。

展示用户和应用程序通过管理物理存储层的DBMS访问数据的图示

什么是数据库?

从本质上讲,数据库是一个有组织的结构化信息集合,电子存储在计算机系统中。可以将其视为一个复杂的数字文件柜——数据库提供了一种结构化的方式来高效存储、管理和检索信息,而不是将纸质文件散落在各处。

数据库的关键特征:

  • 有组织的: 数据以特定方式结构化,使其更易于查找和管理。此结构通常基于具有行和列的表。
  • 持久的: 数据即使在使用它的应用程序关闭或计算机关闭时仍然保持存储。
  • 共享的: 多个用户和应用程序可以同时访问和交互同一个数据库。
  • 管理的: DBMS是允许您定义、创建、维护和访问数据库的软件。示例:MariaDB、PostgreSQL、MySQL、SQLite、Oracle、Microsoft SQL Server。

为什么数据库在现代开发中重要?

数据库是我们每天使用的无数应用程序和系统的支柱。关键原因:

  • 数据存储: 可靠且高效地存储大量数据。
  • 数据检索: 根据定义的标准快速查找特定记录。
  • 数据管理: 组织、更新和维护数据完整性的工具。
  • 数据共享: 为多个用户和应用程序提供受控访问。
  • 数据分析: 结构化数据是报告、分析和商业智能的基础。
  • 应用程序开发: 从社交媒体到电子商务——每个现代应用程序都将其数据存储在数据库中。

数据库类型:快速概述

本课程专注于关系数据库,但了解它们与其他类型的区别是有帮助的:

  • 关系数据库(RDB): 将数据存储在具有行和列的表中,通过键链接。示例:MariaDBPostgreSQLMySQLSQLite。这是我们在整个课程中关注的类型。
  • NoSQL数据库: 一个广泛的类别,不遵循关系模型。用于非结构化或半结构化数据和分布式可扩展性。示例:MongoDB、Cassandra、Redis。
  • 内存数据库: 主要在RAM中存储数据以实现最低延迟。用于缓存和高吞吐量场景。示例:Redis、Memcached。

什么是DBMS(数据库管理系统)?

DBMS是充当用户(或应用程序)与数据库之间中介的软件。它提供了一种系统化、受控的方式来创建、读取、更新和删除数据,同时确保安全性、一致性和性能。

DBMS的核心功能:

  • 数据定义: 创建表、指定数据类型、设置约束和定义关系。
  • 数据操作: 插入、更新、删除和查询数据——通常通过SQL。
  • 存储管理: 处理磁盘上的物理数据存储,包括索引、缓冲和优化。
  • 事务管理: 确保一系列操作要么全部成功,要么全部失败,从而保持数据库的一致性。受ACID属性的管理:原子性、一致性、隔离性、持久性。
  • 并发控制: 管理多个用户的同时访问,防止冲突和数据损坏。
  • 访问控制与安全性: 身份验证和授权——控制谁可以连接以及他们可以做什么。
  • 备份与恢复: 用于备份数据和在故障后将数据库恢复到一致状态的工具。
  • 数据完整性: 保持数据准确和有效的约束——唯一性、引用完整性等。

知名的DBMS示例:MariaDBPostgreSQLMySQLSQLiteOracle DatabaseMicrosoft SQL Server


DBMS GUI工具——以及它们与DBMS的区别

DBMS GUI(图形用户界面)工具是一个独立的桌面或Web应用程序,提供用于与DBMS交互的可视界面。DBMS是存储和处理数据的引擎;GUI工具只是一个客户端,连接到DBMS并代表您发送命令。

流行的DBMS GUI工具:

工具兼容
DBeaverMariaDB、PostgreSQL、MySQL、SQLite等
TablePlusMariaDB、PostgreSQL、MySQL、SQLite等
pgAdminPostgreSQL
MySQL WorkbenchMySQL / MariaDB
DataGrip大多数主要DBMS
HeidiSQLMariaDB、MySQL、PostgreSQL
DB Browser for SQLiteSQLite

DBMS与GUI工具之间的关键区别:

方面DBMSDBMS GUI工具
角色数据库引擎——存储、管理和处理数据客户端应用——连接到DBMS以显示和编辑数据
必需吗?是——没有它无法存储或查询数据否——可选的便利工具
运行在哪里?通常在服务器上(或本地用于SQLite)在开发者或管理员的机器上
界面命令行/编程API可视窗口、查询编辑器、表浏览器
能力完全控制存储、事务、安全性DBMS功能的子集,以可视方式呈现

简而言之,DBMS是引擎,而GUI工具是仪表板。在本课程中,我们将直接使用SQL与数据库交互——这是每个DBMS都能理解的语言——无论您选择哪个GUI工具。


关系数据库:我们的重点

在本课程中,我们将深入探讨关系数据库和用于与之交互的SQL(结构化查询语言)。关系模型以其明确的结构和强大的查询能力,仍然是数据管理和分析的基石。


关键要点:

  • 数据库是一个有组织且持久的结构化数据集合。
  • 数据库对于存储、管理、检索和共享信息至关重要。
  • DBMS是存储、管理和控制对数据库访问的软件引擎——提供数据定义、操作、事务管理、安全性等功能。
  • DBMS GUI工具是一个具有可视界面的可选客户端应用——它与DBMS本身是分开的。
  • 本课程专注于关系数据库(RDB)SQL

常见问题解答

数据库和DBMS之间有什么区别?

数据库是数据本身——有组织的表和记录。DBMS是存储、管理和提供对这些数据访问的软件(例如PostgreSQL、MariaDB)。没有DBMS,数据库是不可访问的。

什么是SQL,为什么我应该学习它?

SQL(结构化查询语言)是用于创建、查询、更新和删除关系数据库中数据的标准语言。SQL在超过90%的商业和分析系统中使用,使其成为软件开发和数据分析中最受欢迎的技能之一。

初学者应该先学习哪个数据库?

对于初学者,SQLite(零设置,基于文件)或PostgreSQL(免费、强大、生产就绪)是很好的起点。两者都有良好的文档,并在实际项目中广泛使用。

面试问题

在技术面试中,您如何定义数据库?

一个数据库是一个有组织的、持久的结构化数据集合,电子存储并由DBMS管理。它允许多个用户和应用程序可靠地存储、检索和操作数据,并保证一致性和完整性。

DBMS的核心功能是什么?

一个DBMS处理:数据定义(模式、表、约束)、数据操作(通过SQL进行CRUD)、事务管理(ACID属性)、并发控制、访问安全和授权、备份和恢复,以及数据完整性执行。

ACID代表什么,为什么重要?

ACID代表原子性(事务完全成功或完全失败)、一致性(每个事务后数据保持有效)、隔离性(并发事务不干扰)、和持久性(已提交的数据在故障后仍然存在)。这些属性对于银行、账单和任何数据正确性不可妥协的系统至关重要。

关系数据库和NoSQL数据库之间有什么区别?

一个关系数据库将数据存储在具有行和列的结构化表中,使用SQL,并强制执行ACID事务。NoSQL数据库(键值、文档、图形、宽列)在模式灵活性或水平可扩展性上牺牲了一些一致性保证。正确的选择取决于数据结构和工作负载。

DBMS与像DBeaver或pgAdmin这样的工具之间有什么区别?

一个DBMS(例如PostgreSQL、MariaDB)是引擎——它存储、管理和处理数据。一个GUI工具(例如DBeaver、pgAdmin)是一个可选的客户端应用程序,连接到DBMS并提供可视界面,用于编写查询和浏览数据。DBMS是必需的;GUI工具则不是。

课程1.2:不同类型的数据库

尝试解决以下任务,以巩固您在本课中学到的内容。

  1. 什么是数据库?
  2. 什么是DBMS?