テーブル
(表)
の列と行は, それぞれ, カラム(column),
フィールド(field)
と呼ばれる7).
カラムには データの形式を指定する必要があり,データ型(data type)
といわれる.データ型には大別して以下のものがある:
数値型
:
数値型としては以下のようなデータ型が利用できる:データ型 意味 対応している範囲
INT
右の範囲の整数[ − 2
31, 2
31− 1] = [ − 2147483648, 2147483647]
TINYINT
とても小さな整数[ − 2
7, 2
7− 1] = [ − 128, 127]
SMALLINT
小さな整数[ − 2
15, 2
15− 1] = [ − 32768, 32767]
MIDEUMINT
中くらいの整数[ − 2
23, 2
23− 1] = [ − 8388608, 8388607]
BIGINT
大きい整数[ − 2
63, 2
63− 1] = [ − 9223372036854775808, 9223372036854775807]
FLOAT
単精度浮動小数点 [−2128,−2−149(223−1)] = [−3.402823669∗1038,−1.175494211∗10−38](負の範囲) DOUBLE
倍精度浮動小数点 [−21024,2−1074(252−1)] = [−1.797693135∗10308,−2.225073859∗10−308](負の範囲)
文字型:
文字型としては以下のデータ型が利用できる:データ型 意味 対応している範囲
CHAR
固定長の文字列255(= 2
8− 1)
文字までVARCHAR
可変長の文字列255(= 2
8− 1)
文字までTEXT
長い文字列65535(= 2
16− 1)
文字までLONGTEXT
とても長い文字列4294967295(= 2
32− 1)
文字まで7)テーブルはリレーション(relation)と呼ばれることがある. また,カラムは属性(attribute),フィールドはタプル(tuple)とも いわれる.
60
付 録B MySQL
ここで,CHAR
とVARCHAR
には最大となる桁数を()
に指定することができる. たとえば,VARCHAR(100)
は 最大100
文字までの文字を格納することができる. なお,CHAR(100)
とすれば,文字を格納するときに指定 した長さになるようにスペースが埋め込まれるが,VARCHAR(100)
は埋め込まれない. なお, 取り出される ときにはともにスペースは削除される. また, MySQLバージョン4.1
以降では桁数の単位は「文字」であ る. たとえば,CHAR(10)
のとき,日本語でも半角英数文字でも「10文字」まで格納できる.注意
B.6.1 (5C
コード問題). データベースに格納される文字列の漢字コードとしてShift JIS
を利用する 場合,円マーク(Y)
の文字コードは‘5C’
に割り当てられている. 一方, MySQLではY
はエスケープ処理を行う記号
(エスケープシーケンスと呼ばれる.)
であるため,たとえば「暴」(文字コード‘965C’)
という文字をモニタに表示する場合,デフォルトの文字コードが
sjis
に設定されていない場合にはエラーとなる. こ れは,「暴」の文字コード‘965C’
の後2
桁‘5C’
をMySQL
モニタが‘Y’
と解釈してしまったことによる. こ のような類のトラブルは, 一般に,「5Cコード問題」と呼ばれる.日付・時刻型
:
日付型としては以下のデータ型が利用できる:データ型 意味 対応している範囲
DATETIME
日付と時刻1000-01-01 00:00:00 ∼ 9999-12-31 23:59:59 DATE
日付1000-01-01 ∼ 9999-12-31
YEAR
年1901 ∼ 2155(4
桁のとき)1970 ∼ 2069(2
桁のとき)TIME
時刻-838:59:59 ∼ 838:59:59
テーブルを作成するためには
CREATE TABLE
コマンドを使う.テーブルの作成
¶ ³
CREATE TABLE
テーブル名(カラム名 1
データ型1,
カラム名2
データ型2, ...);
µ ´
注意
B.6.2 (文字セットを指定したテーブルの作成). MySQL
でテーブルに文字を入れたときに文字化け を防止する方法として,CREATE TABLES
の末尾にCHARSET=sjis
のように文字コードの指定をオプション として与えることができる.文字コードを指定したテーブルの作成
¶ ³
CREATE TABLE
テーブル名(カラム名 1
データ型1, ...) CHARSET=sjis;
µ ´
データベースに存在するすべてのテーブルの表示には
SHOW TABLES
コマンドを利用する.すべてのテーブルの表示
¶ ³
SHOW TABLES;
µ ´
実行例として,データベース
mysql
を指定し,それに含まれるすべてのテーブルを表示させることを以下に 与える:mysql> USE mysql Database changed mysql> SHOW TABLES;
+---+
| Tables_in_mysql | +---+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---+
17 rows in set (0.00 sec) mysql>
µ ´
テーブルのカラム構造の確認は,
DESC
コマンドで行う8).
テーブル構造の確認¶ ³
DESC
テーブル名;µ ´
実行例として,データベース
mysql
のfunc
テーブルの構造を表示させることを以下に与える:データベース
mysql
のfunc
テーブルの構造を表示¶ ³
mysql> DESC func;
+---+---+---+---+---+---+
| Field | Type | Null | Key | Default | Extra | +---+---+---+---+---+---+
| name | char(64) | NO | PRI | | |
| ret | tinyint(1) | NO | | 0 | |
| dl | char(128) | NO | | | |
| type | enum(’function’,’aggregate’) | NO | | NULL | | +---+---+---+---+---+---+
4 rows in set (0.05 sec) mysql>
µ ´
なお,テーブルのカラム構造の変更,たとえば,データ型の変更やカラムの追加,カラム位置の変更,カラム の削除等を行うには
ALTER
コマンドを利用する.注意
B.6.3 (SHOW
コマンドに関する注意).MySQL
では,データベース名やテーブル名,テーブルの構造, 文字コードの設定などをSHOW
コマンドで行うことが可能であるけれども,このコマンドは他のRDBMS
のSQL
には存在しないコマンドであることに注意が必要である.8)DESCRIBE (;記述する)でも可能.
62
付 録B MySQL
テーブルの削除に関してはDROP
コマンドを利用する.テーブルの削除
¶ ³
DROP TABLE
テーブル名;µ ´
指定するテーブルが存在する場合にのみそのテーブルを削除したい場合には,以下のように
IF EXISTS
オ プションを与えて指定する:条件付きテーブルの削除
¶ ³
DROP TABLE IF EXISTS
テーブル名;µ ´
このような
DROP
コマンドの使用法は,既存のテーブルをバージョンアップする際などに利用されることに 注意しよう.
ドキュメント内
財務データベースサーバの構築
(ページ 68-71)