「MySQL - テーブル」の版間の差分

ナビゲーションに移動 検索に移動
1行目: 1行目:
== 概要 ==
== 概要 ==
<br><br>
== テーブルの作成 ==
==== 文字コード ====
テーブルの作成時において、文字コードを指定する。<br>
<syntaxhighlight lang="mysql">
CREATE TABLE <テーブル名> (
    <カラム名 1> <型名>
    <カラム名 2> <型名>
    -- ...略
    CHARACTER SET=utf8mb4  -- 文字コードをutf8mb4に指定する場合
);
</syntaxhighlight>
<br>
MySQLのデフォルトの文字コードを確認する。<br>
<syntaxhighlight lang="mysql">
Show Variables Like "chara%";
</syntaxhighlight>
<br>
MySQLのデフォルトの文字コードを設定する場合は、my.cnfファイルを編集する。<br>
<u>my.cnfファイルを変更した後は、MySQLを再起動する必要がある。</u><br>
<syntaxhighlight lang="ini">
# my.cnfファイル
[mysqld]
character-set-server=utf8mb4  # MySQLサーバのデフォルトの文字コードを指定する
[client]
default-character-set=utf8mb4  # MySQLクライアントのデフォルトの文字コードを指定する
</syntaxhighlight>
<br>
既存のテーブルの文字コードは、INFORMATION_SCHEMAデータベースのTABLESテーブルから確認することができる。<br>
<code>TABLE_COLLATION</code>カラムの値が、そのテーブルに設定された文字コードに相当する。<br>
<syntaxhighlight lang="mysql">
SELECT TABLE_NAME,TABLE_COLLATION
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA='<データベース名>';
</syntaxhighlight>
<br>
既存のテーブルの文字コードを変更する。<br>
<syntaxhighlight lang="mysql">
ALTER TABLE <テーブル名> CONVERT TO CHARACTER SET <文字コード>;
# 例: 文字コードをutf8mb4に変更
ALTER TABLE <テーブル名> CONVERT TO CHARACTER SET utf8mb4
</syntaxhighlight>
<br>
==== 既存のテーブルの存在を確認して作成 ====
既存のテーブルが存在していない場合はテーブルを作成する。<br>
これは、テーブルの重複、または、既存のテーブルを上書き/削除することを防ぐことができる。<br>
<syntaxhighlight lang="mysql">
CREATE TABLE IF NOT EXISTS <テーブル名> (
    <カラム名 1> <型名>
    CHARACTER SET=utf8mb4      -- 文字コード
    COLLATE utf8mb4_general_ci  -- 照合順序
);
</syntaxhighlight>
<br>
==== テーブルのクローニングおよびコピー ====
<code>CREATE TABLE ... LIKE</code>文、または、<code>CREATE TABLE ... AS SELECT</code>文を使用して、<br>
元のテーブルに定義されているカラム属性やインデックス等、別のテーブルの定義に基づいて空のテーブルを作成する。<br>
<syntaxhighlight lang="mysql">
CREATE TABLE <新しいテーブル名> LIKE <クローン元のテーブル名>;
-- または
CREATE TABLE <新しいテーブル名> AS SELECT * FROM <クローン元のテーブル名>;
</syntaxhighlight>
<br><br>
<br><br>


案内メニュー