Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第8回 MySQL事始 SQL文(5) DDL

edited by DB Online   2011/10/21 00:00

列の定義

 列の定義は、列の名称とデータ型、列のオプションの組み合わせになります。列のオプションでは、その列をインデックスに指定する場合は種類などが設定できます。他にも列ごとに文字コードを定義することや、初期値および制約の設定もオプションとして設定可能です。データ型については第6回を参照してください。

 Cityテーブルの例では、ID列の場合、データ型が11桁の整数、列のオプションには"NOT NULL"”AUTO_INCREMENT"が設定されています。次のName列では、データ型が35文字の固定長文字列、列のオプションには"NOT NULL"と”デフォルト値として長さ0の文字列"が設定されています。

列名 データ型 列のオプション
`ID` int(11) NOT NULL AUTO_INCREMENT
`Name` char(35) NOT NULL DEFAULT ''
代表的な列のオプション
NULL NULL値を許容する
NOT NULL NULL値を許容しない=必ず値を登録する
AUTO_INCREMENT 値が明示的に指定されなかった場合か0を挿入した場合に既存の最大値に1を加えた値を登録
DEFAULT
値が明示的に指定されなかった場合に自動的に登録される値

なお、"NULL""NOT NULL"はいずれか1つのみが指定可能であり、明示的に指定しなかった場合は"NULL"が自動的に指定されます。

"AUTO_INCREMENT"に関する注意事項

  • テーブルに1つだけ設定可能
  • 整数型の列のみに指定可能
  • インデックスが設定されている必要がある
  • "AUTO_INCREMENT"を指定した列に"DEFAULT"値は設定不可
  • LAST_INSERT_ID()関数を実行すると直近の挿入値が確認可能

テーブルオプション

テーブル全体の設定を行うオプションをテーブル定義の最後に追加します。CHARACTER SETCOLLATEでテーブル全体の文字コードなどの指定ができるほか、MySQLならではの設定としてはストレージエンジンの指定があります。

テーブルの削除

 DROP TABLE文は既存のテーブルを削除します。テーブル内のデータ自動的に削除されます。構文は以下の通りです。

DROP TABLE データベース名

指定可能なオプションはありません。また、DROP DATABASE文同様にDROP TABLE文で削除されたテーブルを自動的に復旧する方法はないので実行には注意が必要です。

テーブルの変更

 ALTER TABLE文は既存のテーブルを変更します。このALTER TABLE文で可能な操作は以下の通りです。

  • テーブル名の変更
  • 列の追加
  • 列の削除
  • 列の変更(列名、データ型、文字コード、デフォルト値)
  • 列の移動
  • テーブル全体の文字コードの変更
  • インデックスの追加
  • インデックスの削除

テーブル名の変更

構文は以下の通りです。

ALTER TABLE 古いテーブル名 RENAME TO 新しいテーブル名

 RENAME TABLE文でも同様にテーブル名の変更ができますが、こちらのメリットは複数のテーブル名の変更を一括して実行できる点です。

 例)tbl_Aをtbl_oldに、tbl_newを新たにtbl_aにする場合

 RENAME TABLE tbl_A TO tbl_old, tbl_new TO tbl_A;


著者プロフィール

  • 梶山隆輔(カジヤマリュウスケ)

    日本オラクル株式会社 MySQL Global Business Unit Asia Pacific & Japan担当 MySQL Principal Sales Consultant オラクル社において、MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なMySQL部門にて、台湾、オーストラリア、インドに在籍するチームメンバーを束ね、アジア太平洋地域の25以上の国や地域でのMySQL普及やビジネスの拡大をミッションとする。  

バックナンバー

連載:MySQL事始

もっと読む

All contents copyright © 2007-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5