mysql8.0.19 の基本データ型の詳細な説明

mysql8.0.19 の基本データ型の詳細な説明

MySQL 基本データ型

一般的な MySQL データ型の概要

![1036857-20170801181433755-146301178](D:\Notes\mysql\Review\1036857-20170801181433755-146301178.png)1. 数字:
 整数: tinyinit int bigint
 小数点:
 float: 桁数が短い場合は不正確 double: 桁数が長い場合は不正確 0.000001230123123123
 保存数: 0.000001230000

 小数点: (小数点を使用する場合は、小数点を使用することをお勧めします)
 正確な内部原則は文字列形式で保存することです。2. 文字列:
 char (10): 単純で粗雑、スペースを無駄にする、高速アクセス ルートは root000000 として保存されます
 varchar: 正確、省スペース、アクセス速度が遅い SQL 最適化: テーブルを作成するときは、固定長型を最初に、可変長型を最後に配置します。たとえば、性別、住所、説明情報が 255 文字を超える場合、制限を超えると、ファイル パスをデータベースに保存します。
 たとえば、写真やビデオ用のファイル サーバーを見つけて、パスまたは URL のみをデータベースに保存します。

3. 時間の種類:
 最もよく使用されるもの: datetime
 
4. 列挙型とコレクション型

数値型

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-HAIxWM9Z-1585063057990) (D:\Notes\mysql\Review\1036857-20170801181433755-146301178.png)]

1. 整数型

  • 整数型: TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
  • 機能: 年齢、レベル、ID、各種数値などを保存します。
整数型のテストはデフォルトで署名されます。mysql> create table t1(money tinyint); #テーブルを作成するときは、最後のフィールドの後にコンマを入れないでください。これは間違った書き方です。mysql> create table t1(money tinyint,);

mysql> t1 に値を挿入します(11);
クエリは正常、1 行が影響を受けました (0.28 秒)

mysql> t1 から * を選択します。

mysql> t1 に値 (-10) を挿入します。
クエリは正常、1 行が影響を受けました (0.11 秒)

mysql> t1 から * を選択します。

mysql> t1 に値 (-200) を挿入します。
クエリは正常、1 行が影響を受け、1 つの警告 (0.10 秒)

mysql> t1 から * を選択します。

データ型を設定すると制約された効果があり、その範囲内の数値のみを表現できます。符号なし数値型を作成するための記述方法は次のとおりです。
mysql> テーブル t2(id tinyint unsigned); を作成します。

2. 浮動小数点型

  • 浮動小数点型: float double
  • 機能: 給与、身長、体温、体重、身体的パラメータなどを保存します。
テストmysql> create table t3(id float(60,30)); # 60 は小数点以下の桁数の合計 + 整数桁数を表しますクエリ OK、0 行が影響を受けました (1.70 秒) # 30 は小数点以下の桁数の最大値を表しますmysql> create table t4(id double(60,30));
クエリは正常、影響を受けた行は 0 行 (0.88 秒)

mysql> create table t5(id decimal(60,30)); # 10進数が正確な値を格納できる理由は、内部的に文字列として格納されるからです。
クエリは正常、影響を受けた行は 0 行 (0.96 秒)

mysql> t3 に値を挿入します (1.111111111111111111111);
クエリは正常、1 行が影響を受けました (0.13 秒)

mysql> t4 に値を挿入します (1.111111111111111111111);
クエリは正常、1 行が影響を受けました (0.22 秒)

mysql> t5 に値を挿入します(1.111111111111111111111);
クエリは正常、1 行が影響を受けました (0.09 秒)

mysql> t3 から * を選択します。
mysql> t4 から * を選択します。
mysql> t5 から * を選択します。
1. テーブルを作成します。create table t2(f1 float(5,2),f2 float,f3 double(5,2),f4 double);

float(5,2)は小数点以下2桁を保持し、double(5,2)に丸めます。
2. データを書き込む		
t2 に値 (5.2336,5.2336,5.336,5.2336) を挿入します。
3. 表のデータを表示する	
t2 から * を選択します。
4. 書き込むデータを指定します: insert into t2(f2,f4) values(5.1783682169875975,5.1783682169875975);

テーブル名(フィールド1、フィールド3)値(値1、値3)に挿入します。

1. テーブル t3 を作成します。create table t3(f1 float, d1 double, d2 decimal(30,20), d3 decimal);
2. テーブル構造 desc t3 を表示します。
3. データを書き込む	
t3 に値 (5.1783682169875975179,5.1783682169875975179,5.1783682169875975179,5.1783682169875975179); を挿入します。

int--------長さの制約なし、最大 10 桁まで表現可能 float(m,n) m-----合計桁数 n-----10 進桁数

日付タイプ

  • タイプ: DATE、TIME、DATETIME、IMESTAMP、YEAR
  • 機能:ユーザー登録時間、記事公開時間、従業員入社時間、生年月日、有効期限などを保存します。
mysql> テーブル t6(d1 年、d2 日付、d3 日時) を作成します。
クエリは正常、影響を受けた行は 0 行 (1.75 秒)

mysql> t6 に値を挿入します (now(),now(),now());
クエリは正常、1 行が影響を受け、1 つの警告 (0.12 秒)

mysql> t6 から * を選択します。

文字列型

char と varchar のパフォーマンス比較:
    char(5)とvarchar(5)を比較します。3つの名前sb、ssb1、ssbb2を保存したいとします。
    文字:
      利点: シンプルで大雑把。データがどれだけ長くても、指定された長さ、5 x 5 に従って保存します。3 つの名前は、sb ssb1 ssbb2 のように保存され、間にスペースが入ります。データを取得するときは、5 x 5 が取得されます。シンプルで大雑把、高速です。欠点: スペースを無駄にしているようで、将来保存するデータの長さが不均一になる可能性があります。Varchar:
      varchar 型は長さが不定のデータを格納するため、より簡潔でスペースを節約できます。たとえば、上記の 3 つの名前を格納する場合は、次のようになります: sbssb1ssbb2、接続。このように格納した場合、これらの 3 つの名前をどのように取得しますか? 最初の名前を取得するのにどのくらいの長さが必要かご存知ですか? 
 
      varchar はデータを格納するときに、各データの前にヘッダーを追加します。このヘッダーは 1 ~ 2 バイトのデータで、後続のデータの長さを示します。1 バイトは 2**8=256 を表し、2 バイトは 2**16=65536 を表し、0 から 65535 までの数字を表すことができます。したがって、varchar は次のように格納されます: 1byte+sb+1byte+ssb1+1byte+ssbb2。したがって、格納が面倒で、char よりも効率が悪くなります。また、長さを取得してからデータを取得するため、取得も遅くなります。

      利点: ハードディスクのスペースを節約できます。ACSII コードの文字は 1 バイトの長さで表すことができます。ただし、char よりも必ずしも経済的というわけではありません。公式 Web サイトで提供されている表を見て、データを比較してください。保存するデータが指定したフィールド長とまったく同じである場合、varchar は実際には char よりも多くのスペースを占有します。

値 CHAR(4) ストレージが必要 VARCHAR(4) ストレージが必要
'' '' '' 4バイト '' 1バイト
'ab' 'ab ' 4バイト 'ab' 3バイト
'abcd' 'abcd' 4 バイト 'abcd' 5 バイト
'abcdefgh' 'abcd' 4 バイト 'abcd' 5 バイト
 
             デメリット: アクセス速度が遅い。InnoDB データ テーブルの場合、内部行ストレージ形式では固定長列と可変長列が区別されません (すべてのデータ行はデータ列値へのヘッダー ポインターを使用します)。したがって、本質的には、固定長 CHAR 列を使用することが、可変長 VARCHAR 列を使用することよりも必ずしも優れているわけではありません。したがって、主なパフォーマンス要因は、データ行によって使用されるストレージの合計量です。 CHAR は平均して VARCHAR よりも多くのスペースを占有するため、処理する必要があるデータ行のストレージとディスク I/O の合計量を最小限に抑えるには、VARCHAR を使用することをお勧めします。
charの使用に適しています:
	身分証明書番号、携帯電話番号、QQ 番号、ユーザー名、パスワード、銀行カード番号は、varchar の使用に適しています。
	コメント、モーメント、Weibo 1. テーブルを作成する create table t6(c1 char(1),v1 varchar(1),c2 char(8),v2 varchar(8));

2. データを書き込みます。 insert into t6 values('alexq','alexq','alexq','alexq');
3. テーブル内のデータをクエリします。select * from t6;

列挙型とコレクション型

enum: 単一選択動作 ------ 列挙型では、値のセットから 1 つの値のみを選択できます。一度に複数の値を選択することはできません。 1. テーブルの作成 create table t8(id int, name char(18), gender enum('male','female'));
2. データを書き込みます。 insert into t8 values(1,'alex','unknown'); ---------Unknown は書き込めません。 3. テーブル内のデータを照会します。 select * from t8;
4. データを書き込みます。 insert into t8 values(1,'alex','male');--------------male を書き込むことができます。 5. テーブル内のデータを照会します。 select * from t8;
2. データを書き込みます。 insert into t8 values(1,'alex','female');-------------female を書き込むことができます。 3. テーブル内のデータを照会します。 select * from t8;
セット:	 
	複数選択動作では、**組み合わせる値セット内の 1 つ以上の要素を任意に選択できます**。範囲外のコンテンツの挿入は許可されず、重複した値は自動的に削除されます。
1. テーブルを作成します。create table t9(id int,name char(18),hobby set('喫煙','飲酒','足洗い','マッサージ','パーマ'));
2. t9値にデータ挿入を書き込みます(1、「Taibai」、「パーマ、喫煙、飲酒、マッサージ」)。
3. テーブル内のデータをクエリします。select * from t8;
4. t9値にデータ挿入を書き込みます(1、「Da Zhuang」、「足を洗う、足を洗う、足を洗う、マッサージ、マッサージ、ゲームをする」)。
5. テーブル内のデータをクエリします。select * from t8;

要約する

mysql8.0.19-Basic データ型に関するこの記事はこれで終わりです。mysql8.0.19-Basic データ型に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • PostgreSQL と MySQL のデータ型の互換性の比較
  • MySQL データ型の最適化の原則
  • MySQL のデータ型とスキーマの最適化の詳細な説明
  • MyBatis JdbcType と Oracle および MySql データ型の対応の説明
  • MySQL データ型 DECIMAL の詳細な分析
  • MySQL のデータ型とフィールド属性の原理と使用法の詳細な説明
  • MySQL入門(パート2)データベースのデータ型の詳細な説明
  • MySQL データ型 DECIMAL(N,M) における N と M の意味の詳細な説明
  • MySQL 操作: JSON データ型の操作
  • MySQL データ型の完全分析

<<:  キーフリーログインプロセスを実現するためのLinux構成の分析

>>:  Vueはページング機能を実装する

推薦する

MySQL では UTF-8 が推奨されないのはなぜですか?

最近、Rails 経由で「utf8」でエンコードされた UTF-8 文字列を MariaDB に保存...

Vue3 + TypeScript 開発の概要

目次Vue3 + TypeScript 学習1. 環境設定1.1 最新のVue scaffoldin...

Vue3 で状態管理を実装するために provide を使用する方法

目次序文provide/inject を通じて Vuex 関数を実装する方法このプラグインをアプリケ...

MySQLにおけるビューの作成(CREATE VIEW)と使用制限の詳しい説明

この記事では、例を使用して、MySQL ビューの作成 (CREATE VIEW) と使用上の制限につ...

私が遭遇したIE8の互換性に関する注意事項

1. IE8 の getElementById は id のみをサポートし、name はサポートしま...

CentOS7にMariaDB 10.2.4をインストールする方法の詳細な説明

CentOS 6 以前のバージョンでは、MySQL サーバー/クライアント インストール パッケージ...

XHTML 2.0 新機能プレビュー

<br />ブラウザが次世代のXHTMLを処理できるようになる前に、このよりリッチなコン...

シンプルなID生成戦略: MySQLテーブルからグローバルに一意のIDを生成する実装

グローバル ID を生成する方法は多数あります。ここでは簡単な解決策を紹介します。MySQL の自動...

Linux で MySQL 5.7.19 をアンインストールする方法

1. MySQLが以前にインストールされていたかどうかを確認するコマンド: rpm -qa|grep...

CSS ハック \9 と \0 は IE11\IE9\IE8 のハッキングには機能しない可能性があります

Web ページやフォームを設計するたびに、さまざまなブラウザ、特に IE ファミリの互換性の問題に悩...

Vue で wangeditor リッチテキスト編集を使用する際の問題

wangEditor は、JavaScript と CSS に基づいて開発された Web リッチ テ...

16進カラーコード(完全版)

赤とピンク、およびそれらの 16 進コード。 #990033 #CC6699 #FF6699 #FF...

MySQL の instr を使用したファジー クエリ メソッドの紹介

MySQL の内部関数instrを使用すると、従来の like クエリ メソッドを置き換えることがで...

GolangでMySQLデータベースを操作するための実装コード

序文Golang は、SQL データベースにアクセスするための database/sql パッケージ...

Ubuntu で nginx を使用して WebDAV ファイル サーバーを構築する詳細なプロセス

nginxをインストールするnginx-fullをインストールする必要があることに注意してください。...