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)

選択した選択フィールドは、「ユーザー」テーブルの3つの列です。 さまざまなフィールドをコンマで区切っていることに注目してください。

要求する各列は、テーブル内のすべてのレコードから順番に返されます。

MySQLおよびMariaDBクエリでワイルドカードを使用する方法

前の例では、優れたデータセットが返されました。 この構文は、特定の既知の基準に関連するすべてのデータを返したい場合に役立ちます。

SQLクエリ言語を使用すると、より柔軟な検索が可能になります。 「user」テーブルからすべてを返したい場合は、任意の値に一致するアスタリスク(*)ワイルドカードを使用できます。

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」フィルターでは、パーセント記号(%)が、アスタリスクの代わりに「すべて」のワイルドカードとして使用されます。 0個以上の文字に一致します。

この知識を使用して、「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でテーブルを作成する方法について学ぶことができます。

ジャスティン・エリングウッド