【SQL】SELECT文の基本をわかりやすく3分で解説

Database

SQL初心者向けにSELECT文をわかりやすく1から解説します。

SELECT文は指定したテーブルからレコードを抽出する際に用いるSQL文で、SQL文全体の中で最も頻繁に用いられる構文です。

SELECT文は何も見なくてもすらすらと書けるのが、プログラマー/システムエンジニアとしての基本です!是非最後までご覧ください。

このページで学べる内容
  • SELECT文の基本
    • カラムを指定
    • 全カラムを指定
    • AS:別名の付与
  • WHERE:抽出条件の指定

SELECT文の基本を知らないと、どの言語を扱うプログラマーであっても現場でも大変苦労します。このページの内容は確実に理解するようにしましょう!

スポンサーリンク

SELECT文の基本

テーブルからデータを取得する際の基本的なSELECT文は以下の通りです。

SELECT (カラム名),・・・
  FROM (テーブル名);

SELECT句には取得したいカラム名を。FROM句には取得対象となるテーブル名を記述します。

句(clause)

句 とはSQLを構成する要素のこと。SELECT / FROM などのSQLキーワードから始まるフレーズを指します。

SELECT句やFROM句などというように「SQLキーワード+句」とセットで呼称するのが一般的です。

以下のテーブルから "Number" "Name" "PhoneNumber" のカラムを指定してレコードを取り出す場合を考えてみます。

取得したいカラムが複数ある場合は「,」で区切ります。

SELECT Number, Name, PhoneNumber
  FROM MemberList;

SELECT句に "Number" "Name" "PhoneNumber" を指定。FROM句に "MemberList" を指定します。その結果がこちら。

指定した "Number" "Name" "PhoneNumber" が抽出されました。SELECT句に指定していない "Address" 項目は抽出されません。

この形がSELECT文の基本中の基本です。

SELECT句には抽出したいテーブルのカラム名を。FROM句にはレコードを取り出したいテーブル名を指定する―。決して難しくはありませんので、この場で暗記してしまいましょう。

ここからは、この基本形をベースに応用的な処理を解説していきます。

SELECT *:すべてのカラムを抽出する

テーブルのカラムが多くなっていくと、1つ1つのカラムをSELECT句で指定するのは大変です。

そこで、テーブルにあるすべてのカラムを抽出したい場合は「* アスタリスク」を用います。

SELECT *
  FROM (テーブル名);

例えばテーブル「MemberList」からすべてのカラムを抽出したい場合は以下のように記述します。

SELECT *
  FROM MemberList;

結果はすべてのカラムがそのまま抽出されます。

SELECT * の結果

これは以下のSQL文を実行した結果と同じです。

SELECT Number, Name, Address, PhoneNumber
  FROM MemberList;

「*」を使用すると、結果の並び順は「CREATE TABLE」で定義した通りに出力されます。

結果の並び順を変更したい場合には、SELECT句でカラム名を順番を変えて記述する必要があります。

「*」を利用すればSQL文の記述も早くなりカラム名指定などのミスも格段に減ります。

ただし、すべてのカラムを抽出する分、SQL実行のパフォーマンスも落ちてしまうというデメリットも存在します。

ちょっとしたときにSELECT文を書くようなときは「*」指定はOKですが、例えば高効率なパフォーマンスが求められる場合や、抽出したいカラムが決まっている場合は1個1個カラムを指定するように心がけることをおすすめします。

AS:カラム名に別名を付与して抽出

SQL文では、抽出するカラム名に別名を付与してレコードを抽出することが可能です。

SELECT Number      AS "番号", 
       Name        AS "氏名", 
       Address     AS "住所", 
       PhoneNumber AS "電話番号"
  FROM MemberList;
SELECT文(ASキーワード)

通常、テーブルのカラム名はアルファベットか数字で表されている場合が多いのですが、これだと少し分かりづらい場面があります。このようなタイミングでASキーワードを利用して日本語の別名を付与してあげたりする使い方もできます。

日本語で別名を付与する場合は必ず「" ダブルクォーテーション」で囲んであげる必要があります。

もし、別名もアルファベットで付与する場合にはダブルクォーテーションは不要です。

SELECT Number      AS A, 
       Name        AS B, 
       Address     AS C, 
       PhoneNumber AS D
  FROM MemberList;

WHERE:抽出条件の指定

これまで解説していた単純なSELECT文では、指定したテーブル/カラムのすべてのデータを抽出しています。

ただし、実際の処理においては特定の条件と合致するデータのみを取得したいようなシーンが存在します。

例えば、上記のテーブルから「Suzuki」さんに関するデータを取得したいような場合。

このようなシーンで利用されるのがWHERE句です。

レコードを抽出する条件を指定する場合、以下のようにWHERE句を用います。

SELECT (カラム名),・・・・・
  FROM (テーブル名)
 WHERE (条件式);

MemberList テーブルから "Name" 列が「Suzuki」となっているものを取得する場合のサンプルコードがこちらです。

SELECT Number, Name, Address, PhoneNumber
  FROM MemberList
 WHERE Name = "Suzuki";

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つでもあるので、しっかり頭に入れておきましょう。

このページのまとめ
  • 指定したテーブルからレコードを抽出するにはSELECT文を用いる
  • SELECT句:抽出するカラムを指定
    • * アスタリスクで全カラムを抽出
    • ASキーワードで別名を指定
  • FROM句:抽出するテーブルを指定
  • WHERE句:抽出する条件を指定
SELECT Number      AS A, 
       Name        AS B, 
       Address     AS C, 
       PhoneNumber AS D
  FROM MemberList
 WHERE Name = "Suzuki";

システムエンジニアを目指したい方は

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

システムエンジニア向けに「できるエンジニア」になる方法を1から解説しておりますので、是非ご覧ください。

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