前回、必要なデータベースとテーブルが作成しました。今回は各テーブル詳細からテーブルを作成するCREATE文を詳しく見ていきます。
テーブル詳細

市場テーブル(jpmarket_tbl)
カラム名 | 日本語名 | データ型 |
market_id | 市場ID | TINYINT |
market | 市場名 | CHAR(10) |
市場テーブルでは市場IDと市場区分名で構成します。管理する市場区分は以下のようになります。
東京証券取引所 | 名古屋証券取引所 | 札幌証券取引所 | 福岡証券取引所 |
プライム市場 | プレミア市場 | 本則市場 | 本則市場 |
スタンダード市場 | メイン市場 | アンビシャス市場 | Q-Board市場 |
グロース市場 | ネクスト市場 |
銘柄テーブル(jpstock_tbl)
カラム名 | 日本語名 | データ型 |
code_id | 証券コード | SMALLINT |
stockname | 銘柄名 | CHAR(128) |
market_id | 市場ID | TINYINT |
銘柄テーブルでは証券コード、銘柄名、市場で構成します。証券コードをプライマリキーとして格納します。
メモテーブル(memo_tbl)
カラム名 | 日本語名 | データ型 |
memo_id | メモID | INT |
code_id | メモ対象銘柄 | SMALLINT |
user_id | メモ記載ユーザー | INT |
memo | メモ | TEXT |
created_at | 新規日時 | DATETIME |
updated_at | 更新日時 | DATETIME |
メモテーブルではメモID、メモ対象銘柄、メモ記載ユーザー、メモ、新規日時、更新日時で構成します。メモIDをプライマリキーとして自動的に整数値を格納します。メモ対象銘柄は銘柄テーブルとリレーションします。またメモ記載ユーザーはユーザーテーブルとリレーションします。
ユーザーテーブル(user_tbl)
カラム名 | 日本語名 | データ型 |
user_id | ユーザーID | INT |
username | ユーザー名 | CHAR(128) |
メールアドレス | CHAR(128) | |
password | パスワード | CHAR(128) |
created_at | 新規日時 | DATETIME |
updated_at | 更新日時 | DATETIME |
ユーザーテーブルではユーザーIDとユーザー名、メールアドレス、パスワード、証券コードID、新規日時、更新日時で構成します。ユーザーIDはプライマリキーとして自動的に整数値を格納します。
データ型
CREATE TABLE jpmarket_tbl( market_id TINYINT NOT NULL PRIMARY KEY, market CHAR(10) UNIQUE ); CREATE TABLE jpstock_tbl( code_id SMALLINT NOT NULL PRIMARY KEY, stockname CHAR(128), market_id TINYINT ); CREATE TABLE memo_tbl( memo_id INT ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT, code_id SMALLINT NOT NULL, user_id INT NOT NULL, memo TEXT(255), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE user_tbl( user_id INT ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT, username CHAR(128) NOT NULL, email CHAR(128) NOT NULL UNIQUE, password CHAR(128) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
前回のテーブル作成のSQL文を見ながらデータ型から見ていきます。データ型とは整数、文字列、日時などデータの種類を表しています。データ型を指定しておけばデータの正確性の担保できます。
整数型
TINYINT型は一番少ない1バイトのデータ量で整数値を保持します。SMALLINT型はTINYINT型より次に大きい2バイトのデータ量で整数値を保持します。INT型は4バイトのデータ量で整数値を保持します。
文字列型
CHAR型は4バイトのデータ量で文字列を保持します。CHAR型の括弧内の数値は最大文字数を指定します。TEXT型はデータ量を定めずに文字列を保持します。TEXT型も括弧内の数値は最大文字数を指定します。
日付と時間型
DATETIME型は日付と時間の両方を保持します。
カラムの制約
次は上記のSQL文を見ながらカラムの制約を見ていきます。カラムの制約にはデータの正確性の担保やデフォルト値の設定などができます。
PRIMARY KEY
一意性のインデックスとなるキーとなります。
AUTO_INCREMENT
自動的に数値を割り当てます。今回はメモテーブルとユーザーテーブルのPRIMARY KEYに適用して自動的に数値を割り当てています。
NOT NULL
カラム内のデータが必ず必要になります。空白ではエラーとなります。
UNIQUE
データの一意性を担保します。同じデータがあるとエラーとなります。
UNSIGNED
整数値においてプラス値のみを扱います。マイナス値のデータ量をプラス値に加わえるので扱える数値が倍になります。
DEFAULT CURRENT_TIMESTAMP
カラムのデフォルト値として現在の日時を指定します。今回はメモテーブルとユーザーテーブルでデータを登録時に日時を記録するために使っています。
ON UPDATE CURRENT_TIMESTAMP
カラムの値が更新された時の現在の日時を指定します。今回はメモテーブルとユーザーテーブルでデータを更新時に日時を記録するために使っています。
次回は市場テーブルのデータを登録します。