データベースの作成
情報はデータベースという場所に保管されます。
データベースを作成してみよう!
|
1 2 3 4 5 6 7 8 9 10 |
//データベース一覧の表示 mysql> show databases; //データベースの作成 mysql> create database test_db; mysql> show databases; //←test_dbが作成されていることを確認してください。 //データベースの選択(test_dbを選択して利用する場合のコマンド) mysql> use test_db; |
テーブルを作成しよう!
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
//テーブル一覧の表示 mysql> show tables; //詳細が知りたければ mysql> show table status; //全テーブルから特定のフィールド検索 mysql> SELECT table_name, column_name FROM information_schema.columns WHERE column_name = [検索条件]; //テーブルの作成 mysql> CREATE TABLE [テーブル名] ( [フィールド名] [データ型] [オプション] ) ENGINE=[InnoDB/MyISAM] DEFAULT CHARSET=[文字コード]; // 作成例 mysql> CREATE TABLE `m_users` ( `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT "ID", `user_name` VARCHAR(100) NOT NULL COMMENT "ユーザー名", `mail_address` VARCHAR(200) NOT NULL COMMENT "メールアドレス", `password` VARCHAR(100) NOT NULL COMMENT "パスワード", `created` datetime DEFAULT NULL COMMENT "登録日", `modified` datetime DEFAULT NULL COMMENT "更新日" ) ENGINE=InnoDB DEFAULT CHARSET=utf8; // テーブルの削除 mysql> DROP TABLE [テーブル名]; //テーブル名の変更 mysql> ALTER TABLE [旧テーブル名] RENAME [新テーブル名]; //テーブルにカラムの追加 mysql> ALTER TABLE [テーブル名] ADD [追加カラム名] [型] [必要であればオプション等]; //作成例 mysql> ALTER TABLE m_users ADD tel int DEFAULT NULL COMMENT "電話番号" AFTER mail_address; |
※日本語文字化けについて:初期のxammpでは、コマンド日本語対応がされていません。気になる方で変更したい場合はこちらを参考で実行してください。
以下で文字コードを「ShiftJIS」に変更しておきます。
|
1 |
mysql>SET NAMES cp932; |
コマンドを打ってみよう!
※次の課題(次のセクション)で、下記で作成する「m_users」テーブルは使用いたしますので、実行を確認しながら作成してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// テーブル作成 MySql内で実行してください CREATE TABLE `m_users` ( `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT "ID", `user_name` VARCHAR(100) NOT NULL COMMENT "ユーザー名", `mail_address` VARCHAR(200) NOT NULL COMMENT "メールアドレス", `password` VARCHAR(100) NOT NULL COMMENT "パスワード", `created` datetime DEFAULT NULL COMMENT "登録日", `modified` datetime DEFAULT NULL COMMENT "更新日" ) ENGINE=InnoDB DEFAULT CHARSET=utf8; //一覧 show tables; // 詳細 show table status; |
データ型について
MySQLでは、テーブルを作成するときに「このカラムにはどんな種類のデータを入れるのか?」をあらかじめ決めておく必要があります。
この「データの種類」のことを データ型(data type) といいます。
たとえば、「名前」には文字を、「年齢」には数字を、「登録日」には日付を入れるように、それぞれに合ったデータ型を使うことで、データを正しく、無駄なく管理できます。
| 分類 | 説明 | 例 |
|---|---|---|
| 数値型 | 数を入れる | 年齢、価格、在庫数など |
| 文字列型 | 文字を入れる | 名前、メールアドレス、コメントなど |
| 日付・時間型 | 日付や時間を入れる | 登録日、更新日、誕生日など |
数値型(数字を入れる)
| 型 | 内容 | よく使う場面 |
|---|---|---|
INT | 整数(-2,147,483,648〜) | ID、在庫、年齢など |
TINYINT | 小さな整数(-128〜127) | フラグ(例:0=オフ、1=オン) |
BIGINT | 大きな整数(19桁まで) | 大量のデータや時間管理用 |
DECIMAL(10,2) | 小数(10桁中2桁が小数) | 金額、重さなど |
FLOAT / DOUBLE | 小数(誤差が出る可能性あり) | 精密さがそこまでいらない場合 |
文字列型(文字を入れる)
| 型 | 内容 | よく使う場面 |
|---|---|---|
CHAR(n) | 固定長の文字列 | 郵便番号、性別コードなど(短いデータ) |
VARCHAR(n) | 可変長の文字列 | 名前、タイトル、メールアドレスなど |
TEXT | 長文 | コメント、記事本文、メモなど |
日付・時間型
| 型 | 内容 | よく使う場面 |
|---|---|---|
DATE | 年月日(YYYY-MM-DD) | 誕生日、登録日など |
DATETIME | 日付 + 時間(YYYY-MM-DD HH:MM:SS) | 作成日時、更新日時など |
TIMESTAMP | サーバーのタイムゾーンに依存 | 自動的に保存される日時 |
💡 通常は DATETIME か TIMESTAMP を使う。Laravelでは timestamps() で自動設定されます。
🎓 補足ポイント
- データ型を正しく選ぶと、検索が速くなり、無駄なメモリも使わずに済む。
- なんでも文字列(
VARCHARやTEXT)にすると後で困ることがある(例:数値比較できない)。 - 金額に誤差が出ないように、小数は
DECIMALを使う。 - 時刻が必要なら
DATETIME、日付だけならDATE。
出力結果
m_usersというテーブルが作成されました。

作成されたか確認のため以下のコマンドを実行してみよう!
|
1 |
mysql>desc m_users; |
データダンプとは?
dump(ダンプ)とは、要するにバックアップのことです。データをごっそりまとめて取り出して保存することです。
ちなみにリストアとは、ダンプしたファイルを流し込むものです。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
//全データベースを対象とする $ mysqldump -u [ユーザー名] -p --all-databases > [出力ファイル名] //m_usersデータベースを対象とする $ mysqldump -u [ユーザー名] -p m_users > [出力ファイル名] //m_usersデータベースのusersテーブルを対象とする $ mysqldump -u [ユーザー名] -p m_users users > [出力ファイル名] //リストア $ mysql -u[ユーザー名] -p new_db < [ダンプファイル名] |
ダンプは、sqlの外から実行します。(コマンドはバージョンによって変わる場合があります)
課題
以下のテーブルを作成してください。
できた内容のデータをダンプして提出してください。
C\xampp\mysql\bin のフォルダ 「level7_3_table_study.sql」 が作成されています。ファイルを提出してください。
※Macは、cd /Applications/MAMP/Library/bin
テーブル名:m_profiles
| カラム名 | 名称 | データ型 | NULL | Default | 自動採番 | KEY | 備考 |
| id | ID | int | NOT | NULL | ◯ | IDをプライマリーキーにする(PRIMARY KEY) | – |
| name | 名前 | varchar(100) | NOT | NULL | – | – | 最大全角100文字(200バイト) |
| kana | カナ | varchar(100) | NOT | NULL | – | – | 最大全角100文字(200バイト) |
| age | 年齢 | int | NOT | NULL | – | – | – |
| profile | プロフィール | text | NOT | NULL | – | – | – |
| place | 出身都道府県地番号 | int(5) | NOT | NULL | – | – | 47都道府県を数字で管理 |
| sex | 性別 | int(2) | NOT | NULL | – | – | 1:男 2:女 |
| created | 登録日 | datetime | DEFAULT | NULL | – | – | ‘YYYY-MM-DD HH:MM:SS’ |
| modified | 更新日 | datetime | DEFAULT | NULL | – | – | ‘YYYY-MM-DD HH:MM:SS’ |
実行結果
実行後、「SHOW TABLES;」を行うと、以下のようにtest_db内の中の作成されたテーブルが表示されます。
|
1 2 3 4 5 6 7 8 |
mysql> show tables; +-------------------+ | Tables_in_test_db | +-------------------+ | m_profiles | | m_users | +-------------------+ 2 rows in set (0.00 sec) |
ヒント
①「テーブルを作成しよう!」という見出しの「テーブル作成のコマンド」内にある、作成例を参考にしよう!
②できた内容のデータダンプをします。
以下のコマンドを実行してデータをlevel7_3_table_study.sqlにすいあげます。
|
1 |
mysqldump -u root -p test_db > level7_3_table_study.sql |
課題・復習用検索キーワード
| 検索例 |
| 🔍sql AUTO_INCREMENTとは |
| 🔍sql NULLとは |
| 🔍mysql テーブル作成流れ |
補足
※プライマリーキー(主キー):データを一意に識別するための項目 社員番号など同じ番号がないこと。