20201019_アウトプット①(データベース深堀り)

アプトプット画像

学んだこと 2時間

ORMってなんぞや

  • ORM(Object-Relational-Mapping)とは、RDB(リレーショナルデータベース※つまりDB)の「データ」を、オブジェクト指向プログラミング言語でオブジェクトとして使用するために変換する技術のこと。(Railsでいう、ActiveRecordのこと)

  • SQL(Structuredスタクチャード Queryクエリ Language)とは、データベース操作を行うことができる言語。ActiveRecordなどのORMのメソッドは、SQLに変換されるので、テーブルの操作が可能になる。

  • SQLは、ISO(国際標準化機構)で規格化が行われている。

SQLによる命令文ってどんなものがあるの?

Data ほにゃらら Language

ほにゃららには、
(1)Definition(デフィニション):定義
(2)Manipulation(マニピュレーション):操作
(3)Control:制御
が入る。


DDL(定義)のできること
命令 機能
CREATE DBやテーブル作成
ALTER DBやテーブル更新
DROP DBやテーブル削除


DML(操作)のできること
命令 機能
INSERT データの登録
UPDATE データの更新
DELETE データの削除
SELECT データの検索


DCL(制御)のできること
命令 機能
COMMIT DBの変更の確定
ROLLBACK DBの変更の取消
GRANT ユーザーに操作権限付与
REVOKE ユーザーの操作権限を無効化


Railsの中で、あえて、SQLで書くにはどうしたらいいの?

  • find_by_sqlメソッドを使ってみよう

  • find_by_sqlメソッドとは、RailsSQL文を使って、データを検索・取得したい時に使用するメソッドだよ

  def index
    query = "SELECT * FROM tweets"
    @tweets = Tweet.find_by_sql(query)
  end
  • 上記は試しに、indexアクションを、Tweet.allではなく、SQL文のSELECT * FROM tweetsに変えたものだよ



  • ターミナルからログをみた時にカラーが違う部分がSQLによる命令の部分だよ

  • 覚書  OFFSETは開始位置、LIMITはその分だけ



感想

  • ちょうど「オブジェクト指向でなぜつくるのか(第2版)」を読んでいたところだったので、Active Recordのような便利な機能の裏側で、データベースとやりとりしてくれるSQL文がターミナルで表示されることや、VSコードから書き換えを少しできて、嬉しかった!!

  • その本を読んでいるおかげで、今私が勉強しているRubyも、先人たちの知恵の賜物のおかげで、翻訳すれば分かりやすい言葉で書いてあるんだなあとありがたみを感じている。(ここで悲鳴上げちゃいけないんだと)

  • 歴史を知るって深みが増すので大事だな。

  • 今は、高級言語であるRubyJavaScriptで必死だけれども、ゆくゆくは、高級言語ができる前の、もっとパソコンに直接的に指示しているような部分の学びも深めていきたい。