如何在云服务器上的MySQL和MariaDB中执行基本查询

来自菜鸟教程
跳转至:导航、​搜索

什么是 MySQL 和 MariaDB?

MySQL 和 MariaDB 是关系数据库管理系统。 这些工具可以在您的 VPS 服务器上用于管理来自许多不同程序的数据。 两者都实现了 SQL 查询语言的形式,并且都可以在云服务器上使用。

本指南将介绍如何通过指定不同的搜索条件从您的数据库中查询信息。 这将帮助您以灵活的方式从数据库中提取所需的数据。

对于本指南,我们将在 Ubuntu 12.04 云服务器上使用 MySQL,但所涉及的步骤将适用于任何现代 Linux 发行版上的 MySQL 或 MariaDB。

如何从 MySQL 和 MariaDB 查询信息

我们告诉数据库软件使用以下语法从我们的数据库中检索信息:

SELECT selection_fields FROM data_source WHERE selection_criteria_is_met;

在 MySQL 和 MariaDB 中选择要查询的数据源

我们将使用默认的“mysql”数据库来练习形成查询:

USE mysql;
Database changed

查看“mysql”数据库中的表,了解我们可以查询的数据源:

SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
. . .
. . .

在 Ubuntu 的默认 MySQL 安装中,此命令返回 24 个结果。

让我们选择“用户”表来查询结果。 要了解我们可以选择哪些类别,请查看表格列标题:

SHOW COLUMNS FROM user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
. . .
. . .

“字段”列中的值是“用户”表的列标题。

如何在 MySQL 和 MariaDB 中创建基本查询

让我们选择一些关于我们用户的基本信息:

SELECT user,password,host FROM user;
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1       |
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)

我们选择的选择字段是“用户”表中的三列。 请注意我们如何用逗号分隔不同的字段。

我们请求的每一列都按顺序从表中的每条记录中返回。

如何在 MySQL 和 MariaDB 查询中使用通配符

前面的示例返回了一组不错的数据。 如果您希望返回与特定的已知标准相关的所有数据,该语法很有用。

SQL 查询语言允许更灵活的搜索。 如果我们想从“用户”表中返回所有内容,我们可以使用星号 (*) 通配符,它匹配任何值:

SELECT * FROM user;

结果有点笨拙,所以这里就不包括了。 该命令将为您提供表中每条记录(行)的每列中的每个值。

如何在 MySQL 和 MariaDB 中过滤结果

如果我们只想返回满足特定条件的结果,我们可以使用“where”过滤器过滤结果。

例如,如果我们只想返回用户为“debian-sys-maint”的表数据,我们可以像这样过滤查询:

SELECT user,password,host FROM user WHERE user = "debian-sys-maint";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

同理,我们可以看到哪些用户被附加到了“localhost”主机上:

SELECT user,password,host FROM user WHERE host = "localhost";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
+------------------+-------------------------------------------+-----------+
2 rows in set (0.00 sec)

如果我们要过滤多个词,我们可以用“and”分隔条件。

SELECT user,password,host FROM user WHERE host = "localhost" AND user = "root";
+------+-------------------------------------------+-----------+
| user | password                                  | host      |
+------+-------------------------------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
+------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

如何使用 Like 比较运算符

在“where”过滤器中,百分号 (%) 用作“所有内容”通配符,而不是星号。 它将匹配零个或多个字符。

利用这些知识,我们可以利用“like”比较运算符,这是另一种用“where”进行过滤的方法。

“like”运算符将某个字段的值与右侧的表达式进行比较。 例如,要选择用户以“d”开头的行,我们可以执行以下查询:

SELECT user,password,host FROM user WHERE user LIKE "d%";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

您可以使用“and”或“or”指定“like”比较,就像使用相等比较一样:

SELECT user,password,host FROM user WHERE user LIKE "d%" OR user LIKE "r%";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1       |
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)

结论

您现在应该对如何从数据库中检索数据有了基本的了解。

还有许多其他查询我们没有涉及,但我们提到的列表是如何在 MySQL 和 MariaDB 中执行信息检索的良好开端。

您可以点击此链接了解 如何在 MySQL 和 MariaDB 中创建和管理数据库,以及 如何在 MySQL 和 MariaDB 中创建表。

贾斯汀·艾林伍德