MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのデータ型は何種類?数値・日付時刻・文字列の3カテゴリを徹底解説

MySQLでは、多数のデータ型が用意されており、それらは大きく分けて以下の3つのカテゴリに分類されています。

  • 数値型(Numeric)
  • 日付・時刻型(Date and Time)
  • 文字列型(String Types)

それぞれのカテゴリに含まれる代表的なデータ型について、詳しく見ていきましょう。

数値データ型(NUMERIC DATA TYPES)

MySQLは標準的なANSI SQLの数値データ型をすべてサポートしています。そのため、他のデータベースシステムからMySQLに移行してきた方でも、これらの定義には馴染みがあるでしょう。

以下に、よく使われる数値データ型とその説明をまとめます。

  • INT – 通常サイズの整数で、符号付き(SIGNED)と符号なし(UNSIGNED)を選択できます。符号付きの場合は -2147483648 ~ 2147483647、符号なしの場合は 0 ~ 4294967295 の範囲が許容されます。表示幅は最大11桁まで指定可能です。
  • TINYINT – 非常に小さい整数型です。符号付きの場合は -128 ~ 127、符号なしの場合は 0 ~ 255 の範囲となります。表示幅は最大4桁まで指定できます。
  • SMALLINT – 小さい整数型です。符号付きの場合は -32768 ~ 32767、符号なしの場合は 0 ~ 65535 の範囲が許容されます。表示幅は最大5桁まで指定可能です。
  • MEDIUMINT – 中程度のサイズの整数型です。符号付きの場合は -8388608 ~ 8388607、符号なしの場合は 0 ~ 16777215 の範囲となります。表示幅は最大9桁まで指定できます。
  • BIGINT – 大きな整数型です。符号付きの場合は -9223372036854775808 ~ 9223372036854775807、符号なしの場合は 0 ~ 18446744073709551615 の範囲が許容されます。表示幅は最大20桁まで指定可能です。
  • FLOAT(M,D) – 符号なしにできない浮動小数点数です。表示長(M)と小数点以下の桁数(D)を定義できます。指定しない場合はデフォルトで 10,2 となり、2が小数点以下の桁数、10が小数点を含む総桁数を表します。FLOATの小数精度は24桁まで対応しています。
  • DOUBLE(M,D) – 倍精度浮動小数点数で、こちらも符号なしにはできません。表示長(M)と小数点以下の桁数(D)を定義できます。指定しない場合のデフォルトは 16,4 で、4が小数点以下の桁数です。DOUBLEの小数精度は53桁まで対応しており、REALはDOUBLEの別名(シノニム)です。
  • DECIMAL(M,D) – アンパック形式の浮動小数点数で、符号なしにはできません。アンパック形式の10進数では、各桁が1バイトに対応します。表示長(M)と小数点以下の桁数(D)の定義は必須です。なお、NUMERICはDECIMALの別名として扱われます。

日付・時刻型(DATE AND TIME TYPES)

MySQLの日付および時刻に関するデータ型は以下の通りです。

  • DATE – 日付を格納する型で、範囲は 1000-01-01 ~ 9999-12-31 です。デフォルトのフォーマットは「YYYY-MM-DD」です。例えば、1984年1月17日は「1984-01-17」として保存されます。
  • DATETIME – 日付と時刻の両方をサポートし、範囲は 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 です。デフォルトのフォーマットは「YYYY-MM-DD HH:MM:SS」です。例えば、1984年1月17日の午後2時20分は「1984-01-17 14:20:00」として保存されます。
  • TIMESTAMP – DATETIMEと同様に日付と時刻をサポートしますが、範囲は '1970-01-01 00:00:01' ~ '2038-01-19 08:44:07' に限定されます。保存形式の例もDATETIMEと同じく「1984-01-17 14:20:00」のようになります。
  • TIME – 時刻を「HH:MM:SS」形式で格納します。
  • YEAR(M) – 年を2桁または4桁の形式で格納します。長さを2に指定した場合(例:YEAR(2))、1970 ~ 2069 の範囲(70 ~ 69)となります。長さを4に指定した場合は 1901 ~ 2155 の範囲です。デフォルトの長さは4です。

文字列型(STRING TYPES)

数値型や日付型も便利ですが、実際に保存するデータの多くは文字列形式であることがほとんどです。ここでは、MySQLでよく使われる文字列データ型を紹介します。

  • CHAR(M) – 長さ1~255文字の固定長文字列です(例:CHAR(5))。保存時に指定された長さになるよう、右側がスペースで埋められます。長さの指定は必須ではありませんが、デフォルトは1です。
  • VARCHAR(M) – 長さ1~65,535文字の可変長文字列です(例:VARCHAR(25))。VARCHARフィールドを作成する際は、必ず長さを定義する必要があります。
  • BLOB または TEXT – 最大長65,535文字のフィールドです。BLOBは「Binary Large Objects(バイナリラージオブジェクト)」の略で、画像などのファイルをはじめとする大量のバイナリデータを保存するために使われます。TEXTとして定義されたフィールドも大量のデータを保持できます。両者の違いは、BLOBでは保存データのソートや比較が大文字・小文字を区別するのに対し、TEXTフィールドでは区別しないという点です。BLOBやTEXTでは長さを指定しません。
  • TINYBLOB または TINYTEXT – 最大長255文字のBLOBまたはTEXTカラムです。長さの指定は不要です。
  • MEDIUMBLOB または MEDIUMTEXT – 最大長16,777,215文字のBLOBまたはTEXTカラムです。長さの指定は不要です。
  • LONGBLOB または LONGTEXT – 最大長4,294,967,295文字のBLOBまたはTEXTカラムです。長さの指定は不要です。
  • ENUM – 列挙型と呼ばれるもので、簡単に言えば「選択肢のリスト」です。ENUMを定義すると、値として選択できる項目のリストを作成することになります(NULLも許可できます)。例えば、フィールドに「A」「B」「C」のいずれかのみを格納したい場合は、ENUM('A', 'B', 'C') と定義すれば、それらの値(またはNULL)以外が入ることはありません。

このように、MySQLのデータ型は用途に応じて適切に使い分けることで、データベースのパフォーマンスと整合性を高めることができます。テーブル設計の際には、格納するデータの性質と範囲を考慮して、最適なデータ型を選択しましょう。

  1. JavaでMySQLデータベースのレコードを更新する方法【UPDATE文の使い方を実例で解説】

    MySQLデータベースのテーブルに格納されたデータを更新するには、UPDATEコマンドを使用します。本記事では、UPDATE文の基本構文から、実際にテーブルを作成し、Java(JDBC)経由でレコードを更新するまでの一連の手順を、サンプルコード付きで詳しく解説します。 UPDATE文の基本構文 MySQLで既存のデータを更新する場合、以下の構文を使用します。 update テーブル名 set カラム名1 = 値1, ....N where 条件; where句で条件を指定しないと、テーブル内のすべてのレコードが更新されてしまうため注意が必要です。 ステップ1:テーブルの作成 まずは更新用のサン

  2. MySQLで特定のカラムのデータをエクスポートする方法(INTO OUTFILEの使い方)

    MySQLで特定のカラムのデータをエクスポートする方法 MySQLでテーブルから特定のカラム(列)のデータだけをファイルに書き出したい場合は、SELECT文とINTO OUTFILEを組み合わせるのが最もシンプルで確実な方法です。この記事では、実際にテーブルを作成し、データを投入したうえで、特定のカラムをテキストファイルへエクスポートする手順を順番に解説します。 基本構文 特定のカラムをファイルに出力する際の基本構文は次のとおりです。 select yourColumnName from yourTableName into outfile yourLocationOfFile; このように