データベースとSQL 初学者とは?
以下のサイトで初学者判定された人。(自分)
データベースとSQLの業務スキルレベル 判別表
各項目に関して調べたことを、忘れないように簡単にまとめておく。
(テーブルやカラムの) 「論理名」と「物理名」の違い
- 論理名:人間向けの名称
- ex.)
従業員
- ex.)
- 物理名:コンピュータ向けの名称
- ex.)
employee
- ex.)
「論理削除」と「物理削除」の違い
- 論理削除:実際にはデータを削除せずに、削除されたと見なすフラグをカラムとして設定すること
- ex.)
あるテーブルにdelete_flagというboolean型のカラムを追加
削除イベントの時に値をセットすることで、削除されたデータとして扱う
- ex.)
- 物理削除:実際にデータを削除。SQLでのDELETE実行と同義。
「WHERE カラム名 = NULL」の正しい書き方
- 結論:「WHERE カラム名 IS NULL」
- 備考:「WHERE カラム名 IS NOT NULL」もある
ORDER BY, LIMIT, OFFSETを使った絞込み
- ORDER BY句
- 抽出したデータを並べ替る時によく使用される
昇順:ASC
降順:DESC
- 抽出したデータを並べ替る時によく使用される
- LIMIT句
- 抽出する行数を制限する
指定した行数より多くの行数が返されることは無い(少ない場合はある)
- 抽出する行数を制限する
- OFFSET句
- 返す行の開始位置を飛ばす
LIMITと両方指定した場合は、OFFSET分の行を飛ばしてから、LIMIT行を数え始める
- 返す行の開始位置を飛ばす
- 例文(無理矢理3つ使いました感が否めない・・・。)
抽出した結果を○順に並べ替え、num1番目からnum2数分レコード欲しい
SELECT select_list
FROM table
[ ORDER BY ASC|DESC ]
[ LIMIT num1] [ OFFSET num2 ]
M・V・Cの3層構造について
- プログラムのデザインパターンの1つ。あくまで1つなので正解ない。
- M(Model):表示や入力に関連しない処理
- V(View):表示や入力に関する処理
- C(Controller):MとVを使った処理、橋渡し役
- モデルはデータAPI的に設計すると良いらしい
DAOについて
- Data Access Objectの略。プログラムのデザインパターンの1つ。
データアクセスに関わる操作やロジックの役割をもつ処理の集まり
マスタデータとは何か それを格納するテーブルがアプリ内でどういう性質を持つのか
- 正直しっくりきた説明が見つからない。その中でも少し納得したのが以下。
- マスタデータ:固定的なデータ。管理者のみが更新するようなデータ。
- トランザクション:流動的なデータ。ユーザが更新するようなデータ。
- アプリ内でどういう性質を持つのか?
- 誰か教えてください
JOINを使いこなすには?
- JOINとは「テーブルの結合」という意味合い
複数の表(テーブル)を組み合わせる処理のこと- 内部結合:連結キーで複数テーブルを結合し、両テーブルに共通して存在するカラムのみ出力する結合
- 外部結合:内部結合に加え、どちらかのテーブルにしか存在しないカラムも出力する結合
- 以下のサイトがわかりやすかったです
SQL素人でも分かるテーブル結合(inner joinとouter join) - 使いこなすとは・・・?
- どういうときに使えば良い、メリットデメリット教えてください。
テーブル定義書やER図といったもの全てを、一緒に自動で管理してくれるツール
- A5:SQL Mk-2(有名どころらしい)
- 以下のサイトが導入まで分かり易い
A5:SQL Mk-2を使ってDB定義書を自動生成
GROUP BYとHAVINGを正しく組み合わせて使う方法 & WHEREとHAVINGの違い
-
GROUP BY句
- カラム名を指定すると、そのカラム名に格納されている値が同じデータをグループとしてまとめる
- 複数のカラム名を指定した場合、複数のカラムの値の組み合わせが同じデータをグループとしてまとめる
-
HAVING句
- GROUP BY句でグループ化されたデータに対し、検索条件を指定して絞り込むことができる
- 組み合わせて使う方法
例文
SELECT 列名
FROM 表明
[ WHERE 条件 ]
[ GROUP BY 列名 ] [ HAVING 条件]
-
WHEREとHAVINGの違い
- 結論:
- WHERE句は「SELECT句の結果から(WHERE句で)指定した抽出条件を実行する」
- HAVING句は「GROUP BY句の結果から(HAVING句で)指定した抽出条件を実行する」
- 以下のサイトが分かり易い
[SQL] Where句とHaving句の違い
- 結論: