BLOG

【プログラマー 新人研修 SQL】新人キャイダの記録10

ついにブログも10になりました。
研修も最終日です。
最終日なのにSQLの復習で終えてしまうのは何か申し訳ないなと感じつつ
とりあえず頑張ります。オワラナイドラゲナイなのはいけません。
ブログって「現実なら滑ってそうな話」をしても精神的に何もこないから
いいですよね。オワラナイドラゲナイなんて現実で使ったらつまんなとか
言われちゃいますよ。
現実で面白いこと言える「覚悟」は僕にないのでインターネットという大海原の孤島、ブログで一人変なことをつぶやき続けます。
何が言いたいのかよく分からなくなってきた所でSQLの復習をして
研修にケリをつけます。

・関数

便利な関数君です。
合計の計算してくれたり平均値を出してくれる、色々と頼もしい奴です。

SELECT
SUM(stock)
FROM
fruits
;
このように扱います。
SUM(カラム名)で合計を出してくれます。以下関数達です。

SUM() カラムの合計値
AVG() カラムの平均値
COUNT() カラムのレコード数
MAX() カラムの最大値
MIN() カラムの最小値

COUNTだけはNULLも数えてくれます。

他にもよく扱うものは
ROUND() 四捨五入
SELECT ROUND(1.25, 1); →1.3


TRUNCATE() 切り捨て
SELECT TRUNCATE(1.25, 1); → 1.2

POWER() べき乗
SELECT POWER(2, 3); →8

LENGTH() 文字列の長さ
SELECT LENGTH(”123”); →3

CHAR_LENGTH() 文字列の長さ
(日本語対応) SELECT CHAR_LENGTH(”aあ1”); →3

TRIM() 空白の削除
SELECT TRIM(“ a あ ”); →a あ

指定した文字の削除
SELECT TRIM(“a” FROM “a あ”); → あ

SUBSTRING() 文字列の切り取り
SELECT SUBSTRING(“あいう”, 2, 2); →いう

クッソ見づらくてすみません。
以上このようなものがあります。たくさんあって、面倒ですね!
けれども慣れねばなりません…。

・グループ

は~い、3人組作って~。えええ、キャイダ君余っちゃったの!?
誰かキャイダ君と組んでくれる人~?ww

という記憶は特にないです。
グループ化という使い方になります。
例えばテーブルにteam「A」、「B」があったとして、それぞれのチームにいる人数を足して合計人数を知りたいとします。

SELECT
COUNT(name)
FROM
soccer_team
GROUP BY
team

;
こうすることでA、Bそれぞれのグループとした人数を
カウントしてくれるようになります。

また、GROUP BY に条件を付けたい場合は
HAVINGを付け足すことで実現可能です。

・副問い合わせ

副問い合わせ、サブクエリとも呼びます。
イメージとしては自分で都合の良いようにテーブルを作っちゃう感じでしょうか。
使い方は以下のようになります。

LECT ename, job
FROM emp
WHERE job = (
SELECT job
FROM emp
WHERE ename=’KYAIDA’);

副問い合わせは () の中にSELECT文を入れ、そこにテーブルを作ることが出来ます。
その作ったテーブルの値を条件に扱うことが可能なので
まぁ簡単に言うと「すっげぇ便利!」という話になります。

・テーブル結合

最後です。
最後はテーブルの結合です。
結合とは、2つのテーブルをまとめちゃうぜという感じのやつです。
共通のカラムの値がある場合、それを基準にして結合が行えます。
内部結合、外部結合の2つがあり、

内部結合は共通する値の時だけレコードを表示させます。
外部結合はどちらかのテーブルを基準に表示させ、一方の基準ではないほうのデータは表示されない場合もあります。
なんのこっちゃという感じですね。
とりあえず以下が構文になります。

SELECT
カラム名
FROM
テーブル名1
INNER JOIN テーブル名2
ON テーブル名1.カラム名 = テーブル名2.カラム名;

こちらはテーブル1 、テーブル2に共通する値のレコードのみを表示できます。

次は外部結合です。

テーブル名1(左に記載)を基準にして結合
SELECT カラム名
FROM テーブル名1
LEFT JOIN テーブル名2
ON テーブル名1.カラム名 = テーブル名2.カラム名;

テーブル1にあってテーブル2にない値は表示できません。
テーブル1の値は基本すべて出力可能です。

テーブル名2(左に記載)を基準にして結合
SELECT カラム名
FROM テーブル名1
RIGHT JOIN テーブル名2
ON テーブル名1.カラム名 = テーブル名2.カラム名;

こちらは逆で、
テーブル2にあってテーブル1にない値は表示できません。
テーブル2の値は基本すべて出力可能です。

という感じで一応SQLの単元は終わりです。

研修を完走した感想ですが、1か月という短い期間ではありましたが、
知識はだいぶ詰め込めたと思います。
お菓子も常時摂取可能なので糖分に困ることもありません。
研修自体はゆるく進行するのでとくに厳しいと感じることもありませんでした。
勉強はしっかりやらないとやべーですけど。
気になる点としては外の暑さでしょうか。熱中症には気を付けましょう、はい。

遂に現場デビューマンなので気を引き締めて臨んできます。
ありがとうございました。

BLOGトップへ戻る