MySQLでテーブルを作成する(CREATE TABLE)

MySQL MySQL

MySQLでテーブルを作成する方法について書いています。
テーブルを作成するときには、CREATE TABLE文を使うと良いです。

MySQLのバージョン8.0.32で、動作を検証しています。

テーブルを作成するには?

MySQLでテーブルを作成するには、CREATE TABLE文を使います。
USEを使って、テーブルを作成したいデータベースを選択した後に実行してください。

CREATE TABLE文の後に、テーブル名を指定します。
その後に、テーブルに属するカラムを指定してすることで、作成することができます。

CREATE TABLE users (
  id BIGINT NOT NULL AUTO_INCREMENT,
  name VARCHAR(128),
  age SMALLINT,
  birthday DATE,
  PRIMARY KEY (id)
);

usersという名前のテーブルを作成しています。

丸括弧「()」の中にテーブルのカラムを定義しています。
カラムとしては、下記の内容を保持するようにしました。

・id: 自動採番される主キー
・name: ユーザーの名前
・age: ユーザーの年齢
・birthday: ユーザーの誕生日

実行すると、usersテーブルが作成されます。
テーブルの名前は好きなようにつけることができますが、次項の命名規則には従う必要があります。

テーブル名の命名規則

テーブル名の命名規則は下記になります。
データベース名をつけるときと同じルールです。

・数値だけで名前をつけることができない
・64文字を超えることができない
・スペース文字を終わりに使うことができない

こちらもスペースを使うことができますが、アンダースコアを使うのが通例です。
ちなみにスペースを含む名前のテーブルは、下記のようにすることで作成できます。

CREATE TABLE `fuga hoge` (id INT);

グレイヴ・アクセント(`)で囲うと、スペースを含めて文字列として認識されて、登録することができます。

テーブル作成時にエラーになるパターン

先ほどの命名規則に沿っていない場合などはエラーになります。

同名のテーブルが既にある

既に存在する名前のテーブルを作ろうとすると、ERROR 1050 (42S01)エラーが発生します。

CREATE TABLE users (id INT); -- 既にあるusersテーブルを作成

ERROR 1050 (42S01): Table 'users' already exists

同名のテーブルが不要だったら削除するか、違う名前でテーブルを作成しましょう。

テーブル名が64文字を超える

テーブル名が64文字を超える場合は、ERROR 1059 (42000)エラーが発生します。

CREATE TABLE testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestt (id INT);

ERROR 1059 (42000): Identifier name 'testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttestt' is too long

テーブル名は、シンプルでわかりやすい、短い英単語などでつけましょう。

テーブル名の最後にスペースが入っている

テーブル名の最後にスペースが入っているときには、ERROR 1103 (42000)エラーが発生します。

CREATE TABLE `hoge ` (id INT);

ERROR 1103 (42000): Incorrect table name 'hoge '

テーブル名の最後にスペースを入れないようにしましょう。

データベースを選択していない

データベースを選択していないときには、ERROR 1046 (3D000)エラーが発生します。

CREATE TABLE test (id INT);

ERROR 1046 (3D000): No database selected

USEで、テーブルを作りたいデータベースを選択してから実行しましょう。

テーブルを作成する方法のまとめ

今回はMySQLでテーブルを作成する方法について書きました。
記事の内容をまとめると、下記のようになります。

・テーブルを作成するにはCREATE TABLEを使う。
・命名規則に沿っていない場合にはエラーになる。

コメント

タイトルとURLをコピーしました