BLOG

【プログラマー 研修 SQL】スーさんの記録8

こんにちは、新人のスーさんです。

前回でJavaの学習が終わり、今回からSQLの学習になります。さっそく研修内容を振り返っていきます。


本日の内容

[SQL]

・SELECT文、INSERT文、UPDATE文、DELETE文

・WHERE句で行える条件処理

・関数、副問い合わせ、テーブル結合など


所感

SQLはJavaに比べてシンプルで分かりやすいプログラムだと感じました。しかし、エラーが起きた際にどこで起きたのかが分かりにくい事が難点だなと感じました。下記に学んだ事をまとめました。

SQLとは簡単に言うならデータベース(DB)とのデータのやりとりを行うために用いる言語です。

テーブルデータの表の事でカラム(列)、レコード(行)から成り立っています。

SELECT文…取り出したいカラム名とテーブル名を指定することで、指定したカラム名のレコードを取り出すこと出来ます。

INSERT文…新たにデータを挿入したい時に使います。

UPDATE文…既存のデータを更新した時に使います。この時にWHERE句で条件を指定して、どのデータを変更かを指定してあげる必要があります。指定しない場合は全てのデータに適用されるので注意。

DELETE文…削除したいデータをWHERE句を使い、データの削除を行います。指定しない場合は全てのデータに適用されるので注意。

【WHERE句で使える条件処理】

関係演算子…=、!=、<、>、<=、>=を使って値を比較する。

複数の条件を指定する場合は
・WHERE 条件式1 AND 条件式2; …両方の条件を満たしているもの。
・WHERE 条件式1 OR 条件式2; …どちらかの条件を満たしているもの。
・WHERE カラム名 BETWEEN 値1(小) AND 値2(第); …指定したカラム名で値1から値2の間の値。

NULLかどうか、そうでない場合
・WHERE カラム名 IS NULL …NULLの値を抽出。
・WHERE カラム名 IS NOT NULL …NULLでない値を抽出。

範囲の値と比較して取り出したい場合
・WHERE カラム名 IN(値1、値2…); …値1、値2…の値と等しければ抽出。
・WHERE カラム名 NOT IN(値1、値2…); …値1、値2…の値と等しくなければ抽出。

文字列検索
・WHERE カラム名 LIKE %文字列_ ; …%は0~複数文字_は一文字を指定したカラム名より検索して抽出。例えば「%本」だと「マンガ本」や「本」といった感じです。「本_」は「本棚」はOKだが、「本能寺」や「本」はダメです。「本能寺」を検出したい場合は「本%」または「本_ _」と書く。

AS…ASを用いる事でカラム名、テーブル名を別名を付けることが出来る。テーブル結合を行う際に重要となってきます。

CASE…Javaでいうif文と同じ条件文を作成する事が出来ます。

ORDER BY…データを抽出(SELECT)した際にデータの並び替えを行う。ASCまたは無記入の場合は昇順DESC降順になります。またORDER BYを使う時のみ、「LIMIT 正数値」を書くことで表示する行数を指定出来ます。

DISTINCT…「SELECT DISTINCT カラム名~」と書くことで重複したデータを表示しなくなります。

UNION、EXCEPT、INTERSECT…別々のテーブル結合する。

【集計関数】
SUM()…カラムの合計値、AVG()…カラムの平均値、MAX()…カラムの最大値、MIN()…カラムの最小値、COUNT()…カラムのレコード数。
上記の関数はNULLは含まれないが、COUNT(*)はNULLもカウントされる

よく使われる関数
LENGTH()…文字列の長さ(バイト)、CHAR_LENGTH()…文字列の長さ(日本語対応)、TRIM()…空白の削除(文字間の空白は削除しない)、SUBSTRING()…文字列の切り取り

GROUP BY…グループ別に集計を行う際に用いる。HAVINGはGROUP BYの後に記述し、集計結果に対して絞り込みを行う。(WHERE句で集計関数が利用できないため)

【副問い合わせ(サブクエリ)】

単一行副問い合わせ…「~WHERE カラム名 (SELECT~);」()の副問い合わせで抽出させるデータは一行のみ

複数行副問い合わせ…「~WHERE カラム名 IN(SELECT~);」()の副問い合わせで抽出させるデータは複数行

ANY(ORにあたる)、ALL(AND)を使うことによって副問い合わせと比較が行える。
例:WHERE カラム名 関係演算子 ANY(副問い合わせ);

【テーブル結合】

内部結合…どちらのテーブルにも存在するデータのみ出力。片方にしかないデータは出力しない。INNERは省略可能。
例:
SELECT カラム名
FROM テーブル名1
INNER JOIN テーブル名2<b
ONテーブル名1.カラム名 = テーブル名2.カラム名;

外部結合…どちらかのテーブルを基準として出力する。
[テーブル1(左に記載)を基準に結合]
例:
SELECT カラム名
FROM テーブル名1
LEFT JOIN テーブル名2
ONテーブル名1.カラム名 = テーブル名2.カラム名;

[テーブル2(右に記載)を基準に結合]

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

以上になります。しっかりと覚えてSQLを使えるようにしてきたいです。


最後の一言

「Java SE8 Silver」の試験に合格できたのでうれしいです。

BLOGトップへ戻る