SQL Server データ型と例

⚡ スマートサマリー

SQL Serverのデータ型は、列や変数に格納できる値の種類を定義します。例えば、整数、小数、文字、日付、バイナリなどがあります。適切な型を選択することで、有効なデータが保持され、メモリを効率的に使用できます。

  • 🔢 正確な数値: bigint、int、smallint、tinyint、bit、decimal、numeric、money、smallmoneyは、正確な整数と固定小数点数を格納します。
  • 解釈️ おおよその数値: floatとrealは、科学計算で使用される近似浮動小数点値を格納します。
  • 📅 日時: datetime、smalldatetime、date、time、datetimeoffset、およびdatetime2は、時間的な値を格納します。
  • 🔤 文字とUnicode: char、varchar、text はテキストを保持し、nchar、nvarchar、ntext は Unicode テキストを保持します。
  • 飲料衣<XNUMXxXNUMX><XNUMXxBC><XNUMXxBC> バイナリとその他: binary、varbinary、およびimageはバイトデータを格納し、cursor、xml、およびuniqueidentifierは特殊なニーズに対応します。
  • 🧠 選択 Wisely: 各列を最小の適切な型に合わせることで、ストレージ効率とデータ整合性が向上します。

SQL Server データ型と例

データ型とは何ですか?

データ型 MS SQL Server は、列や変数が格納できるデータの型として定義されます。これは、整数、文字、文字列など、オブジェクトが保持するデータの種類です。 テーブル or 変数名前を指定するだけでなく、保存するデータの種類も設定します。

MS SQLデータ型の使用方法

列や変数に格納できるデータの種類を事前に定義する必要があります。データの種類を定めることで、ユーザーが予期しないデータや無効なデータを入力することを防ぐことができます。

変数や列に適切なデータ型を割り当てることで、メモリを効率的に利用できます。これにより、その列のデータに必要な量のシステムメモリのみが割り当てられます。

MS SQL は、幅広い基本データ型を提供します。 SQL 日付、バイナリ、画像など、ユーザーのニーズに合わせて。

DataType を使用する理由

ウェブサイトのアプリケーション用のシンプルな登録ページを例に考えてみましょう。入力欄は、名、姓、連絡先電話番号の3つです。

ここで注目すべきは、実際の状況では次の点である。

  • 「名/姓」は常にアルファベット順になります。
  • 「連絡先」は常に数字で表される。

以下の例は、登録フォームにおけるこれらの項目を示しています。

サインアップフォームの例として、名と姓を文字で、連絡先を整数で定義します。

上記の図から判断すると、「名/姓」を文字、「連絡先」を整数として定義するのが妥当である。

どのようなアプリケーションにおいても、すべてのフィールドには、数値、英字、日付など、何らかの種類のデータが含まれていることは明らかです。

また、データ型によって必要なメモリ量が異なる点にも注意してください。そのため、メモリを効率的に使用するには、列や変数を格納するデータ型を事前に定義しておく方が賢明です。

MS SQL Serverで利用可能なデータ型

以下は、MS SQL Server のデータ型の一覧です。MS SQL Server は、以下のカテゴリのデータ型をサポートしています。

  • 正確な数値
  • おおよその数値
  • 日時
  • 文字列
  • Unicode文字列
  • バイナリ文字列
  • 他のデータ型

以下の図は、MS SQL Serverのデータ型をこれらのカテゴリに分類したものです。

図グループping MS SQL Serverのデータ型を7つのカテゴリに分類

SQL の正確な数値データ型

SQL ServerのExact numericには9つのサブデータ型があります。それぞれが、定義された範囲内の整数または固定小数点数を格納します。

Data Type 詳細説明 下限 上限 メモリ
bigint 指定された範囲内の整数を格納します −2^63 (−9,223,372,036,854,775,808) 2^63−1 (9,223,372,036,854,775,807) 8バイト
int型 指定された範囲内の整数を格納します −2^31 (−2,147,483,648) 2^31−1 (2,147,483,647) 4バイト
小さい整数 指定された範囲内の整数を格納します −2^15 (−32,768) 2^15−1 (32,767) 2バイト
タイニーント 指定された範囲内の整数を格納します 0 255 1バイト
ビット 0、1、または NULL 値を取ることができます。 0 1 1バイト/8ビット列
10進数 スケールと固定精度の数値に使用されます −10^38+1 10^38−1 5〜17バイト
数値の スケールと固定精度の数値に使用されます −10^38+1 10^38−1 5〜17バイト
お金 金銭データに使用される -922,337,203,685,477.5808 +922,337,203,685,477.5807 8バイト
小額 金銭データに使用される -214,478.3648 +214,478.3647 4バイト

SQL Serverにおける正確な数値データ型とその例:

クエリ:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

出力:

2

構文:

Decimal (P,S)

ここで、Pは精度、Sはスケールを表す。

クエリ:

DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31
PRINT @Datatype_Decimal

出力:

2.31

SQL の近似数値データ型

SQLの近似数値カテゴリには、浮動小数点数と実数値が含まれます。これらのデータ型は主に科学計算で使用されます。

Data Type 詳細説明 下限 上限 メモリ 精度
浮動小数点(n) 浮動小数点精度の数値に使用されます −1.79E+308 1.79 + 308 nの値に依存します 15桁
リアル 浮動小数点精度の数値に使用されます −3.40E+38 3.40 + 38 4バイト 7桁

float型は以下の構文を使用します。

Syntax:  FLOAT [(n)]

ここで、nは、科学的記数法で表された浮動小数点数の仮数部を格納するために使用されるビット数です。デフォルトでは、nの値は53です。

float のようなデータ型を定義する場合、n は 1 から 53 の間の値である必要があります。SQL Server では、n は 2 つの値のいずれかとして扱われます。1 <= n <= 24 の場合、n は 24 として扱われます。25 <= n <= 53 の場合、n は 53 として扱われます。

クエリの例:

DECLARE @Datatype_Float FLOAT(24) = 22.1234
PRINT @Datatype_Float

出力:

22.1234

SQL の日付と時刻のデータ型

このカテゴリには、日付と時刻のデータが格納されます。

Data Type 詳細説明 ストレージサイズ 精度 低い範囲 アッパーレンジ
日付時刻 1 年 1753 月 31 日から 9999 年 3.33 月 XNUMX 日までの日付と時刻を指定するために使用されます。精度は XNUMX ミリ秒です。 8バイト .000、.003、.007 の増分に四捨五入 1753-01-01 9999-12-31
小さい 1900年1月1日から2079年6月6日までの日付と時刻を指定するために使用されます。精度は1分です。 4バイト、固定 1 minute 1900-01-01 2079-06-06
date 0001年1月1日から9999年12月31日までの日付のみを保存するために使用されます。 3バイト、固定 1日 0001-01-01 9999-12-31
時間 100ナノ秒の精度で時間値のみを保存するために使用されます。 5バイト 100ナノ秒 00:00:00.0000000 23:59:59.9999999
日時オフセット datetimeに似ているが、タイムゾーンオフセットがある 10バイト 100ナノ秒 0001-01-01 9999-12-31
日時2 1年0001月31日から9999年XNUMX月XNUMX日までの日時を指定する場合に使用します。 6バイト 100ナノ秒 0001-01-01 9999-12-31

クエリの例:

DECLARE @Datatype_Date DATE = '2030-01-01'
PRINT @Datatype_Date

出力:

「2030-01-01」

SQL の文字列データ型

このカテゴリは文字型に関するものです。固定長および可変長の文字データを定義できます。データ型は4種類あります。以下に、文字列データ型とその例を示します。

Data Type 詳細説明 下限 上限 メモリ
チャリオット 固定幅の文字列です。 最大 8,000 文字を保存します。 0文字 8000文字 n バイト
varchar これは可変幅の文字列です。 0文字 8000文字 nバイト+2バイト
varchar (最大) 幅が可変の文字列です。 最大 1,073,741,824 文字を保存します。 0文字 2^31 文字 nバイト+2バイト
클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. これは可変長の文字列です。最大2GBのテキストデータを格納できます。 0文字 2,147,483,647文字 nバイト+4バイト

クエリの例:

DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'
PRINT @Datatype_Char

出力:

これは文字データ型です

SQL の Unicode 文字列データ型

このカテゴリには、UTF-16文字エンコーディングを使用するUnicode文字の全範囲が格納されます。

Data Type 詳細説明 下限 上限 メモリ
ンチャー これは固定幅のUnicode文字列です。 0文字 4000文字 nバイトの2倍
ンバーチャー これは可変長のUnicode文字列です。 0文字 4000文字 2 × n バイト + 2 バイト
ntext これは可変長のUnicode文字列です。 0文字 1,073,741,823文字 文字列の長さの 2 倍

クエリの例:

DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'
PRINT @Datatype_nChar

出力:

これは nCharacter データ型です

SQL のバイナリ文字列データ型

このカテゴリには、固定長および可変長のバイナリ文字列が含まれます。

Data Type 詳細説明 下限 上限 メモリ
バイナリ これは固定幅のバイナリ文字列です。最大8,000バイトを格納できます。 0バイト 8000バイト n バイト
バイナリ これは可変長のバイナリ文字列です。最大8,000バイトを格納できます。 0バイト 8000バイト 実際に入力されたデータの長さ + 2 バイト
画像 これは可変長のバイナリ文字列です。最大2GBのデータを格納できます。 0バイト 2,147,483,647バイト -

クエリの例:

DECLARE @Datatype_Binary BINARY(2) = 12;
PRINT @Datatype_Binary

出力:

0x000C

SQL のその他のデータ型

以下は、その他のSQL Serverデータ型とその説明です。

Data Type 詳細説明
カーソル その出力は、sp_cursor_listとsp_describe_cursorの列です。カーソル変数の名前を返します。
行バージョン テーブルの各行にバージョン番号を付与します。
階層化 このデータ型は、階層構造における位置を表します。
一意の識別子 GUIDを格納します。多くの場合、文字式から変換されます。
SQL_variant SQL Serverでサポートされているデータ型の値を格納します。
XML XML データを列に格納します。
空間ジオメトリのタイプ データを平面座標系で表します。
空間地理タイプ データは地球座標系で表されます。
テーブル 後で処理するために結果セットを保存します。

興味深い事実!

  • CHARデータ型は、固定幅のため長さの記録が不要になるため、データの取得時にVARCHARデータ型よりも高速です。ping.

よくあるご質問

VARCHAR型は非Unicode文字をそれぞれ1バイトで格納しますが、NVARCHAR型はUnicode文字をそれぞれ2バイトで格納します。列に複数の言語や単一のコードページ外の記号を格納する必要がある場合はNVARCHAR型を選択してください。それ以外の場合はVARCHAR型の方がストレージ容量が少なくて済みます。

金額や測定値など、値の正確さが求められる場合は、固定精度を格納するDECIMAL(またはNUMERIC)を使用してください。小さな丸め誤差が許容され、正確さよりも広い範囲が重要な近似的な科学的値にはFLOATを使用してください。

はい。SQL Serverでは、DECIMALとNUMERICは機能的に同じです。どちらも精度とスケールを指定でき、正確な固定小数点数を格納できるため、これらのキーワードは互換性があります。チームの可読性を考慮して、どちらの名称を使用しても構いません。

CHARは固定長型で、短い値にはスペースが挿入されるため、すべての値は宣言された幅を使用します。VARCHARは可変長型で、入力された文字数に2バイトを加えた値のみを格納します。統一コードにはCHARを、長さが変化するテキストにはVARCHARを使用してください。

Yes. 他の机 table_name ALTER COLUMN column_name new_type コマンドは、列のデータ型を変更します。この変更は、既存の値が新しい型に正しく変換できる場合にのみ成功します。そうでない場合は失敗するため、変換テストを行い、事前にデータをバックアップしてください。

通常のVARCHAR(n)は最大8,000文字まで格納できます。VARCHAR(max)は最大約2GB(2^31-1バイト)まで格納でき、8,000文字を超えるような大きなテキストを扱うために設計されています。VARCHAR(max)は、実際にそのくらいの大きな値になる可能性がある場合にのみ使用してください。

Yes. GitHubコパイロット 自然言語によるプロンプトから列のデータ型を提案し、DECLARE文とCREATE TABLE文を生成できます。提案内容を本番環境に適用する前に、必ずデータの精度、スケール、長さ、Unicode要件を確認してください。

AIと機械学習ツールは、サンプルデータを分析して適切な型、精度、長さを推奨し、ストレージを無駄にする過大な列を特定し、移行中の不一致を検出します。開発者が最終的な選択を確認する間、スキーマ設計を迅速化します。