SELECT文は指定したテーブルからレコードを抽出する際に用いるSQL文で、SQL文全体の中で最も頻繁に用いられる構文です。
SELECT 列名1, 列名2, ... FROM テーブル名 WHERE 条件式;
参考 SQLとは?
SELECT文は何も見なくてもすらすらと書けるのが、プログラマー/システムエンジニアとしての基本です!是非最後までご覧ください。
SELECT文の基本を知らないと、どの言語を扱うプログラマーであっても現場でも大変苦労します。このページの内容は確実に理解するようにしましょう!
"SELECT" は大文字で書けば良い?小文字で書けば良い・・・?
SQLの基本的な記述ルールが実は曖昧・・・。という方は以下の記事も併せてご覧ください。
SELECT文の基本
テーブルからデータを取得する際の基本的なSELECT文は以下の通りです。
SELECT 列名1, 列名2, ... FROM テーブル名 WHERE 条件式;
SELECT
: 取得したいカラム(列)を指定します。FROM
: どのテーブルからデータを取得するかを指定します。WHERE
(任意): 取得するデータの条件を指定します。この句はオプションで、指定しなければテーブルの全てのデータが取得されます。
以下は、employees
というテーブルからfirst_name
とlast_name
を取得する例です。
取得したいカラムが複数ある場合は「,」で区切ります。
/* 対象テーブルのレコード +----+------------+-----------+-------------+ | id | first_name | last_name | department | +----+------------+-----------+-------------+ | 1 | John | Doe | Engineering | | 2 | Jane | Smith | HR | | 3 | Alice | Johnson | Sales | | 4 | Bob | White | Engineering | +----+------------+-----------+-------------+ */ -- 全ての従業員の名前を取得 SELECT first_name, last_name FROM employees; /* 結果 +------------+-----------+ | first_name | last_name | +------------+-----------+ | John | Doe | | Jane | Smith | | Alice | Johnson | | Bob | White | +------------+-----------+ */ -- first_nameが"John"である従業員の名前と部署を取得 SELECT first_name, last_name, department FROM employees WHERE first_name = 'John'; /* +------------+-----------+-------------+ | first_name | last_name | department | +------------+-----------+-------------+ | John | Doe | Engineering | +------------+-----------+-------------+ */
↑の形がSELECT文の基本中の基本です。
WHERE:抽出条件の指定
WHERE句についてはいくつかの注意点があるので、1から基本から再度振り返っておきます。
WHERE
(任意): 取得するデータの条件を指定。指定しなければテーブルの全てのデータが取得される。
例えば、↓のテーブルから「Suzuki」さんに関するデータを取得したいような場合。
このようなシーンで利用されるのがWHERE句です。
レコードを抽出する条件を指定する場合、以下のようにWHERE句を用います。
MemberList テーブルから "Name" 列が「Suzuki」となっているものを取得する場合のサンプルコードがこちらです。
SELECT Number, Name, Address, PhoneNumber FROM MemberList WHERE Name = "Suzuki";
SELECT *:すべてのカラムを抽出する
テーブルのカラムが多くなっていくと、1つ1つのカラムをSELECT句で指定するのは大変です。
そこで、テーブルにあるすべてのカラムを抽出したい場合は「* アスタリスク」を用います。
SELECT *
の基本
*
はワイルドカードとして機能し、テーブル内のすべてのカラムを意味する。- このコマンドは、テーブルの内容を迅速に確認したい時や、テーブルの構造(どのようなカラムがあるか)を知りたい場合に便利です。
SELECT * FROM (テーブル名);
例えばテーブル「employees」からすべてのカラムを抽出したい場合は以下のように記述します。
SELECT * FROM employees;
結果はすべてのカラムがそのまま抽出されます。
「*」を利用すればSQL文の記述も早くなりカラム名指定などのミスも格段に減ります。
ただし、すべてのカラムを抽出する分、SQL実行のパフォーマンスも落ちてしまうというデメリットも存在します。
ちょっとしたときにSELECT文を書くようなときは「*」指定はOKですが、例えば高効率なパフォーマンスが求められる場合や、抽出したいカラムが決まっている場合は1個1個カラムを指定するように心がけることをおすすめします。
AS:カラム名に別名を付与して抽出
SQL文では、抽出するカラム名に別名を付与してレコードを抽出することが可能です。
SELECT Number AS "番号", Name AS "氏名", Address AS "住所", PhoneNumber AS "電話番号" FROM MemberList;
通常、テーブルのカラム名はアルファベットか数字で表されている場合が多いのですが、これだと少し分かりづらい場面があります。このようなタイミングでASキーワードを利用して日本語の別名を付与してあげたりする使い方もできます。
日本語で別名を付与する場合は必ず「" ダブルクォーテーション」で囲んであげる必要があります。
もし、別名もアルファベットで付与する場合にはダブルクォーテーションは不要です。
SELECT Number AS A, Name AS B, Address AS C, PhoneNumber AS D FROM MemberList;
WHERE句では別名(AS)は使用不可
WHERE句の注意点の1つが、別名使用不可という点です。
例えば以下のような利用方法はできません。
SELECT Number AS A, Name AS B, Address AS C, PhoneNumber AS D FROM MemberList WHERE B = "Suzuki";
せっかくASキーワードで別名を付けたのだからWHERE句でも使いたい・・・!という気持ちもしますが、SQLではNGです。データベース初心者にとっては陥りがちなミスの1つでもあるので、しっかり頭に入れておきましょう。
SQL:SELECT文のまとめ
現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。
SQLやデータベースの仕組みを1から学習したい方(学び直したい方)向けに、現役エンジニア達のスキルを結集して 完全無料 のSQL教材を作成しました。是非この機会にブックマークを!
読者料典 【完全無料】SQL:初心者向け学習ロードマップ ←こちらから!