SQLiteとSQLを混同していました。
RailsのActiveRecordを理解するために、リレーショナルデータベース管理システム(RDBMS)やSQL(構造化クエリ言語)について勉強してみました。
そこで気がついたのは「SQLiteとSQLって別なんだ!」という事です。
• SQLiteはリレーショナルデータベース管理システム(RDBMS)の製品のひとつ
• SQLはRDBMSの色んな製品で共通して使えるデータベース言語
なんですね!
めちゃくちゃごっちゃにしていました。
勉強した事を簡単にまとめるとこんな感じです。
リレーショナルデータベース管理システム(RDBMS)について知る
リレーショナルデータベースとは
データベースには以下の3種類の形があるようです。
「階層型やネットワーク型はどんな時に使うんだろう?」と思いましたが、現在主流なのはリレーショナル型のようです。
リレーショナルデータベース管理システム(RDBMS)とは
“リレーショナル型のデータベースを管理するシステム”という事ですよね。
これには、商用のもの(企業から提供されている商品)とオープンソースのもの(有志の開発者コミュニティで開発され、自由に利用・改変可能)があるようです。
そしてこのRDBMSの機能は以下の4つのようです。
リレーショナルデータベース管理システム(RDBMS)の機能
データベース言語の提供
トランザクション処理
障害からの復旧
分散データベース
それぞれの項目を見ていくとこんな感じ。
データベースは普段見えない部分なのであまり実感はなかったですが、こんなに色々な機能があったんですね。
まとめ
学んだ事をまとめると、
「SQLiteはRDBMSのひとつで、SQLはRDBMSで使えるデータベース言語で、(私はRailsをインストールした時にSQLiteを利用できるように設定していたので、Railsで使っていたであろう)SQLはSQLiteによって提供されていた」
という事ですね。
そしてさらに以下のサイトの内容もまとめると、「本来であればデータベースとデータのやり取りをするにはSQLで書く必要があるけれど、Railsではそれをサポートする機能(Active Record)を用意しているので、SQLより簡単なコードでデータのやり取りが出来ますよ」という事みたいです!
このサイトではRailsのコードがどのようなSQLに変換されるのかも書いてくれています。
例えばよく使っていたbook = Book.find(1)なんかは、SELECT * FROM books WHERE (books.id = 1) LIMIT 1 というのが同等のSQLになるようです。
SQLでは “SELECT” というのがデータベースからデータを取り出すための構文だそうです。
SQLの構文はこのサイトが参考になりました
SELECT文の書き方はこんな感じらしいです。
こんな感じで長くて難しいので、Railsを使う人がコードを短く直感的に書くだけで済むように、Railsのソースコードの部分でActive Recordというクラスを作ってSQLに変換出来るように定義してくれているのかなと思っています。
以上、今回の学びでした!