数据库简介

数据库是管理数据的工具。 数据库的基本功能是插入、搜索、更新和删除数据,尽管大多数数据库系统的功能不止于此。 根据存储数据的方式,数据库分为两个不同的类别:关系数据库和非关系数据库。

关系数据库以非常详细的方式构建数据,迫使用户使用定义的格式并允许在不同信息之间创建连接(即关系)。 非关系数据库是以更轻松的方式存储数据的系统,就好像没有明显的结构一样。 尽管有了这些非常模糊的定义,您可以假设每个人都喜欢使用关系数据库,但这两个系统都非常有用; 这仅取决于您想如何使用它们。

在本书中,我们将重点关注关系数据库,因为它们广泛用于小型 Web 应用程序,其中数据量并不大。 原因是应用程序通常包含相互关联的数据; 例如,我们的应用程序可以存储由客户和书籍组成的销售。

MySQL

长期以来,MySQL 一直是 PHP 开发人员的最爱。它是一种关系型数据库系统,使用 SQL 作为与系统通信的语言。许多其他系统也使用 SQL,这使得在需要切换数据库或只是需要理解一个与你习惯的数据库不同的应用程序时变得更容易。本章的其余部分将以 MySQL 为重点,但即使你选择了不同的 SQL 系统,它也会对你有所帮助。

要使用 MySQL,需要安装两个应用程序:服务器和客户端。你可能还记得第 2 章 "使用 PHP 的 Web 应用程序" 中的服务器-客户端应用程序。MySQL 服务器是一个程序,它侦听来自客户端的指令或查询,执行它们并返回结果。要访问数据库,需要启动服务器;请参阅第 1 章 "设置环境",了解如何启动服务器。客户端是一个应用程序,它允许你构建指令并将其发送到服务器,也是你将要使用的应用程序。

图形用户界面与命令行

图形用户界面(GUI)在使用数据库时非常常见。它可以帮助你构建指令,甚至可以使用可视化表格管理数据。另一方面,命令行客户端迫使你手写所有命令,但它们比图形用户界面更轻便,启动速度更快,而且迫使你记住如何编写 SQL,而这正是用 PHP 编写应用程序时所需要的。此外,一般来说,几乎所有有数据库的机器都会有 MySQL 客户端,但可能没有图形应用程序。

你可以选择自己更熟悉的一种,因为你通常会在自己的机器上工作。不过,请记住,对命令行的基本了解会在很多情况下救你一命。

为了将客户端与服务器连接起来,需要提供一些信息,说明连接位置和用户使用的凭据。如果没有自定义 MySQL 安装,至少应该有一个没有密码的 root 用户,也就是我们要使用的用户。你可能会认为这似乎是一个可怕的安全漏洞,也许确实如此,但如果你不是从服务器所在的同一台机器上连接,就不应该使用该用户进行连接。在启动客户端时,可以用来提供信息的最常用参数有

  • -u <name>:指定用户—​本例中为 root

  • -p<password>:不含空格,指定密码。由于我们的用户没有密码,因此无需提供。

  • -h <host>:指定连接位置。默认情况下,客户端连接到同一台机器。在这种情况下,无需指定任何主机。如果需要,可以指定 IP 地址或主机名。

  • <schema name>:指定要使用的模式名称。我们稍后将解释其含义。

有了这些规则,就可以使用 mysql -u root 命令连接数据库了。您应该会得到与下面非常相似的输出结果:

$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.73 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

终端将显示服务器的版本和一些关于如何使用客户端的有用信息。从现在起,命令行将以 mysql> 开始,而不是正常的提示符,表明你正在使用 MySQL 客户端。要执行查询,只需键入查询,以分号结束,然后按 Enter 键。客户端会将查询发送到服务器,并显示查询结果。要退出客户端,可以键入 \q 并按 Enter 或按 Ctrl + D,不过最后一个选项取决于你的操作系统。