ホームページ  >  記事  >  データベース  >  MySQL のデータ型の概念を理解するにはどうすればよいですか?

MySQL のデータ型の概念を理解するにはどうすればよいですか?

坏嘻嘻
坏嘻嘻オリジナル
2018-09-15 11:15:011704ブラウズ

この記事の内容は、MySQL のデータ型の概念を理解する方法に関するものです。必要な方は参考にしていただければ幸いです。

1. データとは何ですか?

データは、特定のデータ型でデータベースに保存された情報の集合です。データには、名前、数値、通貨、テキスト、画像、小数、計算、統計など、想像できるほぼすべてのものが含まれます。データ クライアントは大文字、小文字、または大文字と小文字の混合で保存し、データは操作または変更でき、ほとんどのデータは存続期間中変更されません。

データ型は、列に含まれるデータの規則を指定するために使用され、列に割り当てられる幅や値を文字にできるかどうかなど、データを列に格納する方法を決定します。数字、日付、時刻。データまたはデータの組み合わせには、対応するデータ型があります。これらのデータ型は、文字、数字、日付と時刻、画像、バイナリ データなどを格納するために使用されます。より詳細には、データには、名前、説明、数値、計算、画像、画像の説明、ドキュメントなどが含まれる場合があります。

データはデータベースの目的であり、保護する必要があります。データを保護するのはデータベース管理者 (DBA) ですが、各データベース ユーザーもデータを保護するために必要な措置を講じる責任があります。

2. 基本的なデータ型

データ型はデータ自体の特性であり、その特性はテーブル内のフィールドに設定されます。たとえば、フィールドには数値を含める必要があり、数字や文字の文字列の入力を許可しないように指定できます。また、通貨の値を格納するフィールドには文字を入力しないようにすることもできます。データベース内の各フィールドのデータ型を定義すると、データベース内のエラーによる誤ったデータを大幅に減らすことができます。フィールド定義(データ型定義)は、各フィールドに入力できるデータを通知するデータ検証方法です。

1. 固定長の文字列。

固定長文字列は通常同じ長さを持ち、固定長データ型を使用して保存されます。 SQL 固定長文字列の標準は次のとおりです。

CHARACTER(n)

n は、フィールドに格納できる最大文字数を定義する数値です。

一部の SQL 実装では、CHAR データ型を使用して固定長データを保存します。文字はこのデータ型に保存できます。

固定長データ型では、通常、スペースが不足した文字を補うために使用されます。文字長が10で入力データが5桁のみの場合、残りの5桁はスペースとして記録されます。パディングにより、フィールド内の各値が同じ長さになるようにします。

PS: 名前などの可変長のデータを保存するために固定長データ型を使用しないでください。固定長データ型を不適切に使用すると、使用可能な領域が無駄になり、異なるデータの正確な比較に影響を与える可能性があります。データ。 。データベース領域を節約するために、可変長の文字列を保存するには可変長データ型を使用する必要があります。

2. 可変長の文字列。

SQL は、可変長文字列、つまり可変長の文字列をサポートします。 SQL 可変長文字列の標準は次のとおりです。

CHARACTER VARYING(n)

n は、フィールドに格納できる最大文字数を示す数値です。

一般的な可変長文字列データ型には、VARCHAR、VARINARY、VARCHAR2 などがあります。 VARCHAR は ANSI 標準であり、Microsoft SQL Server と MySql でも使用されます。VARINARY と VARCHAR2 は両方とも Oracle で使用されます。文字として定義されたフィールドには数字と文字を含めることができます。つまり、データに数字が含まれる可能性があります。 VARBINARY は、可変長のバイトが含まれることを除いて、VARCHAR および VARCHAR2 に似ています。このデータ型は、画像ファイルなどのデジタル データを保存するためによく使用されます。

固定長データ型ではフィールドの隙間を埋めるためにスペースが使用されますが、可変長文字列ではこれが行われません。たとえば、可変長フィールドの長さが 10 と定義され、入力文字列の長さが 5 である場合、値の合計の長さは 5 となり、フィールド内のギャップを埋めるためにスペースは使用されません。 。

3. ラージ オブジェクト タイプ。

一部の可変長データ型では、現在一般的な BLOB や TEXT データ型など、VARCHAR フィールドに一般的に予約されている長さを超える、より長いデータを格納する必要があります。これらのデータ型は、大規模なデータ セットを保持するために特別に設計されています。 BLOB はバイナリ ラージ オブジェクトであり、そのデータは非常に長いバイナリ文字列です。 BLOB は、画像や MP3 などのバイナリ メディア ファイルをデータベースに保存するのに適しています。

TEXT データ型は、大きな VARCHAR フィールドと見なすことができる長い文字列型で、通常は大きな文字を保存するために使用されます。データベース内の設定 (ブログ サイトの HTML 入力など)。このタイプのデータをデータベースに保存すると、サイトの動的な更新が可能になります。

4. 数値型。

数値は、一般に NUMBER、INTERGER、REAL/DECIMAL などの特定の数値型として定義されたフィールドに格納されます。

Xiami は SQL 値の標準です:

(1).BIT(n);

(2).BIT VARYING(n);

(3).DECIMAL(p,s);

(4).INTEGER;

(5).SMALLINT;

(6).SIGINT;

(7).FLOAT(p,s);

(8).DOUBLE PRECISION(P,S);

(9).REAL(S);

P はフィールドの最大長を表します。 s は小数点以下の桁数を表します。

SQL 実装で一般的な数値型は NUMERIC で、ANSI 標準に準拠しています。値は 0、正の数、固定小数点数、浮動小数点数のいずれかになります。以下は NUMERIC の使用例です:

NUMERIC(s)、このコマンドは、フィールドが受け入れることができる最大値を 99 999 に制限します。この本の例に含まれるすべてのデータベース実装では、NUMERIC は DECIMAL 型で実装されます。

5. 10 進数タイプ。

10 進数タイプは値の全体の長さです。たとえば、数値定義 ZDECIMZAL(4,2) では、有効桁数は 4 であり、合計桁数が 4 であることを意味します。スケールは小数点以下の桁数であり、この形式では 2 です。前の例。実際の値の小数点以下の桁数が定義された桁数を超える場合、値は四捨五入されます。たとえば、DECIMAL(3,1) として定義されたフィールドに 34.33 が書き込まれると、その値は 34.3 に四捨五入されます。 。

値が次のように定義されている場合、その最大値は 99.99 です。

DECIMAL(4,2)

有効桁は 4 で、全体の長さを示します。値は 4 です。スケールは 2 です。これは、小数点以下 2 桁が保持されることを意味します。小数点自体は文字としてカウントされません。

DECIMAL(4,2) として定義されたフィールドでは、次のような入力配列が許可されます:

(1).12

(2).12.4

( 3).12.44

(4).12.449

最後の値 12.449 は、フィールドに保存されるときに 12.45 に丸められます。この定義では、12.45 から 12.499 までの値は 12.45 に丸められます。

6. 整数。

整数とは、小数点を含まない数値 (正の数と負の数を含む) です。

以下は有効な整数の一部です:

(1).1;

(2).0;

(3).-1;

(4).99;

(5).-99;

(6).199;

7. 浮動小数点数。

浮動小数点数は、有効桁数と位取りが可変の 10 進数値であり、有効桁数と位取りに制限はありません。データ型 REAL は単精度浮動小数点値を表し、DOUBLE PRECISION は倍精度浮動小数点値を表します。単精度浮動小数点値の有効桁数は 1 ~ 21 (両端の値を含む)、倍精度浮動小数点値の有効桁数は 22 ~ 53 (両端の値を含む) です。 FLOAT データ型の例を次に示します。

(1).FLOAT;

(2).FLOAT(15);

(3).FLOAT(50 ) ;

8. 日付と時刻のタイプ。

日付と時刻のデータ型は、明らかに日付と時刻の情報を保存するために使用されます。標準 SQL は DATETIME データ型をサポートします。これには次の型が含まれます:

(1).DATE;

(2).TIME;

(3).DATETIME;

(4).TIMESTAMP;

DATETIME データ型の要素には次が含まれます:

(1).YEAR;

(2).MONTH ;

(3).DAY;

(4).HOUR;

(5).SECOND;

ps: SECOND 要素は次のとおりです。さらに複数のポイントに分解されます。1 秒の範囲は 00.000 ~ 61.999 ですが、すべての SQL 実装がこの範囲をサポートしているわけではありません。余分な 1.999 秒は、うるう秒を実現するために使用されます。
各 SQL 実装には、日付と時刻を保存するためのカスタム データ型がある場合があります。前に紹介したデータ型と要素は、すべての SQL ベンダーが準拠する必要がある標準ですが、ほとんどの実装には、実際の格納方法とは異なる形式で日付値を保持する独自のデータ型があります。

日付データは通常、長さを指定しません。後で、一部の実装での日付情報の格納方法、変換関数を使用して日付と時刻を操作する方法、および実際の作業で日付と時刻を使用する方法を例を使用して示すなど、日付型について詳しく紹介します。

9. リテラル文字列。

リテラル文字列は、名前や電話番号など、ユーザーまたはプログラムによって明示的に指定された一連の文字です。リテラル文字列には、以前に紹介したデータ型と同じプロパティを持つデータが含まれていますが、文字列の値は既知です。通常、各列にはすべてのレコードのフィールドに異なる値が含まれるため、列自体の値は決定的ではありません。

実際には、フィールドをリテラル文字列データ型として指定する必要はなく、文字列を指定する必要があります。リテラル文字列の例は次のとおりです。

(1).'Hello';

(2).45000;

(3).'45000';

#(4).3.14;

(5).'1997 年 11 月 1 日';

文字列は一重引用符で囲まれており、値 45000 には一重引用符がありません。で囲まれ、2 番目の 45000 は二重引用符で囲まれます。一般に、文字列には一重引用符が必要ですが、数値文字列には必要ありません。

データ型から数値型への暗黙的な変換。このプロセス中に、データベースはどのデータ型を使用する必要があるかを自動的に決定します。したがって、データが一重引用符で囲まれていない場合、SQL プログラムはそれを数値型として識別します。したがって、データの形式には特別な注意を払う必要があります。そうしないと、保存結果に偏りが生じたり、エラーが報告されたりする可能性があります。後で、データベース クエリでリテラル文字列を使用する方法について説明します。

10.NULL データ型。

NULL 値は値がないことを意味します。 NULL 値は、テーブルの作成、クエリの検索条件、さらにはリテラル文字列など、SQL で広く使用されています。

NULL データ型を使用する場合、対応するフィールドがデータ入力を必要としないことを明確に示す必要があります。フィールドにデータを含める必要がある場合は、フィールドにデータを含めない限り、NOT NULL に設定することをお勧めします。

11.ブール値。

ブール値の値の範囲は、データ比較に使用される TRUE、FlASE、および NULL です。たとえば、クエリに条件を設定すると、各条件は TRUE、FLASE、または NULL として評価されます。クエリ内のすべての条件の値が TRUE の場合はデータが返されますが、特定の条件の値が FLASE または NULL の場合はデータは返されません。たとえば、次の例:

WHERE NAME = 'SMITH'

これはクエリ内の条件である可能性があり、ターゲット テーブル内のデータの各行はこの条件に基づいて評価されます。テーブル内の行の NAME フィールド値が SMITH の場合、条件の値は TRUE となり、対応するレコードが返されます。

ほとんどのデータベース実装には厳密な BOOLEAN 型はなく、代わりに別の実装メソッドが使用されます。 MySql は BOOLEAN 型を使用しますが、本質的には既存の TINYINT 型と同じです。 Oracle ではユーザーがブール値ではなく CHAR(1) 値を使用することを好みますが、SQL Server では代わりに BIT が使用されます。

12. カスタムタイプ。

カスタム タイプはユーザー定義タイプであり、ユーザーはデータ ストレージのニーズを満たすために既存のデータ タイプに基づいて独自のデータ タイプをカスタマイズできます。カスタム タイプはデータ ストレージの可能性を大幅に拡張し、データベース プログラムの開発プロセスにおいて開発者に大きな柔軟性を与えます。ステートメント CREATE TYPE は、カスタム タイプを作成するために使用されます。

たとえば、MySql と Oracle では、次のような型を作成できます:

CREATE TYPE PERSON ASOBJECT

(NAME VARCHER (30),

SSN VARCHAR(9);

)

次に、次のようにカスタム タイプを参照できます:

CREATE TABLE EMP_PAY

(EMPLOYEE PERSON,

SALARY DECIMAL(10,2),

HIRE_DATE DATE);

テーブル EMP_PAY の最初の列の EMPLOYEE のタイプは PERSON です。これはまさにが手前に表示されます。 カスタムタイプが作成されました。

13. ドメイン。

ドメインは、使用できる有効なデータ型のコレクションです。ドメインはデータに関連付けられているため、特定のデータのみが受け入れられます。ドメインの作成後、ドメインに制約を追加できます。制約はデータ型と連携して、フィールドが受け入れることができるデータをさらに制限します。フィールドはカスタム タイプと同様に使用されます。

次のようにドメインを作成できます:

CREATE DOMAIN MONEY_D AS NUMBER(0,2);

次のようにドメインに制約を追加します:

ALTER DOMAIN MONEy_D

ADD CONSTRAINT MONEY_CON

CHECK(VALUE>5);

次に、次のようにドメインを参照します:

CREATE TABLE EMP_PAY

(EMP_ID NUMBER(9),

EMP_NAME VARCHER2(30),

PAY_RATE MONEY_D);

3. 概要

SQL は次のとおりです。さまざまなデータ型は、他のプログラミング言語を使用したことがある人にとっては馴染みのないものではありません。データ型を使用すると、単一文字、小数、日付、時刻など、さまざまな種類のデータをデータベースに保存できます。 C などの第 3 世代プログラミング言語を使用している場合でも、リレーショナル データベースを使用して SQL コーディングを実装している場合でも、データ型の概念は同じです。もちろん、データ型の名前は実装ごとに異なりますが、その動作方法は基本的に同じです。さらに、ANSI との互換性があるとみなされるために、ANSI 標準で指定されているすべてのデータ型に対してリレーショナル データベース管理システムを実装する必要はないため、使用されているデータ型を理解するには、特定のドキュメントを確認することをお勧めします。

データ型、長さ、スケール、精度を考慮するときは、短期と長期の両方で慎重に計画してください。さらに、会社のポリシーやユーザーがデータにアクセスする方法も考慮すべき要素です。開発者はデータの性質を理解する必要があります。また、適切なデータ型が使用されるように、データベース内でデータがどのように相互に関連付けられるかについても説明します。


#この記事では、SQL のデータ型についてのみ説明します。純粋なテキスト説明!この記事は「SQL Beginner's Classic」からの抜粋です。次の記事では、SQL の始め方 (3) データベース オブジェクトの管理について説明します。 !



以上がMySQL のデータ型の概念を理解するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。