MySQLでのデータベースとテーブルの作成
カテゴリ:データベース編
この記事ではMySQLのデータベースとテーブルの作成までを解説して行きます。Note以降の操作はMySQLに接続した状態で実行します。まだ接続していない場合は、以下のコマンドで接続しましょう。
mysql -u root -p
データベースの一覧を表示
MySQLには初期設定でいくつかのデータベースが存在します。 データベースの一覧を表示するには show databases コマンドを実行します。
show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| phpmyadmin |
| sys |
+--------------------+
5 rows in set (0.00 sec)
データベースの選択
データベースを操作する場合、use コマンドに続けて操作するデータベースを指定します。
use データベース名;
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
テーブル一覧を表示
選択したデータベースのテーブル一覧を表示する場合、show tables コマンドを実行します。
show tables;
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
31 rows in set (0.00 sec)
テーブルスキーマを表示
テーブルのスキーマ(カラム名や型、制約など)を表示する場合、show columns from コマンドに続けてテーブル名を指定します。
show columns from テーブル名;
mysql> show columns from db;
+-----------------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| Db | char(64) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
+-----------------------+---------------+------+-----+---------+-------+
22 rows in set (0.00 sec)
データベースの作成
では、早速データベースを作成してみましょう。 データベースを作成する場合は、CREATE DATABASE コマンドに続けてデータベース名を指定します。
CREATE DATABASE データベース名;
mysql> CREATE DATABASE blog;
Query OK, 1 row affected (0.00 sec)
作成したblogデータベースを選択します。
mysql> use blog;
Database changed
テーブルの作成
次にテーブルを作成します。 テーブルを作成するには、まずカラム名とデータ型、データ長(必要なデータ型のみ)を設定決める必要があります。
主なデータ型
利用可能なデータ型は多数ありますが、主に使用する型は以下になるかと思います。用途に応じて、その他の型についても調べてみてください。
データ型 | 説明 | |
---|---|---|
数値型 | INT | 4バイト整数 |
SMALLINT | 2バイト整数 | |
BIGINT | 8バイト整数 | |
DECIMAL | 固定小数点数 | |
FLOAT | 4バイト浮動小数点数 | |
DOUBLE | 8バイト浮動小数点数 | |
日付と時間型 | DATE | 日付 |
TIME | 時間 | |
DATETIME | 日時 | |
文字列型 | CHAR | 文字 |
VARCHAR | 文字列(データ長の制限あり) | |
TEXT | 文字列 |
テーブルの作成
テーブルを作成するには、CREATE TABLE コマンドの後にテーブル名、括弧で囲ってカラム名、データ型(データ長)をカラム分指定します。CREATE TABLE テーブル名 (カラム名 データ型(データ長), カラム名 データ型(データ長), カラム名 データ型(データ長) ...);
Noteデータ長(バイト)は必要なデータ型のみ指定します。
ここではブログ用テーブルとして、記事ID(id)と件名(title)、本文(text)、登録日時(date)を格納するテーブルを作成してみます。id整数値のためINT型、titleは100バイトのVARCHAR型、textはTEXT型、dateはDATETIME型とします。
mysql> CREATE TABLE blog (id INT, title VARCHAR(100), text TEXT, date DATETIME);
Query OK, 0 rows affected (0.45 sec)
show tables コマンドで見るとちゃんとテーブルが作成されていますね。
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| blog |
+------------------+
1 row in set (0.01 sec)
では、作成したblogテーブルのスキーマを確認してみましょう。もちろん指定したとおりのカラム名(Field)、データ型(Type)となっていますね。
mysql> show columns from blog;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| title | varchar(100) | YES | | NULL | |
| text | text | YES | | NULL | |
| date | datetime | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
参考ちなみに、Nullは空のデータを許可しない(Not Null)、Keyはプライマリキーやユニークキー(値の重複を許可しない)、Defaultは初期値、Extraはそれ以外の制約を表示します。この辺りの制約も必要になってきますが後の記事で解説いたします。
テーブルの削除
テーブルを削除する場合は、DROP TABLE コマンドに続けてテーブル名を指定します。 先程作成したblogテーブルを一旦削除してみましょう。
DROP TABLE テーブル名;
mysql> DROP TABLE blog;
Query OK, 0 rows affected (0.27 sec)
データベースの削除
データベースを削除する場合は、DROP DATABASE コマンドに続けてデータベース名を指定します。DROP DATABASE データベース名;
mysql> DROP DATABASE blog;
Query OK, 1 row affected (0.30 sec)
※次回の記事で使用するため、再度、blogデータベースとblogテーブルを作成しておいてください。
以上、データベースとテーブルの作成方法についての解説でした。次は作成したテーブルに制約や自動インクリメントを設定する方法を解説して行きます。
公開日時:2020年04月26日 09:44:33