SQLの全てがっここにある!

【SQL】データを抽出するSELECT文の基本的な使い方

ENGINEER.CLUB編集部

SQLの中のDML(Data Manipulation Language:データ操作言語)には、SELECT(抽出)INSERT(挿入)UPDATE(更新)DELETE(削除)がありますが、その中のSELECT文について説明します。

実際SELECT文を使うときは、色々加工する必要がありますが、まずは、SELECT文の基本的な使い方を覚えていきましょう。


1.SELECT文

SELECT文は、テーブルからデータを抽出するときに使います。

とあるテーブル(データの集合体)からどのような条件でデータを抽出してほしいのかを表した命令文です。

1-1.SELECTの基本的な構文

基本的な構文は以下の通りです。

★構文

SELECT列名

FROM テーブル名;

SELECT文の終わりは、「;(セミコロン)」を付けます。

この構文に

  • 複数のテーブルを結合
  • 列と列を結合
  • 演算子を使用して計算
  • 列の値をExcelの関数と同じように使用(例えば、何桁目から何桁目の文字を取得など)
  • どのような条件でデータを絞りこむのか
  • どの順番にデータを並べるか

などさまざまに加工をしてSELECT文を作成することができます。

イメージは、ExcelWordなどで作成する「マトリック表」です。

【例】社員表

社員番号 名前 部署名 性別
00001 名前1 A部署 男性
00002 名前2 A部署 女性
00003 名前3 B部署 男性
00004 名前4 A部署 男性
00005 名前5 A部署 女性
00006 名前6 B部署 男性

「列名」が、縦方向の「列」(社員番号・名前・部署名・性別)

「テーブル」が、「マトリックス表」(社員表)

「レコード」が、横方向の「行」(例えば、00001・名前1・A部署・男性)

1-2.SELECTの使用例

まずは、実際のテーブルとは違いますが、例文を通してSELECT文をイメージしてみましょう。

【例1】テーブルの列名:「社員番号」、「名前」を全データ表示

★構文

SELECT 列名1,列名2, 列名3・・・

FROM テーブル名;

複数の列名を指定する場合は、列名間を「,(カンマ)」で区切ります。

出力結果

【例2】テーブルの全列名、全データを表示

★構文

SELECT *

FROM   テーブル名;

または

SELECT 列名1,列名2,列名3・・・

FROM   テーブル名;

全項目を指定する場合は、全列名を一つずつ指定でも「*(アスタリスク)」を指定でも同じ意味になります。

●全列名を一つずつ指定した場合

●*(アスタリスク)を使用した場合

出力結果

【例3】テーブルの全列名、「A部署」だけのデータを表示

★構文

SELECT *

FROM テーブル名

WHERE列名 比較演算子 条件値;

または

SELECT 列名1,列名2,列名3・・・

FROM   テーブル名

WHERE列名 比較演算子 条件値;

列名の値が文字の場合は、文字を「’(シングルクォーテーション)」で囲みます。

列名の値が数字の場合は、数字をそのまま「’(シングルクォーテーション)」で囲みは不要です。

※この例では、‘A部署になります。

【参考】WHERE句で使用できる比較演算子

比較演算子 説明
= 等しい
< 小さい
> 大きい
<= 以下
>= 以上
<> または != 等しくない

出力結果

【例4】テーブルの全列名、「A部署」だけのデータで、「社員番号」で昇順(多い順)・降順(少ない順)に表示

★構文(昇順)

SELECT *

FROM テーブル名

WHERE列名 比較演算子 条件値

ORDER BY 列名;

または

SELECT 列名1,列名2,列名3・・・

FROM  テーブル名

WHERE  列名 比較演算子 条件値

ORDER BY 列名;

★構文(降順)

SELECT *

FROM  テーブル名

WHERE  列名 比較演算子 条件値

ORDER BY 列名 DESC;

または

SELECT 列名1,列名2,列名3・・・

FROM  テーブル名

WHERE  列名 比較演算子 条件値

ORDER BY 列名 DESC;

●全列名を一つずつ指定した場合(昇順)

●*(アスタリスク)を使用した場合(昇順)

出力結果

●全列名を一つずつ指定した場合(降順)

●*(アスタリスク)を使用した場合(降順)

出力結果


2.実際の列名の値の加工内容を確認 ~覚えておくと便利なDUAL表~

ある程度、SELECT文を作成に慣れてくると、列名の値を加工して出力することが多くなります。

列名の値の加工内容を確認するのに「DUAL表」を覚えておくと便利です。

【例】SELECT文で出力するときの日付の表示形式を「YYYY/MM/DD」の表示にしたい

ORACLEの場合、日付の表示形式の確認方法

DB2の場合、日付の表示形式の確認方法

出力結果

実際そのまま使用しようした場合、表示したい形式と違うことがわかった場合、SELECT文の日付の表示形式を加工します。

ORACLEの場合

DB2の場合

出力結果

※ご使用のRDBにより、「DUAL表」、日付の表示なども異なりますので、ご利用する前に環境のご確認をお願い致します。


3.さいごに

以上、SQL SELECTについての基本的な使い方をまとめました。

本来ならキーワードや文字列や計算など加工して表示するときに使用する関数などがありますが、さまざまな加工方法は、応用になりますので、まずは、基本的な構文をしっかり理解した方がよいかもしれません。

初めてSELECT文を使う方には、抵抗があるかもしれませんが、この記事を読んで、参考になるところがあれば光栄です。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。