——「MySQL in Simple Terms (第 2 版)」からのメモ 数値型
整数型整数型の場合、MySQL は型名の後に 例: -- id1 と id2 の 2 つのフィールドを持つテーブル t1 を作成し、値の幅をそれぞれ int と int(5) として指定します。 mysql> テーブル t1 (id1 int,id2 int(5)) を作成します。 mysql> desc t1; --id1とid2の両方に値1を挿入します mysql> t1 の値 (1,1) に挿入します。 mysql> t1 から * を選択します。 -- id1 フィールドと id2 フィールドにそれぞれ zerofill パラメータを追加します。mysql> alter table t1 modify id1 int zerofill; mysql> テーブル t1 を変更し、 id2 を int(5) でゼロフィルします。 幅制限を設定した後、幅制限より大きい値を挿入しても、挿入されたデータには影響はなく、データは引き続き型のブック精度に従って保存されます。この時点では、幅のフォーマットは実際には意味がなく、左側に「0」文字は入力されません。 --テーブル t1 の id1 に 1 を挿入し、id2 に 12345678 を挿入します。 mysql> t1 に値 (1,12345678) を挿入します。 mysql> t1 から * を選択します。 すべての整数型には、オプション属性 さらに、整数型には独自の AUTO_INCREMENT を使用する列は、NOT NULL および UNIQUE として定義する必要があります。 浮動小数点型MySQL では、小数の表現を浮動小数点数と固定小数点数の 2 つのタイプに分類します。浮動小数点数には float (単精度) と double (倍精度) が含まれますが、固定小数点数には小数点数のみが含まれます。固定小数点数は、MySQL では文字列として保存されます。固定小数点数は浮動小数点数よりも精度が高く、通貨などの高精度データを表すのに適しています。 浮動小数点数と固定小数点数はどちらも、型名の後に「(M,D)」を追加することで表すことができます。「(M,D)」は、値が合計 M 桁、小数点 D 桁で表示されることを意味します。 MySQL は浮動小数点値を保存するときに、余分な桁を切り捨てます。したがって、123.006 を float(5,3) に挿入すると、格納される値は 123.01 になります。 float と double の精度が指定されていない場合、デフォルトは実際のハードウェアとオペレーティング システムによって決定されます。decimal が指定されていない場合、デフォルトの整数桁は 10 で、小数桁は 0 です。 例: --テーブル tf を作成し、フィールド id1、id2、id3 をそれぞれ float(5,2)、double(5,2)、decimal(5,2) に設定します。 mysql> テーブル tf( id1 float(5,2),id2 double(5,2),id3 小数点以下(5,2)); を作成します。 --表1.23の3つのフィールドにデータを挿入します mysql> tf に値 (1.23,1.23,1.23) を挿入します。 --データ1234.005をそれぞれテーブルに挿入します mysql> tf に値 (1234.005,1234.005,1234.005) を挿入します。 --データ123.005をそれぞれテーブルに挿入します mysql> tf に値 (123.005,123.005,123.005) を挿入します。 --データ123.006、123.006、123.004をそれぞれテーブルに挿入します mysql> tf に値 (123.006,123.006,123.004) を挿入します。 --テーブルのtfフィールドの精度を削除し、1.23を再挿入します mysql> テーブルを変更して tf id1 float を変更します。 mysql> テーブルを変更して tf id2 を double に変更します。 mysql> テーブルを変更して tf id3 10 進数を変更します。 mysql> tf に値 (1.23,1.23,1.23) を挿入します。 mysql> desc tf; --テーブルに 1.234567123321、1.234567123321123321、1.23234233 を挿入します mysql> tf に値を挿入します (1.234567123321,1.234567123321123321,1.23234233); ビットタイプBIT 型の場合、ビット フィールド値を格納するために使用されます。BIT(M) は、マルチビットの 2 進数を格納するために使用できます。M の範囲は 1 ~ 64 です。記述しない場合は、デフォルトは 1 ビットです。 SELECT コマンドを直接使用した場合、クエリの結果は表示されません。結果を読み取るには 例: --テーブルtbを作成し、フィールドid1をbit(1)、id2をbitとして定義します。 mysql> テーブル tb(id1 ビット(1),id2 ビット); を作成します。 --tbに1,1を挿入 mysql> tb に値 (1,1) を挿入します。 mysql> tb から * を選択します。 mysql> tbからbin(id1),hex(id2)を選択します。 ビット フィールドにデータを挿入する場合、最初にバイナリに変換されます。ビット数が許容範囲内であれば、データは正常に挿入されます。ビット数が定義されたビット数を超える場合、データは挿入されません。 時間タイプMySQL には、日付と時刻を表すために使用できる多くのデータ型があります。次の表は、MySQL 5.0 でサポートされているすべての日付と時刻の型を示しています。 |
日付と時刻の種類 | バイト | 最小 | 最大 |
---|---|---|---|
日付 | 4 | 1000-01-01 | 9999-12-31 |
日時 | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
タイムスタンプ | 4 | 19700101080001 | 2038年頃 |
時間 | 3 | -838:59:59 | 838:59:59 |
年 | 1 | 1901 | 2155 |
各時間タイプには有効な範囲があります。この範囲を超えると、システムはデフォルトの SQLMode でエラーをプロンプトし、ゼロ値で保存します。
--テーブル tdt を作成します mysql> テーブル tdt(dt date, dttm datetime, tms timestamp,tm time,yr year); を作成します。
--now() 関数を使用して、現在の時刻をテーブルに挿入します。mysql> insert into tdt values(now(),now(),now(),now(),now());
--tms に NULL を挿入すると、MySQL はシステム時間を自動的に割り当てます。mysql> insert into tdt(tms) values(null);
MySQL は、テーブルの最初の TIMESTAMP フィールドにのみシステム時間を割り当てます。他のフィールドがある場合は、値 0 が割り当てられます。
--テーブルtdtを変更し、TIMESTAMP型のtms1列を追加し、tmsとtms1にnull値を割り当てます mysql> テーブル tdt を変更し、 tms1 タイムスタンプを追加します。 mysql> desc tdt; mysql> tdt(tms,tms1) に値(null,null) を挿入します。
TIMESTAMP の重要な特徴は、損失に関連していることです。日付を挿入する場合、保存される前にローカル タイム ゾーンに変換されます。データベースから日付を取得する場合、日付を表示する前にローカル タイム ゾーンに変換する必要があります。
--フィールドtms、dtを含むテーブルtdt1を作成します mysql> テーブル tdt1(tms timestamp,dt datetime) を作成します。
--現在のタイムゾーンを表示し、システム時間をテーブルに挿入します tdt1mysql> show variables like 'time_zone'; mysql> tdt1 に値を挿入します (now()、now());
タイムゾーンの値はSYSTEM
あることがわかります。この値は、デフォルトでホストのタイムゾーンと一致しています。中国にあるため、実際は East 8 (+8:00) です。
-- タイムゾーンを East 9th District に変更し、tdt1 の時間を再度確認します。mysql> set time_zone='+9:00';
MySQL は、バージョンに応じて異なる、文字列データ用のさまざまなストレージ タイプを提供します。 5.0 を例にとると、MySQL にはCHAR
、 VARCHAR
、 BINARY
、 VARBINARY
、 BLOB
、 TEXT
、 ENUM
、 SET
が含まれます。
データ型 | 説明はストレージです |
---|---|
魅力) | Mは0から255までの整数です |
可変長文字(M) | Mは0から65535までの整数で、値の長さ+1バイトです。 |
タイニーブロブ | 許容される長さは0〜255バイト、値の長さ+1バイト |
ブロブ | 許容される長さは0〜65535バイト、値の長さ+2バイト |
ミディアムブロブ | 許容される長さは0〜167772150バイトで、値の長さ+3バイトです。 |
ロングロブ | 許容される長さは0~4294967295バイト(値の長さ+4バイト)です。 |
小さなテキスト | 許容される長さは0〜255バイト、値の長さ+1バイト |
文章 | 許容される長さは0〜65535バイト、値の長さ+2バイト |
中テキスト | 許容される長さは0〜167772150バイト、値の長さ+3バイト |
長文 | 許容される長さは0~4294967295バイト(値の長さ+4バイト)です。 |
VARBINARY(M) | 0~Mバイトの可変長バイト文字列(値の長さ+1バイト)を許可します。 |
バイナリ(M) | 長さ0からMバイトまでの固定長バイト文字列が許可されます |
方法
これら 2 つは非常に似ており、どちらも MySQL で短い文字列を保存するために使用されます。 2 つの主な違いは保存方法です。CHAR 列の長さはテーブルの作成時に宣言された長さに固定されますが、VARCHAR 列の値は可変長文字列です。検索時に、CHAR は末尾のスペースを削除しますが、VARCHAR は削除しません。
-- 2つのフィールド ch (char(6)) と vc (varchar(6)) を含むテーブル tc を作成します。 mysql> テーブル tc (ch char(6),vc varchar(6)) を作成します。 --ch および vc フィールドに 'abc' を挿入します mysql> tc に値を挿入します ('abc ','abc '); -- フィールドの長さを照会します。mysql> select length(ch),length(vc) from tc;
CHAR および VARCHAR に似ていますが、バイナリ文字列を格納する点が異なります。
--フィールドbc (binary(6))、vbc (varbinary(6))を含むテーブルtbcを作成します。 mysql> テーブル tbc (bc binary(6),vbc varbinary(6)) を作成します。 --テーブルにデータを挿入します ('a ','a ') mysql> tbc に値を挿入します ('a ','a '); --フィールド値の長さを表示します。mysql> select length(bc),length(vbc) from tbc;
BINARY 値を保存する場合、MySQL は指定されたフィールド定義の長さに合わせて値に0x00
(ゼロ バイト) を埋め込みます。
-- hex() 関数を使用して、tbcmysql> select length(bc),length(vbc) from tbc; に保存されているデータを表示します。
列挙型の値の範囲は、テーブルを作成するときに列挙を通じて明示的に指定する必要があります。1255 個のメンバーの列挙の場合、1 バイトのストレージが必要です。25665535 個のメンバーの列挙の場合、2 バイトのストレージが必要です。最大 65535 人のメンバーが許可されます。
--フィールド f1 (enum('a','b','c')) を含むテーブル te を作成します。 mysql> テーブル te(f1 enum('a','b','c')) を作成します。 -- テーブルに複数のレコードを挿入しますmysql> insert into te values('a'),('B'),('3'),(null);
ENUM では大文字と小文字は区別されません。また、添え字を使用したデータの挿入もサポートしています (1 から始まり、添え字が範囲外の場合はエラーが報告されます)。特殊な値'0'
は null 値を表します。
SET は ENUM と非常によく似ており、0 ~ 64 個のメンバーを含めることができる文字列オブジェクトでもあります。ストレージはメンバー数に応じて異なります。
1〜8個のメンバーのセットは1バイトを占めます
9〜16のメンバーのセットは2バイトを占めます
17~24個のメンバーのセットは3バイトを占める
25~32のメンバーのセットは4バイトを占めます
32~64のメンバーのセットは8バイトを占めます
さらに、SET タイプでは一度に複数のメンバーを選択できます。
--フィールド f1 を含むテーブル ts を作成します (set()) mysql> テーブル ts を作成します (f1 set('a','b','c','d')); mysql> ts に値 ('a,b'),('a,d'),('b,c,d') を挿入します。
--テーブルにデータを挿入します ('a,b,a,c,d,d') mysql> ts に値を挿入します ('a,b,a,c,d,d')。
SET型は、許容値セットから任意の数の要素を選択して組み合わせることができるため、入力値が許容値の組み合わせ範囲内であれば、SET型の列に正しく記録できます。許容範囲外の値の場合、エラーが報告されます。重複するメンバーを含むセットは自動的に重複が排除されます。
MySQL 5.7 の一般的なデータ型に関するこの記事はこれで終わりです。MySQL データ型の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。
<<: Linux チェックアップ、Linux の状態 (ネットワーク IO、ディスク、CPU、メモリ) を把握
目次01 アトミックDDLの紹介02 一部のDDL操作の実行動作の変更03 DDL 操作のログを表示...
目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...
目次1. サーバーの状態を確認します。 2. ルートパスワードを変更します。 3. mysqlser...
1. コマンド > と >> の違いコマンド>: ファイルが存在する場合は、...
背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...
目次序文なぜユニットテストを導入するのですか?ユニットテストの概要テスト開発パターン1. テスト駆動...
mysql-5.7.17.msiのインストール、スクリーンショットに従ってください、ステップバイステ...
目次概要4つの例例1: 誕生日で説明する約束の基本例2: 数字当てゲーム例3: Web APIから国...
最近MySQLデータベースのバージョンを変更する必要があり、それを記録するために記事を書きます1. ...
この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...
1. 速度制御機能を使用して、トランジション効果(加速、減速など)の速度曲線を制御します。速度制御機...
目次1. はじめにII. 監視対象2.1 なぜオブジェクトを監視する必要があるのですか? 2.2 デ...
基本的な準備この実装には、クラス名が ball である単純な div が必要です。 HTMLコード:...
1. レンダリング2. 操作手順1. テンセントマップキーを申請する - 住所2. ミニプログラムの...
1. インストール前の準備データベースのバージョンを確認するコマンド: mysql --versio...