9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

データベースとSQL 初学者用 まとめ

Last updated at Posted at 2018-05-18

データベースとSQL 初学者とは?

以下のサイトで初学者判定された人。(自分)
データベースとSQLの業務スキルレベル 判別表

各項目に関して調べたことを、忘れないように簡単にまとめておく。

(テーブルやカラムの) 「論理名」と「物理名」の違い

  • 論理名:人間向けの名称
    • ex.)
      従業員
  • 物理名:コンピュータ向けの名称
    • ex.)
      employee

「論理削除」と「物理削除」の違い

  • 論理削除:実際にはデータを削除せずに、削除されたと見なすフラグをカラムとして設定すること
    • ex.)
      あるテーブルにdelete_flagというboolean型のカラムを追加
      削除イベントの時に値をセットすることで、削除されたデータとして扱う
  • 物理削除:実際にデータを削除。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図といったもの全てを、一緒に自動で管理してくれるツール

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句の違い
9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?