MySQL 简介:初学者指南

以下文章摘自 PHP 和 MySQL:从新手到忍者,第 7 版,这是学习构建专业 Web 应用程序所需的所有工具、原则和技术的实践指南。 在本系列的第三篇教程中,您将了解什么是数据库,以及如何使用结构化查询语言 (SQL) 使用您自己的数据库。

    使用 Docker 设置 PHP 开发环境 PHP 初学者指南 MySQL 简介:初学者指南 在 Web 上显示来自 MySQL 的数据:简介

正如我在上一章中解释的那样,PHP 是一种服务器端脚本语言,它允许您将指令插入您的网页中,您的 Web 服务器软件将在将这些页面发送到请求它们的浏览器之前执行这些指令。 我们已经了解了几个基本示例,包括生成随机数和使用表单来捕获用户的输入。

现在,这一切都很好,但是当数据库被添加到组合中时,它真的变得很有趣。 在本章中,我们将了解什么是数据库,以及如何使用结构化查询语言 (SQL) 使用您自己的数据库。

数据库简介

数据库服务器是一种程序,可以以有组织的格式存储大量信息,这些信息可以通过 PHP 等编程语言轻松访问。 例如,您可以告诉 PHP 在数据库中查找您希望出现在网站上的笑话列表。

在此示例中,笑话将完全存储在数据库中。 这种方法的优点是双重的。 首先,不必为每个笑话编写 HTML 页面,您可以编写一个 PHP 脚本来从数据库中获取任何笑话,并通过动态生成 HTML 页面来显示它。 其次,将笑话添加到您的网站就像将笑话插入数据库一样简单。 PHP 代码会处理剩下的事情,当它从数据库中获取列表时,会自动显示新笑话和其他笑话。

让我们运行这个例子,看看数据是如何存储在数据库中的。 数据库由一个或多个表组成,每个表都包含一个项目或事物的列表。 对于我们的笑话数据库,我们可能会从一个名为 joke 那将包含一个笑话列表。 数据库中的每个表都有一个或多个列或字段。 每列包含有关表中每个项目的特定信息。 在我们的例子中,我们的 joke 表可能有一列是笑话的文本,另一列是笑话被添加到数据库的日期。 以这种方式存储的每个笑话都可以说是表中的一行或条目。 这些行和列形成了一个表,如下图所示。

如果您曾经创建过电子表格,这对您来说会很熟悉。 数据库表类似,因为数据存储在行和列中。 唯一的区别是,与 Excel 不同的是,在 Excel 中,列被命名为 A, B, C依此类推 — 创建数据库表时,您为每一列选择一个名称。

请注意,除了笑话文本的列 (joketext) 和笑话的日期 (jokedate), 还有一列名为 id. 作为一个好的设计,数据库表应该总是提供一种方法来唯一地标识每一行。 因为有可能在同一天输入两个相同的笑话,所以我们不能依赖 joketextjokedate 列来区分所有的笑话。 的功能 id 因此,专栏是为每个笑话分配一个唯一的编号,这样我们就有了一种简单的方法来引用它们并跟踪哪个笑话是哪个。 我们将在第 5 章中仔细研究此类数据库设计问题。

注意:也可以使用列的组合作为唯一标识符——例如制造商名称和产品名称。 一家制造商可能拥有不止一种产品,两家制造商可能拥有同名产品。 通过组合这两个名称,可以唯一地标识每个产品。

回顾一下,上图所示的表格是一个包含两行(或条目)的三列表格。 表中的每一行包含三个字段,表中的每一列一个:笑话的 ID、它的文本和笑话的日期。 掌握了这些基本术语后,您就可以开始自己创建数据库了。

MySQL

本书的标题是 PHP and MySQL: Novice to Ninja — 其中 MySQL 指的是我们正在使用的数据库。 但是,如果您仔细阅读 docker-compose.yml 在设置 Docker 环境时下载的文件,您会注意到它实际上安装了一个名为 MariaDB 的数据库。

2009 年,MySQL 被大型软件公司甲骨文收购。 由于不确定 MySQL 的未来,Michael Widenius(原始 MySQL 数据库的创始人之一)决定对 MySQL 进行分支以创建一个名为 MariaDB 的新数据库。 (Forking 意味着从现有项目创建一个新项目,使用原始项目的源代码作为基础。)除了不受 Oracle 控制外,MariaDB 比 MySQL 具有一些性能优势,这使其成为一个很好的选择。

MariaDB 是 MySQL 的直接替代品,您遵循的任何教您如何使用 MySQL 的教程都将以与 MariaDB 完全相同的方式工作。 作为一名 PHP 开发人员,您不会注意到两者之间的任何区别,并且可以将一个换成另一个。

注意:随着时间的推移,MySQL 和 MariaDB 的差异略有增加,但您将使用的基本命令、工具和技术将是相同的。 当涉及到两个数据库支持的一些更高级的功能时,存在一些细微差别。

尽管这种情况发生在十多年前,但大多数开发人员和包管理系统都可以互换使用这两者。 例如,在 Arch Linux 上,如果你安装 mysql 包,它实际上安装的是 MariaDB,而我在第一章中讨论的 XAMPP 包安装的是 MariaDB 而不是 MySQL。

尽管如此,如果您开始使用 MariaDB 开发 PHP 代码,您将看到不断引用 MySQL,而不是 MariaDB。 那是因为客户端软件(连接到服务器以与数据库交互的任何东西)不知道它是连接到 MySQL 还是 MariaDB。 对于这个客户端软件,MySQL 是一个协议。 就像您可以通过计算机上的 USB 端口插入键盘或鼠标一样,您可以通过 MySQL 协议连接到 MySQL 服务器或 MariaDB 服务器。

因此,当您听到开发人员谈论“向 MySQL 数据库添加记录”时,他们通常指的是使用 MySQL 协议来管理数据库,而不管所使用的具体实现如何。

你会发现开发人员经常使用术语“MySQL”,即使他们实际上使用的是 MariaDB。 为了保持一致性,我将在本书中做同样的事情。 在讨论从 PHP 连接时,我不会将服务器称为 MariaDB 并使用术语 MySQL,而是始终使用 MySQL。

使用 MySQL Workbench 运行 SQL 查询

正如 Web 服务器旨在响应来自客户端(Web 浏览器)的请求一样,数据库服务器响应来自客户端程序的请求。 在本书的后面,我们将以 PHP 脚本的形式编写我们自己的 MySQL 客户端程序,但现在我们可以使用由编写 MySQL 的同一个人编写的客户端程序:MySQL Workbench。 您可以从 mysql.com/products/workbench/ 免费下载 MySQL Workbench。

有许多不同的 MySQL 客户端可供使用,本书的早期版本使用 phpMyAdmin,这是一个基于 Web 的 MySQL 客户端,具有许多相同的功能。 但是,它不像 MySQL Workbench 那样易于使用,而且通常速度很慢。

下载并安装 MySQL Workbench 后,打开它,您应该会看到如下所示的屏幕。

在将任何数据添加到数据库之前,您需要连接到它。 MariaDB 服务器运行在您在第 1 章中下载的 Docker 环境中,您可以使用 MySQL 客户端(例如 MySQL Workbench)连接到它。

连接数据库需要三个信息:

    服务器地址 用户名 密码

对于我们使用的 Docker 环境,信息是:

    服务器: v.je
    用户名: v.je
    密码: v.je

您会注意到服务器名称与您在 Web 浏览器中连接以查看 PHP 脚本的 URL 相同。 Docker 环境同时运行 Web 服务器和数据库服务器,因此您只需要记住一个地址。

要连接到 MySQL Workbench 中的数据库,请按窗口中央“MySQL 连接”标签旁边的 + 按钮。 (不可否认,它的标签不是很清楚,它的用途也不是很清楚,但没关系!)

当您按下 + 按钮时,您会看到一个新窗口。

输入服务器地址和用户名。 您还需要为您的连接命名。 我叫它 v.je, 但你可以随意称呼它。 这只是它在 MySQL Workbench 中为将来参考而列出的一个名称。

输入用户名和服务器后,您可以通过按窗口底部的“测试连接”按钮尝试连接到数据库。

你应该得到一个密码提示框。

如果不这样做,请按照下列步骤操作:

    仔细检查您的环境是否正在运行。 (如果您在设置后重新启动了 PC,您可能需要运行 docker-compose up 再次在项目的文件夹中运行它!)确保用户名、密码和服务器地址是正确的。

提示:您可能可以使用命令 docker-compose start 这里。 start 将启动任何现有的容器,同时 up 如果它们不存在,将创建它们,然后启动它们。 根据您在本书各章之间在计算机上所做的事情,如果需要,将重新创建 Docker 创建的容器(以及网络连接等其他内容)。 如果您在计算机之间移动、执行了系统还原或某些软件更新,则可能需要重新创建容器。

像这样, up 无论您的系统发生什么变化,都会工作,而 start 可能会或可能不会工作取决于自上次运行后发生的情况。

注意:用户名和密码区分大小写,因此请确保您输入的都是小写字母!

输入密码 v.je 进入框并勾选“保存密码”框。 通过选中该框,您将不必在每次连接时都输入密码。 然后按确定。

如果密码输入正确,您会看到一条消息,告诉您连接成功。 在“设置新连接”窗口中按确定,您将看到一个框出现在 MySQL 主窗口中,其中包含您输入的一些信息。

现在连接已经建立,每次打开 MySQL Workbench 时它都会出现。 您不需要每次都添加连接。

您终于准备好实际连接到数据库了。 为此,只需双击新创建的代表您的连接的框,您将看到一个不同的屏幕。

起初这看起来有点令人生畏,因为有许多不同的按钮和面板都代表不同的东西。 左侧下方是一个包含许多不同选项的菜单。 您唯一需要担心的是标题为“SCHEMAS”的底部部分。

模式只是“数据库”的一个奇特的词。 MySQL是一个数据库服务器。 实际上,这意味着它可以托管许多不同的数据库,类似于网络服务器如何托管许多不同的网站。

创建数据库

在将任何信息添加到数据库之前,您需要创建一个。 要创建数据库,请右键单击 SCHEMAS 面板并选择 Create schema。 这会为您提供一个包含多个选项的窗口,但您只需输入一个:架构名称。

我选择命名数据库 ijdb, 对于 Internet 笑话数据库(向 Internet Movie Database 致敬),因为这符合我在本章开头给出的示例:一个显示笑话数据库的网站。 不过,请随意给数据库起任何你喜欢的名字。 (随着本书的进展,你需要经常输入它,所以不要选择太复杂的东西!)

输入名称后,您可以安全地将其他选项保留为默认值,然后按应用。 当您这样做时,MySQL Workbench 将要求您确认您的操作。 (习惯这些对话框。MySQL Workbench 坚持对您所做的几乎所有事情进行确认!)在如下所示的屏幕上再次按 Apply。

按下 Apply 后,您需要在下一个屏幕上按下 Finish。 这是 MySQL Workbench 令人讨厌的事情之一:它迫使您确认并完成每个操作。 然而,它比替代方案更好,我们很快就会看到!

在上面的屏幕截图中,您会看到一个带有文字的白色面板 CREATE SCHEMA `ijdb`. 这是一…

阅读更多

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注