前回の記事の続きです。
余談ですが、これを書くために都内のノマドに適したカフェを探しています!情報をください!!今回は下北沢からお届けします。
前回はmacでインストールして、、データベースを作成して、作業ユーザを作成するというところまで学びました。
今回はMySQLでテーブルを作成して、フィールドの決定を行います。前回はあまりにもドットインストールの内容そのままになっていたので、今回は噛み砕いて自分の言葉で説明できるようになれるように意識します。
はじめに
とりあえず前回作ったユーザdbuser
で指定したパスワードでログインします。
まだサーバを指定する方法がわからないですが、dbuser@localhostで作成したのでローカル環境でしょう
データベースの構成
では実際に作成したデータベースにデータを入れていきます。
データを扱う際にはテーブルを作成します。テーブルは日本語で表です。
学校の名簿表のようにデータをまとめるのです。
名簿の表にはそれぞれ出席番号、名前、電話番号などがあります、この並びをfield
(またはcolumn
)と呼びます。どちらの呼び方でも慣れておいて損はないです。
カラムは日本語でいうと列つまり縦の並びを指します。名前であれば、山田、田中、鈴木など並びますね。
ではそれぞれの名前に対して、出席番号、電話番号など定義できますねその横の並びのことをrecord
といいます。
おそらくデータベースはこのデータの関係が全てであるので少し詳しく理解できるようにしました。
このような表をいくつも持ってデータベースは完成します。
ここで気の利いた図を持ってこれると一流ですが自分理解できればそれでいいので…
テーブルの作成
ではテーブルを作成します。
まずはターミナルで以下を実行してパスワード入力
$ mysql -u dbuser -p test_app
ちなみにtest_app(データベース名)を入力しないとテーブル作成できません.しっかり使用するデータベースはアクティブにします。tableの作成はdatabaseの作成と同じcreateです。
さてデータベースを作成したようにmysqlで以下を実行
create table accounts(
id int,
user_name varchar(255),
user_email varchar(255),
phone_number char(20),
password char(30),
sex enum('male','female'),
created datetime
);
と実行
ここではブログサービスを作る前提としてまずはアカウントデータを管理するテーブルaccountsを作りました。
表はただ作成するだけでなく、フィールド名とそこに入るデータの型を指定することで意味を持ちます。
- int は整数
- varcharは可変長文字列
- charは固定長文字列
- enumは列挙型でどちらかを選択します
- datetimeは日付の型です
()でバイト数を指定します。
またデータベース同様
- 一覧で見る
show tables;
- 削除
drop table accounts;
も扱えます。
扱えるデータ型
フィールドに設定できるデータ型は大きく分けて8つ
- 整数型
int
- 浮動小数点数型
double
float
- 日付型と時刻型
date
datetime
timestamp
- 文字列
char
varchar
- バイナリ
binary
varbinary
- 巨大文字列 巨大バイナリ
text
bolb
- 列挙型
enum
- set型
set
この辺の説明だけで記事が書けそうですがまた後回しにします
フィールドのオプション
先ほど作ったテーブルのフィールドのオプションを設定
入力の必須化
入力が必須なのでnullではないということでnot null
をつけます
デフォルト
もともと値を持つように指定するにはdefault
と書いて値を指定します。
自動連番
そのものに意味はなく、登録する度に一ずつ増えていくのが扱いやすいidなどはauto_increment
で指定
索引
そのフィールドを検索するときに早くなる
主キー
レコードを一意に特定するものにつける。一つのフィールドにしかつけられないのでidなどにつけるのが一般的でprimary key
をつけるキー
よく検索されるフィールドにつける、フィールドと一緒にkey keyName (フィールド名)
と宣言するユニークキー
uniqueをつけることで、カラム内に同じデータがあった場合エラーを出す。
オプションによって
1.idは必ず入る
2.性別の指定がないときは男性
3.idは自動連番で入る
4.主キーとしてidを定義
5.user_nameをよく検索されるキーとして登録
6.user_emailは他と被らない
とした結果が以下です。
create table accounts(
id int not null auto_increment primary key,
user_name varchar(255),
user_email varchar(255) unique,
phone_number char(20),
password char(30),
sex enum('male','female') default 'male',
created datetime,
key user_name (user_name)
);
このようにフィールド値に制限を入れてテーブルが作成できます。