mysqlのTINYINTの値の範囲は何ですか
プロジェクト シナリオ:
最近開発プロセス中に、テーブル設計に Thinint フィールドがあることに気づきましたが、その範囲について興味を持ちました
質問の説明:
128 を超える値を入力すると、このフィールドに次のエラーが報告されます
#原因: com.mysql .jdbc.MysqlDataTruncation:データ切り捨て:行 1 の列 'priority' の値が範囲外です;
原因分析:
-2^7 (-128) から 2 ^7 - 1 (127) の整数データ。格納サイズは 1 バイトです (UNSIGNED 符号なし型には設定されません)。
したがって、テーブルを構築するとき、実際に効果があるのは tinyint(3) だけであり、たとえ tinyint(100) を構築したとしても、最大でも 3 桁になります。
ここでは、tinyint にそのような制限がある理由に関する一般的な科学をいくつか紹介します。
MySQL の Tinyint データ型の値の範囲は、-128 ~ 127 で署名されます。0 ~ 255符号なし範囲内の値の範囲です。公式の「MySQL 5.1 リファレンス マニュアル」で確認できます。
Tinyint は 1 バイトの記憶領域、つまり 8 ビットを占有します (少し)。では、Tinyint の値の範囲はどこから来るのでしょうか?
最初に署名されていないケースを見てみましょう。符号なしの最小値は、8 ビットすべてが 0 であり、10 進数に変換すると 0 になります。したがって、符号なし Tinyint の最小値は 0 です。符号なしの最大値は、8 ビットすべてが 1、11111111 で、10 進数に変換されます。 255です。これはわかりやすいですね。
signed Tinyint の値の範囲はどのようにして得られるのでしょうか?コンピューターでは、シンボルを表すために最上位ビットが使用されます。 0 は正を表し、1 は負を表し、残りは数値を表します。次に、符号付き 8bit
最小値:
1 1 1 1 1 1 1 1 = -127 (負の値を表す)
最大値:
0 1 1 1 1 1 1 1 = 127 (正の値を示します)
#なぜ最小符号付き値が -128 ではなく -127 なのでしょうか?ここがこの記事のポイントですが、コンピュータでは負の値は補数コードで表現されます
なぜ符号付き TINYINT の最小値は -128 なのでしょうか? 「-0」も「0」ですが、正負補数体系によれば、「-0」の補数は「0」とは異なるため、2つの補数で数値を表す場合があります。数字の1の補数を1つ1つ対応させるために、「0」は必ず「0」で表現しなければならないと人為的に定められています。同時に、リソースを最大限に活用するために、本来「-0」を表す補数コードを-128を表すように指定しています。
#追加のナレッジ ポイントの拡張#mysql の int、bigint、smallint、tinyint の主な違いの簡単な紹介
最近 MySQL データベースを使用していると、主に int、bigint、smallint、tinyint などのさまざまな数値型に遭遇します。さらにわかりにくいのは、int と smallint の違いです。これはブログに書き留めておきます:
整数データの正確な数値データ型を使用してください。
bigint-2^63 (-9223372036854775808) から 2^63-1 (9223372036854775807) までの整数データ (すべての数値)。記憶サイズは8バイトです。
##int-2^31 (-2,147,483,648) ~ 2^31 – 1 (2,147,483,647) (すべて数値) の整数データ。記憶サイズは4バイトです。 SQL-92 の int の同義語は integer です。
smallint-2^15 (-32,768) から 2^15 – 1 (32,767) までの整数データ。記憶サイズは2バイトです。
tinyint0 ~ 255 の整数データ。記憶サイズは1バイトです。
解決策:
補足:
bigint データ型は、整数値がサポートされている場合にサポートされます。ただし、bigint は特殊な場合に使用されます。整数値が int データ型でサポートされる範囲を超える場合は、bigint を使用できます。 SQL Server では、int データ型が主な整数データ型です。 データ型の優先順位表では、bigint は smallmoney と int の間にあります。
この関数は、パラメーター式が bigint データ型である場合にのみ bigint を返します。 SQL Server は、他の整数データ型 (tinyint、smallint、および int) を自動的に bigint に昇格しません。
int(M) 整数データ型では、M は最大表示幅を表します。 int(M) では、M の値は int(M) が占める記憶域の量とは関係がありません。 int(3)、int(4)、および int(8) はすべて、ディスク上の 4 バイトの記憶領域を占有します。
主な解決策は 3 つあります
1. データ テーブルのフィールドを変更します (int または他の型に変更します)2. フロントエンドを調整します入力ボックス 値がその値を超えると、ポップアップ プロンプトが表示されます (不親切)
3. バックエンドの値が検証され、一致しない場合は例外プロンプトがスローされます (私が使用した 3 番目の方法) )
rree
以上がmysqlのTINYINTの値の範囲は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。
