MySQL データベースの基本: データ型の詳細 - テキスト文字列型

目次

序文

1.CHAR型とVARCHAR型

2.テキストタイプ

1.テキスト

3.ENUM型

4.セットタイプ

5.JSON型

見る


序文

最近、MySQL スキル ツリーが作成されました.MySQL の基礎知識を復習したいとずっと思っていました.MySQL スキル ツリーの完成を利用して、MySQL データベースの基礎知識を学び、復習しました. 私はこのデータベースを長い間使用しています. 長期間使用しないといくつかの基本的な知識ポイントが忘れられます. たとえば、データ型のオーバーフローの問題. 多くの場合, テーブルを作成するときにランダムにその結果、データをインポートするときにエラーが報告され、テーブルを削除する必要があります. トラブル、事前にデータ長を設定すると、この問題を効果的に回避し、多くのスペースを節約できるので、.すべての MySQL データ型を要約する価値のある選択です。

要約する最善の方法は、学習順序に従ってマインド マップを整理することです。これにより、アイデアをすばやく整理することができます。

この一連の記事は、この文脈で書かれます. この一連の記事は、私のコラム 1 の記事に含まれます. SQL データベース操作をすばやく学ぶ, 基本的に、SQL を使用して日常のビジネスや日常的なクエリ データベースの構築と分析に対処する方法と、複雑な操作。基本的なデータベースの構築やテーブルの構築から、さまざまなデータベースの複雑な操作に対応するまで、多くの時間と労力を費やして作成されたものであり、一般的な SQL 関数の専門的な説明はもちろん、最も実践的で一般的な知識を初めて学ぶことができます。このブログは長くて、読んで実践する価値があります. 最良の部分を選んで、詳細に実践について話します. ブロガーはブログの投稿を長く続けますので、間違いや疑問点があればコメント欄で指摘していただけると助かります。
MySQL の時間型データを非常によくまとめた記事があります。

簡単な調査 - MySQL をいじって時間、フォーマット変換、さまざまな操作方法を取得する

したがって、時間型データについては詳しく説明しません。この記事では、主に文字列データ型の説明と実際の操作について詳しく説明します。主要


1.CHAR型とVARCHAR型

どちらも短い文字列を格納できます. char型のフィールド長は宣言時に固定です. 最小値は0で最大値は255です. 保存時にデータの実際の長さが CHAR 型の宣言された長さより短い場合、指定された長さになるまで右側にスペースが埋め込まれます。MySQL がCHAR 型のデータを取得するとき、CHAR 型のフィールドは末尾のスペースを取り除きますCHAR 型データの場合、CHAR 型フィールドを定義する場合、宣言されたフィールド長は、CHAR 型フィールドが占める記憶領域のバイト数です。

VARCHAR 型によって変更される文字列は、最小長が 0 で最大長が 65535 の可変長文字列です。タイプ VARCHAR のフィールド データを取得する場合、末尾のスペースは保持されます。タイプ VARCHAR のフィールドが占有するストレージ スペースは、文字列の実際の長さに 1 バイトを加えたものです。

テストするテーブルを作成しましょう。

create table mytable1(
	vc VARCHAR(4),
	c CHAR(4)
	);
INSERT INTO mytable1 (vc, c) VALUES ('abc', 'abc');

 

 このとき、通常はスペースは入りませんので、スペースがある場合を見てみましょう。

INSERT INTO mytable1 (vc, c) VALUES ('a  ', 'a  ');

 

SELECT LENGTH(vc), LENGTH(c) FROM mytable1;

 

 vc によって保存される文字列スペースは予約されますが、char は末尾のスペースを保持しません。もう 1 つ b を追加します。

SELECT CONCAT(vc, 'b'), CONCAT(c, 'b') FROM mytable1;

 

VARCHAR 型のフィールド vc は末尾のスペースを保持しますが、CHAR 型のフィールド c は末尾のスペースを削除します。

2.テキストタイプ

1.テキスト

テキストは、テキスト型の文字列を保存するために使用されます。これには、TINYTEXT、TEXT、MEDIUMTEXT、および LONGTEXT 型の合計 4 つの型が含まれます。データを TEXT タイプのフィールドに保存してクエリを実行する場合、データの末尾のスペースは削除されません。これは VARCHAR タイプと同じです。

create table mytable2(
	t TEXT
	);
INSERT INTO mytable2 (t) VALUES ('a  ');
SELECT LENGTH(t) FROM mytable2;

SELECT CONCAT(t, 'b') FROM mytable2;

 

3.ENUM型

ENUM型は列挙型とも呼ばれ、ENUM型の値の範囲はフィールド定義時に指定する必要があり、ENUM型定義時に指定したメンバ数によって必要な記憶域が決まります。ENUM 型に 1 ~ 255 メンバーが含まれる場合は 1 バイトの格納スペースが必要であり、ENUM 型に 256 ~ 65535 メンバーが含まれる場合は 2 バイトの格納スペースが必要です。ENUM 型のメンバ数の上限は 65535 です。

CREATE TABLE mytable3(
sex ENUM('男','女','unknow')
);
INSERT INTO mytable3
VALUES('男'),('女');

INSERT INTO mytable3
VALUES('UNKNOW');

 

ここで、ENUM では大文字と小文字が区別されず、宣言されたデータが優先されることがわかります。

未定義の値を追加すると、エラーが報告されます。

複数の定義済みの値を追加すると、エラーも報告されます。

要素を列挙する呼び出しは、1 から始まるインデックスを使用して行うことができます。

INSERT INTO mytable3
VALUES('1'),(2);

null 以外に制限することなく、値を追加できますnull

INSERT INTO mytable3
VALUES(NULL);

4.セットタイプ

SET は文字列オブジェクトを表し、0 個以上のメンバーを含めることができますが、メンバー数の上限は 64 です。SET 型に含まれるメンバーの数が異なる場合、それが占有するストレージ スペースも異なります。

会員数範囲(Lは実際の会員数) 収納スペースを取る
1<=L<=8 1バイト
9<=L<=16 2バイト
17<=L<=24 3バイト
25<=L<=32 4バイト
33<=L<=64 8バイト

ある程度、SET 型がデータを格納する場合、メンバーが多いほど、より多くの格納領域を占有します。注: SET 型は、ENUM 型とは異なり、メンバーを選択するときに一度に複数のメンバーを選択できます。

CREATE TABLE mytable4(
sex SET('男','女','unknow')
);
INSERT INTO mytable4(sex)
VALUES('男'),('男,女');

 

複数のカンマ区切りの有効なメンバー値を SET タイプのフィールドに挿入できます。

重複する SET タイプ メンバーがテーブルの SET タイプ フィールド s に挿入されると、MySQL は重複するメンバーを自動的に削除します。

INSERT INTO mytable4(sex)
VALUES ('男,女,女');

SET メンバーに存在しない値を SET タイプのフィールドに挿入すると、MySQL はエラーをスローします。

5.JSON型

MySQL 5.7 では、JSON データ型がサポートされています。MySQL 8.x バージョンでは、JSON 型は、自動的に検証できる JSON ドキュメントと最適化されたストレージ構造を提供し、MySQL での JSON 型データの保存と読み取りをより便利かつ効率的にします。

CREATE TABLE mytable5 (
     id_info JSON
     );
		 

 JSON データを挿入します。

INSERT INTO mytable5 (id_info) VALUES ('{"name":"fanstuck", "age":23, "address":{"province":"zhejiang", "city":"hangzhou"}}');

 JSON 型のフィールドのデータの特定の値を取得する必要がある場合は、"->" および "->>" 記号を使用できます。

SELECT id_info->'$.name' as name,
			 id_info->'$.address.city' as city
FROM mytable5

 

注意してください、迷子にならないようにしてください。間違いがある場合は、メッセージを残してアドバイスをお願いします。どうもありがとうございました

この問題は以上です。ご不明な点がございましたら、お気軽にメッセージを残してください。次号でお会いしましょう

 


見る

[mysql] ENUM型

テキスト文字列型 - データ型 - CSDN MySQL エントリ スキル ツリー

おすすめ

転載: blog.csdn.net/master_hunter/article/details/127047564