20201019_アウトプット①(データベース深堀り)
学んだこと 2時間
ORMってなんぞや
ORM(Object-Relational-Mapping)とは、RDB(リレーショナルデータベース※つまりDB)の「データ」を、オブジェクト指向プログラミング言語でオブジェクトとして使用するために変換する技術のこと。(Railsでいう、ActiveRecordのこと)
SQL(Structuredスタクチャード Queryクエリ Language)とは、データベース操作を行うことができる言語。ActiveRecordなどのORMのメソッドは、SQLに変換されるので、テーブルの操作が可能になる。
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で書くにはどうしたらいいの?
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も、先人たちの知恵の賜物のおかげで、翻訳すれば分かりやすい言葉で書いてあるんだなあとありがたみを感じている。(ここで悲鳴上げちゃいけないんだと)
歴史を知るって深みが増すので大事だな。
今は、高級言語であるRubyやJavaScriptで必死だけれども、ゆくゆくは、高級言語ができる前の、もっとパソコンに直接的に指示しているような部分の学びも深めていきたい。