見出し画像

RailsのActive RecordとSQLについて

前回Railsがデータベースとどのようにデータのやり取りをしているかを学びました。

せっかくRailsで簡単に出来るように作ってくれているのだから、そちらの勉強に注力した方がいいのかなとも思っています。

なので簡単にだけSQLについて学んでみたいと思います。

Railsでモデルをつくる時のことが、以下のサイトの「Active Recordのモデルを作成する」という項目に書かれています。

Productというモデルを作るとした時の記述

class Product < ApplicationRecord
end

これと同等のSQLは以下のようになるようです。

CREATE TABLE products (
id int(11) NOT NULL auto_increment,
name varchar(255),
PRIMARY KEY (id)
);

このSQLの構文について以下のサイトを参考に勉強してみました。


◇ CREATE TABLEの基本構文

CREATE TABLE テーブル名 (
カラム名1 データ型 オプション,
カラム名2 データ型 オプション,
~~~
);

CREATE TABLEはテーブルを新規に作成する場合に用いるSQL文だそうです。
詳しくは下にまとめています。
先に出来上がりのデータベースのイメージを載せます。

こんな感じかな。

データを追加するのはまた別のSQL文だと思いますが、データが入った時のイメージはこんな感じですかね。

◇ データ型の例

整数型(integer / INT
→整数の値を表します。符号あり/なしの区別がある場合があります。

浮動小数点型(float, double / FLOAT
→小数の値を表します。精度や桁数が異なる場合があります。

文字列型(string / VARCHAR, CHAR
→文字列の値を表します。

真偽値型(boolean / BOOLEAN)
→真偽値を表します。
※真偽値 → true / false

日付型(date,time / DATE, TIME, TIMESTAMP
→日付や時間の値を表します。

データ型の後ろの括弧は “データ長さ” を表すようです。
int(11)については11桁という意味ではなく、11個まで数字を表示するという意味みたいです。

int(11)の 11 は 表示幅の指定であり、有効桁数の指定ではありません。

値が「2147483647」なら結果は「_2147483647」(_は空白)となります。
値が「123」なら結果は「________123」となります。

varcharについてはこちら ↓ 

文字列のデータを扱う型で、括弧内の数字に長さが固定されないので、名前や住所など長さが変わる事もあるようなデータに使われるそう。
括弧内の数字はバイト数。1バイトは半角英数字1文字分の情報量。全角文字の場合1文字で2バイトの容量を必要とする。

◇ CREATE TABLEの主なオプション

NOT NULL
⇒null値を許可しない
PRIMARY KEY
⇒主キーを設定
UNIQUE
⇒重複を許可しない
DEFAULT
⇒デフォルト値を設定

null値とはデータが何も無いこと。

auto_incrementについてはこちら ↓

AUTO_INCREMENT をつけると、データを追加した時にカラムに対して現在格納されている最大の数値に 1 を追加した数値を自動で格納することができるとのこと。


他にもこちらの記事でSQL文との比較を載せてくれていました。

まだ使ったことのないRailsコードだったので、使うときに随時確認していきたいと思います。

次回はRDBMSであるPostgre SQLとSQLiteの違いを勉強したいと思っています。
読んで頂きありがとうございました!

いいなと思ったら応援しよう!