気ままに気ままのエンジニアブログ

定期的に得た知見を気ままに発信中

業務で使った基礎的なSQLを振り返る

こんにちは。

今年の桜は、もう満開になって来ておりますが、私のエンジニア人生はまだ、蕾にすらなっておりません。

f:id:hachimaki37:20200329101452j:plain
遅咲きの開花なんて言わせない。明日には、開花だ!
早く開花したい。
どうも、ハチマキです。

はじめに

ここ最近業務でSQLを叩くことが増えたので、一通り学んだことを書き残していこうと思います。

最初は、何がなんだが全くわからず、上長にSQLググってもわかりません。。
最悪の質問で、すみません。。

反省しながら、前を向いてアウトプットしていこうと思います。

f:id:hachimaki37:20200322104212j:plain
誰やねん。
それでは、行きましょう!

本日の概要:業務で使った基礎的なSQL文を振り返る

  • 使用データベース:MySQL

SELECT・・・テーブルからデータ抽出

  • 使用するテーブル

f:id:hachimaki37:20200322122923j:plain
親戚名テーブル(relatives)

  • 基礎構文

1. SELECT カラム名
 FROM テーブル名;

  • relativesテーブルからlast_nameカラムを取得する

2. SELECT last_name
 FROM reletives;

  • *を使えば全てのカラムを取得できる

3. SELECT *
 FROM reletives;

WHERE・・・検索条件を絞る
  • 基礎構文

1. SELECT カラム名
 FROM テーブル名
 WHERE 条件文;

  • relativesテーブルからlast_nameカラム、gender_idカラムが2の要素を取得する

2. SELECT last_name
 FROM reletives
 WHERE gender_id = 2;

JOIN・・・複数テーブルを結合する(JOINには、いくつか種類あり)

  • 使用するテーブル

f:id:hachimaki37:20200322121119j:plain

f:id:hachimaki37:20200322121204j:plain

  • 基礎構文

1. SELECT カラム名
 FROM テーブル名A
 INNER JOIN テーブル名B 
 ON 結合条件 ;

  • relativesテーブルとgenderテーブルを結合

2.SELECT gender_id,id
 FROM reletives
 INNER JOIN gender
 ON relatives.gender_id = gender.id;

補足
  • ON句
    • 結合するための条件を指定
  • in / = の使い分け
    • in・・・条件が複数時に用いる
    • =・・・条件が1つに限る時に用いる

サブクエリ・・・入れ子になったSQL

  • 基礎構文

1. SELECT カラム名
 FROM テーブル名
 WHERE 条件文 =
  (SELECT カラム名
   FROM テーブル名
   WHERE ...
   );
※()がサブクエリ部分

ASC / DESC・・・抽出したレコードの並び変え

  • 基礎構文

1. SELECT カラム名
 FROM テーブル名A
 ORDER BY カラム名 asc (desc); 

  • asc・・・昇順
  • desc・・・降順

DISTINCT・・・重複行をまとめる

  • 基礎構文

1. SELECT DISTINCT カラム名
 FROM テーブル名A;

LIKE演算子・・・条件の一部に~~が含まれる値を取得


※基本的にWhere句で使用する

  • 基礎構文

1. SELECT カラム名
 FROM テーブル名A
 WHERE カラム名 LIKE "%~~%";

参考資料

                                            • -

本日のまとめはこんな感じです。
以上、ハチマキでした。