SQL初心者がすぐに使える!SQLテクニック9選!!




みずき
現役プログラマーのみずきです。
プログラマーとして日々精進する生活を送っています。
・SQL初心者を卒業したい!

・SQLの実用的なテクニックって何?
このような疑問を解決できる記事を用意しました。


この記事を読む事であなたのSQLテクニック(知識)が数段レベルアップする事をお約束します。


なぜなら現役バリバリで、MySQLやOracleDBからSQLを使用してデータの抽出を行っているからです。つまりこの記事は、現役SQL使用者(私)の記事になります!

SELECT句で使えるテクニック

抽出したいデータのカラム名などを書く事ができるSELECT句のテクニックから紹介していきます。

以外にもSELECT句にも便利なテクニックがあるので、どんどん活用していきましょう。

それでは確認していきましょう。

AS(カラム名に別名を付ける)

SELECT文でデータ抽出を行う時に、カラム名に対して別名を付ける事ができます。

使用する場面は下記ですので、しっかり覚えておきましょう。

 

・SQLで複数のテーブル結合を行っていて、カラム名が同一で判別ができない場合

・元のカラム名では何のデータを意味するか分からない場合

 

SELECT文でのASの書き方は、下記になります。これ以外の書き方はないので、覚えやすいですね!

 

1. SELECT
2.  TEST_M AS TEST_MOJI
3.  ,TEST_S AS TEST_SUCHI
4. FROM
5.  TEST_DB;

 

AS TEST_MOJI、AS TEST_SUCHIの部分が別名部分になります。

COUNT(抽出したレコード数をカウント)

見出し通りのですが、SQL文の条件で抽出したレコード数を取得する事ができます。

使用する場面は下記の時が多いです。

 

・抽出できるレコードが何件あるか確認した時

・ほか言語(VBなど)で抽出したカウント数を使用して、ループ文を使いたい時

 

カウントで件数を取得する場合は、2パターンありますので、覚えておきましょう。

 

–件数取得(列指定あり)
1. SELECT
2.  COUNT(TEST_VAL)
3. FROM
4.  TEST_DB;–件数取得(列指定なし)
1. SELECT
2.  COUNT(*)
3. FROM
4.  TEST_DB;

 

補足ですが、「列指定あり」の件数取得のほうがパフォーマンスは良いです。「列指定あり」は全列の件数を取得しているわけではないので。

FROM句で使えるテクニック

FROM句では主に、テーブルに関わりのあるテクニックが多いです。

テーブル結合をする頻度はかなり多いので、必須テクニックになります。

必ず覚えましょう!

AS(カラム名に別名を付ける)(FROM句ver)

先ほどSELECT句で紹介したものとほぼ同じになりますが、使い勝手が少し違いますのでご紹介します。

このテクニックを使用する場面は、下記の時が多いです。

 

・元のテーブル名が長すぎて、SQL文が読みにくい時

・SQL文内に同じテーブル名を複数使用する場合の時

 

書き方もSELECT文と類似していますが、FROM句の場合は「AS」と書かないのが一般的です。

 

1. SELECT
2.  TEST_M AS TEST_MOJI
3. FROM
4.  TEST_DB TDB;

 

上記の場合、TDBが別名になります。

INNER JOIN(テーブル結合)

2つ以上のテーブルを使用する時には、結構な割合で使用します。私の職場では頻繁に使用していますので、必須と言えるでしょう。

下記が使用する時の状況です。

 

・お互いの列(カラム)に同一の列名が存在し、同一の値が存在する時

 

文法は少し長いですが、すぐに覚えられる物ですので覚えてしまいましょう。

 

1. SELECT
2.  *
3. FROM
4.  TEST_DB1 TDB1
5.   INNER JOIN TEST_DB2 TDB2 ON
6.   TDB1.VAL = TDB2.VAL;

 

上記の条件だと、「TDB1とTDB2でお互いのテーブルで一致するVAL(列名)の値を取得する事ができます。」

(LEFT or RIGHT) OUTTER JOIN(テーブル結合)

INNER JOINとは別にOUTTER JOINというテーブル結合も存在します。

これは少しややこしいので、注意してください。

 

–LEFT OUTTER JOINの場合
・お互いのテーブルに同一の列名(カラム名)が存在し、左側に記載したテーブルに値が存在した時に値を取得する事ができる–RIGHT OUTTER JOINの場合
・お互いのテーブルに同一の列名(カラム名)が存在し、右側に記載したテーブルに値が存在した時に値を取得する事ができる

 

使用方法はややこしいですが、文法はどちらも類似しているので簡単です。

 

–LEFT OUTTER JOINの場合
1. SELECT
2.  *
3. FROM
4.  TEST_DB1 TDB1
5.   LEFT OUTTER JOIN TEST_DB2 TDB2 ON
6.   TDB1.VAL = TDB2.VAL; 

–RIGHT OUTTER JOINの場合
1. SELECT
2.  *
3. FROM
4.  TEST_DB1 TDB1
5.   RIGHT OUTTER JOIN TEST_DB2 TDB2 ON
6.   TDB1.VAL = TDB2.VAL;

 

 

仮想テーブル

「仮想テーブル??」となる方もいると思います。

仮想テーブルとは簡単に言ってしまうと、SQL文で抽出した値のみで作成されたテーブルを作成するという事です。

文法も難しくありませんので、大丈夫です。

 

1. SELECT
2.  *
3. FROM
4. (
5.  SELECT
6.   *
7.  FROM
8.   TEST_DB1 TDB1
9.    LEFT OUTTER JOIN TEST_DB2 TDB2 ON
10.    TDB1.VAL = TDB2.VAL
11. )WK

 

 

WHERE句で使えるテクニック

WHERE句は、SQLを使いこなせるかどうかが決まると言ってもいいテクニックですので、必ずマスターしましょう。

 

(NOT)IN句(対象の値の有無)

「(NOT)IN」を知らないとループ処理で値が含まれているかどうか、複数個もSQLを作って確認する事になってしまいます。

ですが「(NOT)IN」を知っておけば、1つのSQLで確認する事が可能です。

 

–IN句の場合(値が含まれている)
1. SELECT
2.  *
3. FROM
4.  TEST_DB
5. WHERE
6.  IN TEST_VAL(10, 20, 30);
–NOT IN句の場合(値が含まれていない)
1. SELECT
2.  *
3. FROM
4.  TEST_DB
5. WHERE
6.  NOT IN TEST_VAL(10, 20, 30);

 

上記の場合だと、TEST_VAL(列名)に「10、20、30」の値が含まれているもの(IN句)、含まれていないもの(NOT IN句)になります。

CASE式(値の真偽判定)

この式は条件分岐を行いたい時に使用します。

汎用的な文法なので、使い勝手も良いです。

 

1. SELECT
2.  TEST_VAL
3. CASE TEST_VAL
4.  WHEN 10 THEN ”値は10です。”
5.  WHEN 20 THEN ”値は20です。”
6.  ELSE “値が不明です。”
7. END
8. FROM
9.  TEST_DB;

 

上記の場合はTEST_VAL(列名)の値が10の時に「値は10です。」と表示し、20の時に「値は20です。」と表示し、それ以外を「値が不明です。」と表示するようになっています。

LIKE句 (あいまい検索)

あいまい検索とは、少しでも一致する文字列などが含まれていた場合に、その値を抽出できるものになります。

例えると、「あいうえお」というレコードがあった場合に、LIKE句で「あいう」が含まれているレコードを抽出しようとすると「あいうえお」のレコードを抽出する事が可能になります。

下記がサンプルコードになります。

 

1. SELECT
2.  *
3. FROM
4.  TEST_DB
5. WHERE
6.  TEST_VAL LIKE ”%あいう%“;

 

他にもLIKE句には種類があります。

 

・ LIKE “%あいう%” (部分一致)
・ LIKE “あいう%”  (前方一致)
・ LIKE “%あいう”  (後方一致)

 

上記の3パターンあるので、使用したい状況によって臨機応変に使用していきましょう。

まとめ

紹介したテクニックを使用できるようになるだけで、かなりSQLの知識幅が広がるのでどんどん活用して覚えてください。

最後にお更いをしましょう。

 

1 SELECT句で使えるテクニック
1.1 AS(カラム名に別名を付ける)
1.2 COUNT(抽出したレコード数をカウント)

2 FROM句で使えるテクニック
2.1 AS(カラム名に別名を付ける)(FROM句ver)
2.2 INNER JOIN(テーブル結合)
2.3 (LEFT or RIGHT) OUTTER JOIN(テーブル結合)
2.4 仮想テーブル

3 WHERE句で使えるテクニック
3.1 (NOT)IN句(対象の値の有無)
3.2 CASE式(値の真偽判定)
3.3 LIKE句 (あいまい検索)

記事を読んでくださり、ありがとうございました。




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

佐藤 瑞希

皆さん、はじめまして。佐藤瑞希です。 ブログを見ていただき、ありがとうございます。ここでは主に、プログラミング学習などの事をつぶやく予定です。たくさんの人に見てもらえると嬉しいです。 職種:プログラマー(主にC#)。 趣味:ギター、ゲーム、英語、アウトドアなど。 DOAのMarie Roseが大好きで、毎日を必死に生きています。(笑)