MySQLのTINYINTって何?INT(1)との違いなどを徹底解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年11月)

✔以下のような方に向けて書かれています

「MySQLのtinyintとは何なのだろう?」

「MySQLでtinyintの設定方法を学びたい」

「MySQLのtinyintを使用した実例を探している」

✔当記事を通してわかること

  • mysql tinyintの概要
  • mysql tinyintの設定方法やその利用法
  • mysql tinyintを用いた具体的な実例

当記事では、mysql tinyintの基本からその設定の仕方、詳細なオプションを活用した使い方まで、具体的な事例をもとに詳しく解説します。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

tinyintの基本理解

こちらでは、tinyintの基本的な理解を深めるための情報を提供します。

tinyintの正確な理解は、データベースの効率的な運用とデータ整合性の確保に役立つでしょう。

  • コンピュータでの整数の扱い
  • tinyintとビット数の関係性

コンピュータでの整数の扱い

コンピュータにおいて、データはバイナリ形式、つまり0と1のみで表現されます。

覚えておきたいのは以下の2点。

  • これらの0と1を、ビットと呼ぶ
  • 8ビット集まると、1バイトになる

整数もこの単位で管理されます。

例えば2ビットで表せる数字は以下の4つです。

  • 00
  • 01
  • 10
  • 11

それぞれ10進数に置き換えると、0から3までの整数を表します。

tinyintとビット数の関係性

MySQLのtinyint型は、8ビット(1バイト)のデータ型です。

11111111

この8ビットで、-128から127までの整数、または0から255までの整数(UNSIGNED)を表現できます。

1バイトデータ型: tinyintの特性

tinyint型は、ほかのデータ型と比べても、その特性と活用方法に独特のポイントがあります。

これらの特性を理解することで、最適なデータ型を選択する手助けとなるはずです。

  • データ処理の単位:バイトについて
  • 真偽値の管理:tinyintの特異性
  • int(1)とtinyint:二つの差異

データ処理の単位:バイトについて

tinyintは、非常にコンパクトなデータ型と言えます。

なぜならコンピューターが扱うビット数のうち、1バイト(8ビット)のみ保存できる型だからです。

バイトは、コンピュータの基本的なデータ処理の単位。

1バイトは8ビットとして、特定のデータや情報を一まとめにして扱います。

真偽値の管理:tinyintの特異性

MySQLでは、tinyint(1)が真偽値としての役割を果たします

なぜならMySQLには、専用のBooleanデータ型が存在しないからです。

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    is_active TINYINT(1) NOT NULL DEFAULT 0
);

ここで、is_activeは活動中のユーザーを示すフラグとして使用できます。

int(1)とtinyint:二つの差異

int(1)tinyintは異なる概念です。

int(1)は、表示幅が1のint型を意味し、tinyintは1バイトの整数型を意味します。

表示幅が1とは、表示されるのが1桁なだけ。

実際に保存できるデータは「-2147483648」から「2147483647」まであるのです。

int(1) が表示幅を指し、tinyint が実際のデータ型であるという点を理解することが重要です。

tinyint(1)について詳しく解説

tinyint(1)の理解は、MySQLのデータベース設計において重要です。

真偽値としての利用方法や、その背景にある仕組みを理解することで、効果的なデータ管理が可能となります。

  • Boolean型の理解:真偽値の詳細
  • int上での真偽値の操作

Boolean型の理解:真偽値の詳細

Booleanは、真(True)や偽(False)の2つの値を持つデータ型です。

多くのプログラミング言語にはこのデータ型が存在しますが、MySQLには直接的なBoolean型が存在しません。

tinyint(1)が代替として利用されることが多いです。

int上での真偽値の操作

tinyint(1)を真偽値として利用する際、1は真、0は偽として扱われます

この特性を利用し、次のような操作が可能です。

UPDATE users SET is_active = NOT is_active WHERE id = 1;

このSQL文は、指定したユーザーのis_activeの値を反転させます。

MySQLでの整数型:それは常にintではない

MySQLでは、データの大きさや性質に応じて、さまざまな整数型が提供されています。

これらの整数型の違いや特性を理解することで、データを効率的に管理できます。

  • MySQLにおける整数型のデータ型一覧
  • 符号なし整数(UNSIGNED)について
  • MySQL特有のZEROFILL機能
  • データ型最大表示幅の特性

MySQLにおける整数型のデータ型一覧

MySQLでは以下の整数型が提供されています。

  • TINYINT: 1バイト
  • SMALLINT: 2バイト
  • MEDIUMINT: 3バイト
  • INT: 4バイト
  • BIGINT: 8バイト

各データ型は、そのバイト数に応じて表現できる整数の範囲が異なります。

符号なし整数(UNSIGNED)について

MySQLの整数型はデフォルトで符号付きですが、UNSIGNED属性を使うことで符号なし整数として定義も可能です。

符号なし整数は、負の値を取れません。

そのため、そのデータ型の最大値が2倍になります。

CREATE TABLE items (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    price MEDIUMINT UNSIGNED NOT NULL
);

上記のSQLでは、idpriceは共に負の値を取れないと定義されています。

MySQL特有のZEROFILL機能

ZEROFILLは、定義された幅に満たない場合に、値の左側を0で埋める機能のこと。

これは、特定の表示形式を持つデータの保存に便利です。

CREATE TABLE orders (
    order_number INT(5) ZEROFILL NOT NULL
);

このテーブルで、order_number45という値を保存すると、00045として保存されます。

データ型最大表示幅の特性

MySQLの整数型の定義時には、最大表示幅を指定できますが、これはストレージのサイズや範囲には影響しません。

例えば、INT(3)は最大3桁の数字を表示することを意味しますが、実際の範囲はINTの範囲である-2147483648から2147483647までです。

CREATE TABLE demo (
    sample_value INT(3)
);

このテーブルでは、sample_valueは3桁の数字として表示されますが、INTの全範囲の値を保存できます。

まとめ

当記事では、MySQLのtinyintデータ型について学習してきました。

適切なデータ型を選択することは、データベースの性能やデータの整合性を保つために非常に重要です。

この情報が、MySQLの初心者にとって有益であることを願っています。

タイトルとURLをコピーしました