MySQLにおけるtinyint, smallint, mediumint, bigint, intの違い

2024-09-22

MySQLでは、数値データを格納するためにさまざまな整数型が用意されています。これらの型は、扱える数値の範囲や使用するストレージ容量が異なります。

各型の特徴

  • tinyint: 最も小さい整数型で、-128から127までの値を格納できます。
  • smallint: tinyintよりも大きい整数型で、-32,768から32,767までの値を格納できます。
  • mediumint: smallintよりも大きい整数型で、-8,388,608から8,388,607までの値を格納できます。
  • bigint: 最も大きい整数型で、-9,223,372,036,854,775,808から9,223,372,036,854,775,807までの値を格納できます。
  • int: 一般的な整数型で、-2,147,483,648から2,147,483,647までの値を格納できます。

いつどの型を使うべきか

  • tinyint: 非常に小さい数値のみを扱う場合に最適です。
  • smallint: 小さい数値を扱う場合に適しています。
  • mediumint: 中規模の数値を扱う場合に使用できます。
  • bigint: 大きな数値を扱う場合に必要です。
  • int: 一般的な整数値を扱う場合に適しています。

例:

CREATE TABLE my_table (
    id tinyint NOT NULL AUTO_INCREMENT,
    quantity smallint NOT NULL,
    price int NOT NULL,
    PRIMARY KEY (id)
);

この例では、idは小さな整数値であるため、tinyintが使用されています。quantityは中規模の数値であるため、smallintが使用されています。priceは一般的な整数値であるため、intが使用されています。




MySQLにおける整数型の選び方と例

適切な整数型を使用する例

CREATE TABLE products (
    id tinyint NOT NULL AUTO_INCREMENT,
    quantity smallint NOT NULL,
    price int NOT NULL,
    PRIMARY KEY (id)
);
  • id: 製品番号として使用されるため、小さな整数値で十分です。
  • quantity: 在庫数として使用されるため、中規模の数値で十分です。
  • price: 価格として使用されるため、一般的な整数値で十分です。
CREATE TABLE users (
    id tinyint NOT NULL AUTO_INCREMENT,
    phone_number bigint NOT NULL,
    PRIMARY KEY (id)
);

この例では、phone_numberは大きな数値であるため、tinyintは不適切です。適切な型はbigintです。

CREATE TABLE orders (
    id smallint NOT NULL AUTO_INCREMENT,
    total_price int NOT NULL,
    PRIMARY KEY (id)
);



代替方法

浮動小数点型

  • float: 単精度浮動小数点型で、約7桁の精度を持ちます。

浮動小数点型は、整数型よりも精度が低く、計算誤差が発生する可能性があります。

文字列型

  • varchar: 可変長文字列型で、文字列を格納できます。
  • char: 固定長文字列型で、指定された長さの文字列を格納できます。

文字列型は、数値を文字列として格納するため、数値演算を行うことができません。

カスタムデータ型

  • MySQLのストアドプロシージャや関数を使用して、独自のデータ型を作成することができます。

カスタムデータ型は、特定の要件に合わせて柔軟なデータ型を作成することができますが、実装が複雑になる場合があります。

CREATE TABLE products (
    id tinyint NOT NULL AUTO_INCREMENT,
    quantity smallint NOT NULL,
    price int NOT NULL,
    PRIMARY KEY (id)
);
CREATE TABLE users (
    id tinyint NOT NULL AUTO_INCREMENT,
    phone_number bigint NOT NULL,
    PRIMARY KEY (id)
);

浮動小数点型を使用する例

CREATE TABLE measurements (
    value float NOT NULL
);

この例では、valueは浮動小数点型であるため、小数点以下の値を格納することができます。

文字列型を使用する例

CREATE TABLE codes (
    code varchar(10) NOT NULL
);

mysql integer



Liquibase、MySQLイベント通知、バージョン管理... あなたのプロジェクトに最適なDB スキーマ変更追跡ツールは?

データベーススキーマは、時間の経過とともに変更されることがよくあります。新しい機能を追加したり、既存の機能を改善したり、パフォーマンスを向上させたりするために、テーブルの追加、削除、変更が必要になる場合があります。このようなスキーマ変更を追跡することは、データベースの整合性と開発者の生産性を維持するために重要です。...


MySQLの自動データベースダイアグラム生成について

MySQLの自動データベースダイアグラム生成は、MySQLデータベースの構造を視覚的に表現するためのツールや方法です。これにより、データベース設計の理解、分析、修正が容易になります。MySQL Workbench: MySQLの公式GUIツールであり、データベース設計、管理、開発に幅広く利用されます。 データベース逆エンジニアリング機能により、既存のMySQLデータベースから自動的にダイアグラムを生成できます。 関係性、データ型、制約条件などの情報を視覚化します。...


MySQL複数更新解説

MySQLでは、一つのクエリで複数の行を更新することが可能です。これを 複数更新 (Multiple Updates) と呼びます。table_name: 更新したいテーブルの名前です。column1, column2, ...: 更新したい列の名前です。...


MySQLのユーザー名とパスワードの取得方法 (日本語)

MySQLのユーザー名とパスワードは、データベースシステムへのアクセス権限を管理するために使用されます。これらの情報が失われた場合、データベースへのアクセスが不可能になります。一般的な方法:MySQL Workbenchの使用:MySQL Workbenchを起動します。"Admin"メニューから"Manage Connections"を選択します。接続プロファイルを選択し、プロパティをクリックします。"User"タブでユーザー名とパスワードを確認できます。...


データベース管理を賢く!開発、テスト、本番環境に合わせたMySQLとSVNの活用術

開発環境データベーススキーマのバージョン管理: SVNリポジトリにスキーマ定義ファイル(DDL)を格納し、バージョン管理を行います。変更履歴を把握し、必要に応じてロールバックすることができます。ダンプファイルによるデータ管理: 開発中のデータは、定期的にダンプファイルとしてバックアップし、SVNリポジトリとは別に管理します。ダンプファイルを用いることで、データベースの状態を特定の時点に復元することができます。...



SQL SQL SQL SQL Amazon で見る



ストアドプロシージャ、ライブラリ、フレームワーク...MySQLでバイナリデータを扱うためのツール

BINARY:固定長のバイナリデータ型。最大255バイトまで保存できます。BLOB:可変長のバイナリデータ型。最大65, 535バイトから4GBまで保存できます。TEXT:可変長の文字列型。最大65, 535バイトから4GBまで保存できます。バイナリデータだけでなく、文字列も保存できます。


MySQLトリガーでテーブル更新を防止するエラーをスローする方法

MySQLトリガーは、特定のデータベース操作に対して自動的に実行されるコードです。トリガーを使用して、テーブル更新を防止するエラーをスローすることができます。例:以下の例は、usersテーブルのage列が18歳未満の場合に更新を防止するトリガーです。


データ移行ツール、クラウドサービス、オープンソースツールを使って SQL Server 2005 から MySQL へデータを移行する

このチュートリアルでは、SQL Server 2005 から MySQL へデータを移行する方法について 3 つの方法を説明します。方法 1: SQL Server Management Studio を使用方法 2: bcp コマンドを使用


INSERT INTOステートメントのIGNOREオプションでMySQL REPLACE INTOを代替

MySQLのREPLACE INTOコマンドは、SQL Server 2005では完全に同じように実装されていません。しかし、いくつかの代替方法を用いることで、同様の動作を実現することができます。REPLACE INTO とはREPLACE INTOは、INSERT INTOと似ていますが、以下の点が異なります。


データベースのサイズが肥大化しても大丈夫?MySQLのパフォーマンスを最適化するテクニック

MySQLデータベースは、Webアプリケーションや企業システムなど、さまざまな場面で広く利用されています。しかし、データベースのサイズが大きくなるにつれて、パフォーマンスが低下する可能性があります。パフォーマンス低下を引き起こす要因MySQLデータベースのパフォーマンス低下は、以下の要因によって引き起こされます。