無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 10 データタイプ :: 10.1 データタイプ概要 :: 10.1.3 文字列タイプの概要
« 10.1.2 データと時刻タイプの概要

10.1.4 データタイプデフォルト値 »
Section Navigation      [Toggle]
  • 10.1 データタイプ概要
  • 10.1.1 数値タイプの概要
  • 10.1.2 データと時刻タイプの概要
  • 10.1.3 文字列タイプの概要
  • 10.1.4 データタイプデフォルト値

10.1.3. 文字列タイプの概要

文字列データタイプの要約が次に紹介されています。追加情報については 項10.4. 「文字列タイプ」 を参照してください。必要とする記憶容量は 項10.5. 「データタイプが必要とする記憶容量」 に紹介されています。

MySQLは時々、文字列カラムを CREATE TABLE や ALTER TABLE ステートメントで与えられているタイプとは違う物に変更する事があります。項12.1.8.1. 「サイレント カラム仕様変更」を参照してください。

MySQL 4.1以降の中には、MySQL4.1以前のバージョンには無かった文字列データタイプの特徴が含まれます。

  • MySQLは、文字単位の中の文字カラム定義の長さ仕様を解明します。(MySQL 4.1以前は、カラム長さはバイトで解釈されていました。)これは、CHAR、VARCHAR、そして TEXT タイプに適応されます。

  • 多くの文字列データタイプのカラム定義に、文字セットやカラム照合を指定する属性を含む事ができます。これらの属性は CHAR、VARCHAR、TEXT タイプ、ENUM、そして SET データタイプに適応します。

    • CHARACTER SET 属性は文字セットを指定し、そして COLLATE 属性は文字セットの照合を指定します。例:

      CREATE TABLE t
      (
          c1 VARCHAR(20) CHARACTER SET utf8,
          c2 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs
      );
      

      このテーブル定義は、キャラクタセットのデフォルト照合を使った utf8 のキャラクタセットを持つ c1 という名前のカラムと、latin1 のキャラクタセットと大文字と小文字を区別する照合を持つ c2 という名前のカラムを作成します。

      CHARSET は CHARACTER SET の同義語です。

    • ASCII 属性は CHARACTER SET latin1 の省略表現です。

    • UNICODE 属性は CHARACTER SET ucs2 の省略表現です。

    • BINARY 属性は、カラム文字セットのバイナリ照合を指定する省略表現です。この場合、ソートと比較は数値文字値に基づきます。(MySQL 4.1以前のバージョンでは、BINARY はカラムにバイナリ文字列を格納させ、ソートと比較は数値バイト値に基づいていました。これは1バイト文字セットに文字値を使用するのと同じですが、複数バイト文字セットに使用するのとは違います。)

  • 文字カラムのソートと比較は、カラムに割り当てられた文字セットに基づいています。(MySQL 4.1バージョン以前は、ソートと比較はサーバー文字セットの照合に基づいていました。)CHAR、VARCHAR、TEXT、ENUM、そして SET データタイプに対して、語彙の順番ではなく基礎となる文字コード値を利用する為に、バイナリ照合を持つカラムか、ソートと比較を行う BINARY 属性を宣言する事ができます。

章?9. キャラクタセットサポートMySQLの中での文字セットの使用についての追加情報を紹介しています。

  • [NATIONAL] CHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

    格納時に必ずスペースを使って指定された長さに詰められる固定長文字列。M はカラム長さを表します。M の範囲は、0から255文字です。

    注:CHAR 値が検索された時、後続スペースは削除されます。

    CHAR の長さを255以上に設定しようとすると、CREATE TABLE か ALTER TABLE ステートメントが実行されたテーブル内でエラーが発生し、その作業は失敗します。

    mysql> CREATE TABLE c1 (col1 INT, col2 CHAR(500));
    ERROR 1074 (42000): Column length too big for column 'col' (max = 255);
    use BLOB or TEXT instead
    mysql> SHOW CREATE TABLE c1;
    ERROR 1146 (42S02): Table 'test.c1' doesn't exist
    

    CHAR は CHARACTER の省略表現です。NATIONAL CHAR (またはそれと同等である NCHAR) は、CHAR カラムが定義済文字セットを使用しなければいけないという事を定義する為の標準のSQLの方法です。MySQL 4.1以降のバージョンでは、この定義済文字セットとして utf8 を利用します。 項9.3.6. 「各国キャラクタセット」.

    CHAR BYTE データタイプは BINARY データタイプの別名です。これは互換性の特徴です。

    MySQLで CHAR(0) タイプのカラムを作成する事ができます。これは主に、カラムの存在に頼っていても、その値は実際には使用しない古いアプリケーションに対応する必要がある時に便利な物です。CHAR(0) はまた、二つの値だけを取り込む事ができるカラムが必要な時にも大変便利です。CHAR(0) NULL として定義されたカラムは1ビットだけ使用し、NULL と '' (空の文字列)値だけを取り込む事ができます。

  • CHAR [CHARACTER SET charset_name] [COLLATE collation_name]

    このタイプは CHAR(1) の同義語です。

  • [NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

    可変長文字列です。M はカラムの最大長さを表します。M の範囲は0から65,535です。(VARCHAR の実際の最大長さは使用する最大行サイズと文字セットによって決まります。最大有効カラム長さは65,532バイトの行サイズによります。)

    注:MySQL 5.1 は、標準SQL仕様に従うので、VARCHAR 値から後続スペースを削除しません。

    VARCHAR は CHARACTER VARYING の省略表現です。

    VARCHAR は1バイト、または2バイトの長さのプリフィックスに加え、データと共に格納されています。VARCHAR カラムが255以上の長さであればプリフィックスの長さは2バイトです。

  • BINARY[(N)]

    BINARY タイプは CHAR タイプと似ていますが、非バイナリ文字の文字列ではなく、バイナリバイト文字列を格納します。

  • VARBINARY(M)

    VARBINARY タイプはVARCHAR タイプと似ていますが、非バイナリ文字の文字列ではなく、バイナリバイト文字列を格納します。

  • TINYBLOB

    最長255 (28 ? 1) バイトの BLOB カラムです。

  • TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

    最長255 (28 ? 1) 文字の TEXT カラムです。

  • BLOB[(M)]

    最長65,535 (216 ? 1) バイトの BLOB カラムです。

    長さ M を任意で利用する事もできます。もしこれを実行すると、MySQLは M バイトの長さの値を保持するのに十分な最小 BLOB を作成します。

  • TEXT[(M)] [CHARACTER SET charset_name] [COLLATE collation_name]

    最長65,535 (216 ? 1) 文字の TEXT カラムです。

    長さ M を任意で利用する事もできます。もしこれを実行すると、MySQLは M 文字の長さの値を保持するのに十分な最小 TEXT タイプを作成します。

  • MEDIUMBLOB

    最長16,777,215 (224 ? 1) バイトの BLOB カラムです。

  • MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

    最長16,777,215 (224 ? 1) 文字の TEXT カラムです。

  • LONGBLOB

    最長4,294,967,295、または4GB (232 ? 1) バイトの BLOB カラムです。LONGBLOB カラムの有効な(許可されている)最長長さは、クライアント/サーバープロトコルと使用可能メモリの中に組み込まれている最大パケットサイズにより決まります。

  • LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

    最長4,294,967,295、または4GB (232 ? 1) バイトの TEXT カラムです。LONGTEXT カラムの有効な(許可されている)最長長さは、クライアント/サーバープロトコルと使用可能メモリの中に組み込まれている最大パケットサイズにより決まります。

  • ENUM('value1'、'value2',...)[CHARACTER SET charset_name] [COLLATE collation_name]

    一覧表です。'value1'、'value2'、 ...、NULL または特別な'' エラー値のリストから選択された、1つの値しか持つ事ができない文字列オブジェクトです。ENUM カラムは最高65,535 の異なる値を持つ事ができます。ENUM 値は、内部的には整数として表されます。

  • SET('value1'、,'value2',...)[CHARACTER SET charset_name] [COLLATE collation_name]

    設定です。それぞれが、'value1'、 'value2'、... 値のリストから選択されなければいけない、ゼロ、またはそれ以上の値を持つ事ができる文字列オブジェクトです。SET カラムは最高64メンバを持つ事ができます。SET 値は、内部的には整数として表されます。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.