SQL学習連載「SQLearning」の第2回です。
第1回: [SQLearning][MySQL]ログインとデータベースの作成・削除
第2回の今回は「テーブルの作成・確認・削除」についてです。
データベースの選択
第1回で作成した shop データベースにテーブルを作成するわけですが、まずはテーブルを作成するクエリを投げる前にデータベースを選択しなければいけません。
データベースを選択していないとERROR 1046 (3D000): No database selectedというエラーが発生します。
mysql> USE shop;MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.3.3 USE 構文
テーブルの作成
CREATE TABLE Shohin ( shohin_id CHAR(4) NOT NULL, shohin_mei VARCHAR(100) NOT NULL, shohin_bunrui VARCHAR(32) NOT NULL, hanbai_tanka INTEGER , shiire_tanka INTEGER , torokubi DATE , PRIMARY KEY (shohin_id) );すでにテーブルが存在する場合はエラーになりますが IF NOT EXISTS と書くことでエラーを防ぐことができます。
CREATE IF NOT EXISTS TABLE Shohin ( shohin_id CHAR(4) NOT NULL, shohin_mei VARCHAR(100) NOT NULL, shohin_bunrui VARCHAR(32) NOT NULL, hanbai_tanka INTEGER , shiire_tanka INTEGER , torokubi DATE , PRIMARY KEY (shohin_id) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.1.8 CREATE TABLE 構文
テーブルの確認
テーブル情報はいくつかのクエリで確認することができます。SHOW TABLES 構文
データベースのテーブル一覧を表示します。mysql> SHOW TABLES;
+----------------+ | Tables_in_shop | +----------------+ | Shohin | +----------------+
DESCRIBE 構文 または SHOW COLUMNS 構文
データ型や制約などを表示します。DESCRIBE 構文は SHOW COLUMNS 構文 のショートカットです。mysql> DESCRIBE Shohin;または
mysql> DESC Shohin;または
mysql> SHOW COLUMNS FROM Shohin;
+---------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+-------+ | shohin_id | char(4) | NO | PRI | NULL | | | shohin_mei | varchar(100) | NO | | NULL | | | shohin_bunrui | varchar(32) | NO | | NULL | | | hanbai_tanka | int(11) | YES | | NULL | | | shiire_tanka | int(11) | YES | | NULL | | | torokubi | date | YES | | NULL | | +---------------+--------------+------+-----+---------+-------+
SHOW TABLE STATUS 構文
テーブルに関するさらに詳しい情報を表示します。mysql> SHOW TABLE STATUS;
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Collation | Checksum | Create_options | Comment | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+ | Shohin | InnoDB | 10 | Compact | 0 | 0 | 16384 | 0 | 0 | 9437184 | NULL | 2012-09-29 22:44:57 | NULL | NULL | utf8_general_ci | NULL | | | +--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+---------+MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.4.27 SHOW TABLE STATUS 構文
SHOW CREATE TABLE 構文
CREATE 文を表示します。mysql> SHOW CREATE TABLE Shohin;
CREATE TABLE `Shohin` ( `shohin_id` char(4) NOT NULL, `shohin_mei` varchar(100) NOT NULL, `shohin_bunrui` varchar(32) NOT NULL, `hanbai_tanka` int(11) DEFAULT NULL, `shiire_tanka` int(11) DEFAULT NULL, `torokubi` date DEFAULT NULL, PRIMARY KEY (`shohin_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.5.4.9 SHOW CREATE TABLE 構文
テーブルの削除
mysql> DROP TABLE Shohin;テーブルが存在していなかった場合はエラーになりますが IF EXISTS と書くことでエラーを防ぐことができます。
mysql> DROP TABLE IF EXISTS Shohin;MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.1.14 DROP TABLE 構文
次回
次回は「データ型・制約の指定」についてを予定しています。SQL ゼロからはじめるデータベース操作 (CD-ROM付) (プログラミング学習シリーズ)