はじめに
この実験では、MySQL でデータをフィルタリングおよびソートするための基本的な技術を学びます。特定の条件に基づいてデータをフィルタリングするための WHERE 句の使い方、ORDER BY を使って結果をソートする方法、および LIMIT 句を使って出力を制限する方法を学びます。これらのスキルは、すべてのデータベースユーザーにとって基本的であり、必要なデータを望む順序で取得することができます。実践的な演習を通じて、これらの重要なデータベース操作に関する実際の経験を得て、MySQL で効果的にデータを照会して整理する方法を理解します。
WHERE による基本的なデータフィルタリング
このステップでは、特定の条件に基づいてデータをフィルタリングするための WHERE 句の使い方を学びます。WHERE 句は SQL の最も重要な機能の 1 つであり、基準を満たすデータのみを取得することができます。
まず、MySQL に接続してデータベースを選択しましょう。
sudo mysql -u root
接続後は、以下のコマンドを実行します。
USE bookstore;
単純な比較演算子
まずは基本的な比較演算子から始めましょう。
-- 40 ドル以上の価格の本
SELECT title, price
FROM books
WHERE price > 40;
以下のような出力が表示されるはずです。
+-------------------------+-------+
| title | price |
+-------------------------+-------+
| The MySQL Guide | 45.99 |
| Advanced Database Concepts | 54.99 |
| Database Administration | 49.99 |
| The Perfect Index | 42.99 |
+-------------------------+-------+
一般的な比較演算子には以下のものがあります。
=(等しい)<>または!=(等しくない)>(より大きい)<(より小さい)>=(以上)<=(以下)
特定の年に出版された本を検索する別の例を試してみましょう。
SELECT title, author, publication_year
FROM books
WHERE publication_year = 2023;
AND と OR の使用
複数の条件を AND と OR を使って結合することができます。
-- 2023 年に出版された技術書
SELECT title, genre, publication_year, price
FROM books
WHERE genre = 'Technical'
AND publication_year = 2023;
非常に新しい本または非常に高価な本を検索するために OR を試してみましょう。
SELECT title, publication_year, price
FROM books
WHERE publication_year = 2023
OR price >= 50;
NULL とブール値の扱い
在庫切れの本を検索するには、以下のようにします。
SELECT title, price, in_stock
FROM books
WHERE in_stock = FALSE;
LIKE によるパターンマッチング
このステップでは、LIKE 演算子を使ったパターンマッチングを学びます。これにより、テキストデータ内のパターンを検索することができます。探している正確なテキストがわからない場合に特に役立ちます。
LIKE 演算子は 2 つの特殊文字を使用します。
%は 0 文字以上の任意の文字を表します_はちょうど 1 文字を表します
いくつかの例を試してみましょう。
-- タイトルのどこかに "SQL" が含まれる本を検索する
SELECT title, author
FROM books
WHERE title LIKE '%SQL%';
このクエリは、タイトルのどこかに "SQL" が表示されるすべての本を検索します。以下のような出力が表示されるはずです。
+------------------+----------------+
| title | author |
+------------------+----------------+
| SQL for Beginners| Sarah Johnson |
| SQL Mystery Tales| Jennifer White |
+------------------+----------------+
さらにいくつかのパターンマッチングを試してみましょう。
-- "The" で始まる本を検索する
SELECT title, author
FROM books
WHERE title LIKE 'The%';
-- タイトルに "Database" が含まれる本を検索する
SELECT title, author, price
FROM books
WHERE title LIKE '%Database%';
MySQL では、LIKE はデフォルトで大文字小文字を区別しません。大文字小文字を区別したい場合は、BINARY を使用できます。
-- 大文字小文字を区別した検索
SELECT title, author
FROM books
WHERE title LIKE BINARY 'The%';
ORDER BY による結果のソート
このステップでは、ORDER BY 句を使ってクエリ結果をソートする方法を学びます。これにより、データを昇順 (ASC) または降順 (DESC) に意味のある順序で並べることができます。
単一カラムのソート
まずは価格での基本的なソートから始めましょう。
-- 価格で本をソートする(デフォルトで昇順)
SELECT title, price
FROM books
ORDER BY price;
最安値から最高値の順に本が表示されます。順序を逆にするには、以下のようにします。
-- 価格で本を降順にソートする
SELECT title, price
FROM books
ORDER BY price DESC;
出力は最初に最も高価な本が表示されます。
+---------------------------+-------+
| title | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration | 49.99 |
| The MySQL Guide | 45.99 |
| The Perfect Index | 42.99 |
...
+---------------------------+-------+
複数カラムのソート
最初のソートカラムに重複する値がある場合に便利な複数カラムでのソートもできます。
-- ジャンルでソートし、その後各ジャンル内で価格でソートする
SELECT title, genre, price
FROM books
ORDER BY genre, price DESC;
昇順と降順のソートを混ぜることもできます。
-- ジャンルで昇順、価格で降順にソートする
SELECT title, genre, price
FROM books
ORDER BY genre ASC, price DESC;
LIMIT による結果の制限
このステップでは、クエリによって返される行数を制限するための LIMIT 句の使い方を学びます。これは、大規模なデータセットを扱う場合や、いくつかの例だけを見たい場合に特に役立ちます。
LIMIT の基本的な使い方
最も高価な 3 冊の本だけを表示するには、以下のようにします。
SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3;
3 行だけ表示されるはずです。
+---------------------------+-------+
| title | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration | 49.99 |
| The MySQL Guide | 45.99 |
+---------------------------+-------+
オフセット付きで LIMIT を使用する
LIMIT には 2 つの数値を指定できます。オフセット(スキップする行数)とカウント(返す行数)です。
-- 最初の 3 冊の本をスキップし、次の 3 冊を表示する
SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3, 3;
これにより、4 番目、5 番目、6 番目に高価な本が表示されます。
一般的な使い方の 1 つはページネーションです。たとえば、1 ページに 5 件のアイテムを表示する「ページ 2」を表示するには、以下のようにします。
SELECT title, author, price
FROM books
ORDER BY title
LIMIT 5, 5;
これは最初の 5 件の結果(ページ 1)をスキップし、次の 5 件(ページ 2)を表示します。
すべてを組み合わせる
これまで学んだことをすべて組み合わせて、より複雑なクエリを作成してみましょう。
SELECT title, author, price
FROM books
WHERE genre = 'Technical'
AND price > 30
ORDER BY price DESC
LIMIT 3;
このクエリは、以下のことを行います。
- 30 ドル以上の技術書をフィルタリングする
- 価格で降順にソートする
- 上位 3 件の結果のみを表示する
まとめ
この実験では、MySQL でデータをフィルタリングしてソートするための基本的な技術を学びました。
- 比較演算子と論理演算子を使った WHERE 句によるデータのフィルタリング
- テキスト検索における LIKE 演算子によるパターンマッチング
- 単一カラムと複数カラムでの ORDER BY による結果のソート
- LIMIT と OFFSET を使った結果セットの制限
これらのスキルは、MySQL で効果的なデータの検索と整理の基礎を形成します。



