SQLのSELECT文の基礎:条件指定からソートまで徹底解説!

SQL
この記事は約8分で読めます。

こんちには、でじ冒です。

ータベースの操作やデータの抽出において欠かせないSELECT文

SELECT文は条件指定やソート、集計など、さまざまな機能があります。データベースから必要な情報を正確に取得するためには、使い方をマスターすることが重要です。この記事では、SELECT文の基礎を詳しく解説します。

でじ冒
でじ冒

今回の記事は次のような方にオススメ!

  • SQLでデータ検索をしたい
  • SELECT文のオプションを理解したい

基本構文

SQLのSELECT文の基礎:条件指定からソートまで徹底解説!

SELECT文とは

SELECT文は、データベースからデータを取得するためのSQLのコマンドです。

テーブル内の特定の列や全体のデータを選択し、結果を取得するために使用します。SQLの中でも基本的な要素であり、データベース操作の中核となるものです。

データベースってなんだっけ?という方はこちらの記事をぜひ。

SELECT文の使用方法

下記は、SELECT文を使用して usersテーブルからname列とage列のデータを取得しています。

SQL

SELECT name, age
FROM users;

SELECTの後に取得したい列名を指定します。取得したい列名が複数ある場合は、カンマ区切りで指定します。そして、FROM句の後に対象のテーブル名を指定します。

ワイルドカード(*)を使用すると、すべての列のデータを取得することができます。また、WHERE句やORDER BY句、LIMIT句などを追加してデータのフィルタリングやソート、制限を行うことも可能です。

でじ冒
でじ冒

WHERE句やORDER BY句などは、このあと詳しく説明するよ!

データの取得(別名の使用)

SQLのSELECT文の基礎:条件指定からソートまで徹底解説!

上記で列名を指定してデータを取得する方法を学びましたが、実はAS句を使用すると、取得した列の結果に別の名前を割り当てることができます。取得結果の表示名をわかりやすくなるメリットがあります。

下記は、取得したname列の結果にfull_nameという別名を割り当てています。

SQL

SELECT name AS full_name
FROM users;

ドメインをとって自分をアピールしよう

データのフィルタリング

WHERE句

SELECT文でデータをフィルタリングするには、WHERE句を使用します

WHERE句はSELECT文のFROM句の後に記述され、条件式を指定します。条件式は真または偽を評価する式であり、条件を満たす行だけが取得されます。

下記は、usersテーブルからage列が18より大きい行だけが取得しています。

SQL

SELECT *
FROM users
WHERE age > 18;

比較演算子の種類と使い方

SQLのSELECT文の基礎:条件指定からソートまで徹底解説!

上記で「 >」が登場しましたが、これを比較演算子と言います。WHERE句で使用される条件式の一部として使用されます。

以下は、よく使用される比較演算子です。

演算子用途
=等しいことを比較するage = 25
<>または!=等しくないことを比較するage <> 30
<より小さいことを比較するage < 40
>より大きいことを比較するage > 20
<=以下であることを比較するage <= 50
>=以上であることを比較するage >= 18
BETWEEN範囲内であることを比較するage BETWEEN 20 AND 30
LIKEパターンに一致することを比較するname LIKE ‘J%’(Jで始まる名前)

これらの比較演算子を使って、データを条件に基づいてフィルタリングすることができます。

データのソート

ORDER BY句

SELECT文でデータのソート順を指定するためには、ORDER BY句を使用します

ORDER BY句はSELECT文の最後に記述されます。指定した列を基準にしてデータを昇順または降順で並び替えることができます。

でじ冒
でじ冒

昇順:小さい値から大きい値
降順:大きい値から小さい値

ORDER BY句でのソート順は、昇順がデフォルトです。昇順でソートする場合、列名の後に何も指定せずに使用します。

以下は、age列を昇順でデータをソートしています。

SQL

SELECT *
FROM users
ORDER BY age;

降順でソートする場合は、列名の後にDESCキーワードを指定します

以下は、age列を降順でデータをソートしています。

SQL

SELECT *
FROM users
ORDER BY age DESC;

大手非公開求人多数。エンジニア転職なら【クラウドリンク】

複数列によるソート

ORDER BY句では、複数の列を指定してソートすることも可能です

列名をカンマで区切って指定します。最初に指定した列を基準にソートされ、同じ値の場合は次に指定した列でソートされます。

以下は、age列でまず昇順にソートし、同じageの場合はname列で昇順にソートしています。

SQL

SELECT *
FROM users
ORDER BY age, name;

データの絞り込み

SQLのSELECT文の基礎:条件指定からソートまで徹底解説!

DISTINCT句

SELECT文で重複する値を削除するためには、DISTINCT句を使用します

SELECT文の列名の前にDISTINCT句を記述することで、取得結果から重複した値が排除されます。

以下は、customersテーブルのcity列から重複する値を削除して、一意の都市名のみを取得します。

SQL

SELECT DISTINCT city
FROM customers;

LIMIT句

SELECT文で取得する結果の制限を設定するためには、LIMIT句を使用します

LIMIT句の後に取得するレコードの数を指定します。

以下は、productsテーブルから最初の10件のレコードのみを取得しています。

SQL

SELECT *
FROM products LIMIT 10;

OFFSET句

SELECT文で結果の開始位置を指定するためには、OFFSET句を使用します

OFFSET句の後にスキップするレコードの数を指定します。

以下は、productsテーブルから結果の21番目から30番目のレコードを取得しています。

SQL

SELECT *
FROM products LIMIT 10 OFFSET 20;

データの集約

SQLのSELECT文の基礎:条件指定からソートまで徹底解説!

集計関数

SELECT文で複数の行を集約し、集計値を計算するためには集計関数を使用します

以下は、よく使用される集計関数です。

関数用途
COUNT行の数をカウント
SUM数値列の合計を計算
AVG数値列の平均を計算
MAX列の最大値を取得
MIN列の最小値を取得

以下は、productsテーブルのpriceの最大値を取得しています。

SQL

SELECT MAX(price)
FROM products;

GROUP BY句

SELECT文でデータをグループ化するためにはGROUP BY句を使用します

GROUP BY句はSELECT文の最後に記述されます。グループ化するための列名を指定することで、その列の値が同じ行がグループ化されます。使用することで、グループごとの集計や集合演算を行うことができます。

以下は、productsテーブルのcategory列でデータをグループ化し、それぞれのカテゴリごとの行数を取得しています。

SQL

SELECT category, COUNT(*)
FROM products GROUP BY category;

HAVING句

GROUP BY句と組み合わせて、グループ化された結果に対する条件を指定するためには、HAVING句を使用します

HAVING句はSELECT文の最後に記述されます。WHERE句と同様に、条件式を記述し、グループ化された結果に対してフィルタリングを行います

以下は、productsテーブルのカテゴリごとの平均価格が1000を超えるグループのみを取得しています。

SQL

SELECT category, AVG(price)
FROM products GROUP BY category HAVING AVG(price) > 1000;

おわりに

SQLのSELECT文の基礎:条件指定からソートまで徹底解説!

今回は、SQLのSELECT文について詳しく解説しました。

SELECT文はデータベース操作において非常に重要な役割を果たし、データの取得や条件の指定、ソートや制限の設定など、さまざまな操作が可能です。

引き続きSQLの学習を進め、データベース操作のスキルを向上させましょう。

コメント

タイトルとURLをコピーしました