MySQL Table生成のコマンドを纏めます!
Sponsored Links
皆さんこんにちは
お元気ですか。私は元気かも。
うまいコーヒーは最高だ。
さて、今日はTableについて、特にテーブルについてまとめてみようと思います。
Table生成について
テーブル生成について
以下の例に基づいて考えてみましょう。
CREATE TABLE IF NOT EXIST user( id INT NOT NULL AUTO_INCREMENT, u_name TEXT, address TEXT, created timestamp NOT NULL default'0000-00-00 00:00:00', updated timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, del_flg BOOLEAN, PRIMARY KEY(id) );
試しにこれを実行すると…?
Query OK, 0 rows affected (0.04 sec)
おっ、無事に作成されましたね。
もう一度実行すると…?
mysql> CREATE TABLE user ( id INT NOT NULL AUTO_INCREMENT, u_name TEXT, address TEXT, created timestamp NOT NULL default'0000-00-00 00:00:00', updated timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, del_flg BOOLEAN, PRIMARY KEY(id) ); ERROR 1050 (42S01): Table 'user' already exists
アプリケーションを作成するとき、Tableがないときに実行してほしいケースがあります。
mysql> CREATE TABLE IF NOT EXISTS user( id INT NOT NULL AUTO_INCREMENT, u_name TEXT, address TEXT, created timestamp NOT NULL default'0000-00-00 00:00:00', updated timestamp NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, del_flg BOOLEAN, PRIMARY KEY(id) ); Query OK, 0 rows affected, 1 warning (0.00 sec)
IF NOT EXISTSを付け加えることで、達成することができます。
基本構文
テーブルのカラムについてですが、
<column名> <型> <Option> です。
例えば id名の場合、id名はINTでNOT NULL、AUTO_INCREMENTなOptionがついています。
型について
columnにも型があります
型 | 内容 |
INT | 数値 |
CHAR | 文字(文字が可変) |
VARCHAR | 文字(文字幅が固定長) |
TEXT | テキスト(可変長) |
timestamp | 時間 |
DATE | 日付 |
TIME | time |
BOOLEAN | Boolean値(True or Falth) |
よく使うOption
AUTO_INCREMENT | 自動で増加 |
NOT NULL | NULLを許容しない |
テーブル情報を見たい時
mysql> DESC user; +---------+------------+------+-----+---------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +---------+------------+------+-----+---------------------+-----------------------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | u_name | text | YES | | NULL | | | address | text | YES | | NULL | | | created | timestamp | NO | | 0000-00-00 00:00:00 | | | updated | timestamp | YES | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | | del_flg | tinyint(1) | YES | | NULL | | +---------+------------+------+-----+---------------------+-----------------------------+ 6 rows in set (0.01 sec)
CREATE文を出力
違う環境でCreateを行う時とかに使える内容となっております。
mysql> SHOW CREATE TABLE user; +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | user | CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `u_name` text, `address` text, `created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `updated` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `del_flg` tinyint(1) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
テーブルを見たいとき
テーブルの一覧を確認しましょう。
mysql> SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ 1 row in set (0.00 sec)
削除
テーブルの削除をするときはこんな感じ。
mysql> Drop table user; Query OK, 0 rows affected (0.03 sec)
感想
なんというか、こんなコマンドあったんだなぁとふと感じる今日でした。