SQL Serverはどのデータ型をサポートしていますか?

SQL Serverはどのデータ型をサポートしていますか?

SQL Serverと互換性のあるデータには多くの種類があり、互換性のないデータ型の問題を回避するには、それらが何であるかを理解することが重要です。 互換性のあるデータ型を理解することは、データ型の優先順位を理解するための基本でもあります。これにより、XNUMXつの異なるタイプのオブジェクトを操作するときにどのタイプのデータが生成されるかが決まります。 

このガイドでは、SQL Serverがサポートするすべてのデータ型と、Transact-SQLまたはMicrosoft.NETFrameworkを使用してカスタムデータ型を定義するプロセスについて説明します。

内容

SQL Serverとは何ですか? 

SQL Serverがサポートする多くのデータ型に飛び込む前に、SQLServerとは何かについて簡単に要約します。 Microsoftは、リレーショナルデータベース管理システム(RDBMS)として機能するSQLServerを開発しました。 SQL Serverは、あらゆる種類のリレーショナルデータベースを使用するための標準言語であるSQLを利用します。 

MicrosoftのSQLServerはWindows環境専用ではなくなり、Linuxで利用できるようになりました。これは、SQLServerの使用に関心のある人にとっては朗報です。 さらに、Azureと呼ばれるMicrosoftのクラウドプラットフォームはSQLServerをサポートしています。 したがって、それをホストする場所が必要な場合は、ネイティブソリューションよりも優れた場所はありません。

Microsoft それを売り込む 「SQLServerを最もよく知っているクラウド」として、Azure SQL Serverは、サーバーとクラウドインフラストラクチャの両方が同じ会社によって開発および保守されているため、シームレスな統合、シンプルさ、および信頼性の恩恵を受けています。 

ただし、SQL Serverをホストする場所に関係なく、SQLServerはわずかに異なるSQL言語を使用することに注意することが重要です。 MicrosoftはTransact-SQL(T-SQL)を開発しました。これは、標準SQLに非常に似ていますが、SQLServerのプログラミングに必要な独自の概念のセットを定義しています。 

SQLに精通している場合は、Transact-SQLの使用は難しくなく、SQLServerを簡単に利用できます。 ただし、SQL Serverを効果的に使用するためのもうXNUMXつの重要な側面は、SQLServerがサポートするすべてのデータ型を理解することです。 

データ型が重要なのはなぜですか? 

間違ったデータ型は、データベースのパフォーマンス、クエリの最適化、およびデータの切り捨てに関する問題を引き起こす可能性があります。 これらの問題は、速度とパフォーマンスを追跡する問題であるため、開発チームによって最初に認識されることがよくあります。 それでも、問題は組織全体に波及し、データの整合性の問題やその他の深刻な問題を引き起こす可能性があります。 

SQL Serverを初めて使用する場合は、膨大な数のデータ型が圧倒される可能性があります。 ただし、それらはきちんと整理され、十分に文書化されているため、保存する予定のデータの種類を理解している限り、必要なものを簡単に見つけることができます。 もちろん、参照しながら参照することもできますが、SQL Serverのデータ型に関する知識を習得することは、長期的な効率と最適化にとって最も重要です。 飛び込むと、いくつかの重複があることがわかります。小数点より浮動小数点を選択するか、固定より可変長を選択するかを知ることは、すべてのオプションを完全に理解している場合にのみ可能です。

さまざまなデータカテゴリは何ですか? 

以下は、SQL Server内のデータの各カテゴリと、それぞれに適合するすべてのデータ型を示しています。 

正確な数値

正確な数値データ型を使用する場合は、ユースケースに適した最小のデータ型を選択できるように、オプションを理解することが重要です。 また、保存している数字の種類に対応するデータ型を選択する必要があります。たとえば、お金や通貨の小額などです。 

  • タイニーント:0から255までの数値を格納できる最小の整数ストレージタイプ。
  • 小さい整数:サイズが2倍、最大XNUMXバイトの整数ストレージタイプ。
  • int:最大4バイトのストレージを持つ整数ストレージタイプ。 
  • bigint:最大8バイトのデータを保持できる最大の整数ストレージタイプ。 
  • XNUMX進数と数値:これらの同義語は同じデータ型を指し、固定のスケールと精度が特徴です。 
  • ビット:このデータ型の値は常に1、0、またはNULLです。 true / falseデータをビットに変換できます。1はTrueに等しく、0はFalseに等しくなります。 
  • 小額:このデータ型は金額を表し、小数点以下XNUMX桁まで使用できます。
  • お金:これは別の金銭データ型ですが、小数点以下XNUMX桁まで使用できます。 

Unicode文字列

Unicodeに慣れていない場合は、Unicodeはすべての文字に一意の番号を割り当て、書かれたテキストを一貫してエンコードおよび表現できるようにする普遍的な標準です。 たとえば、Unicodeの「hey」は次のように分類されます:U + 0048(「H」)、U + 0065(「E」)、およびU + 0059(「Y」)。

SQL Serverは、これらの文字列を使用して、Unicode文字データの全範囲をサポートします。 それらは固定または可変にすることができます。 

  • ンチャー:サイズが固定されています。列のデータサイズが一貫している場合に使用することをお勧めします。 
  • ンバーチャー:サイズは可変です。列のデータサイズが大幅に異なる場合に使用することをお勧めします。 
  • ntext:Unicodeの可変長データ型として設計されたSQLServerの将来のバージョンで削除される予定です。 代わりに、nvarchar(max)をお勧めします。

おおよその数値

数値データを正確に表現できない場合は、「浮動小数点」数値データと呼ばれ、概数のデータ型を使用して格納します。 浮動小数点データ型では、数値は科学的記数法を使用して記述されるため、825,000は8.5x10として格納されます。5.

浮動小数点数は、信じられないほど大きくても小さくてもかまいません。 浮動小数点データ型と小数データ型はどちらも、小数を含む数値を格納できます。違いは、浮動小数点数は必要な記憶域が少なくて済み、小数はより正確であるということです。 SQL Serverは、floatデータ型と実数データ型のXNUMX種類の近似数値をサポートしています。 

  • フロート:倍精度浮動小数点数。8バイトまたは64ビットに相当します。

リアル:単精度浮動小数点数。4バイトまたは32ビットに相当します。

文字列

文字列にはわかりやすい名前が付いています。これらのデータ型は、文字を格納するために使用されます。 サイズは固定または可変です。 

  • チャリオット:静的メモリ位置を使用する固定サイズの文字列データ。 文字列の長さがわかっていて、列内のすべての文字列が同じになる場合に最適です
  • varchar:動的メモリ位置を使用する可変サイズの文字列データ。 文字列の長さがわからない場合や、列の文字列の長さが大幅に異なる場合に使用します。
  • 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. :非Unicodeデータの可変長データ型として設計されたSQLServerの将来のバージョンで削除される予定です。 マイクロソフトでは、varchar(max)に置き換えることをお勧めします。

バイナリ文字列

バイナリデータ型は、データの固定文字列または変数文字列のいずれかをサポートします。 文字列とバイナリ文字列の違いは、それらに含まれるデータです。文字列は通常、テキストを格納しますが、数字や記号を格納することもできます。 バイナリ文字列は通常、画像などの非従来型のデータをバイト形式で格納します。 

  • バイナリ:固定長。列のデータサイズが一貫している場合に使用するのに理想的です。 
  • バイナリ:列のデータサイズが大幅に異なる場合は、可変長が理想的です。
  • 画像:可変長のバイナリデータを格納するように設計された、SQLServerの将来のバージョンで削除される予定です。 マイクロソフトでは、varbinary(max)に置き換えることをお勧めします。

日付と時刻

これらのデータ型は、日付と時刻を格納するために明示的に設計されています。 タイムゾーンの認識をサポートするものとサポートしないものがあります。 日付と時刻を処理するときは、エントリの形式の一貫性を保つデータ型を選択し、必要な詳細レベル(時刻、タイムゾーンなど)をサポートするのに十分な柔軟性のあるデータ型を選択することが重要です。 

  • date:日付を定義します。 デフォルトのフォーマットはYYYY-MM-DDですが、DMY、DYM、YMDなど20以上の異なる方法でフォーマットできます。 
  • 日時オフセット:日付と時刻を定義します。 このデータ型はタイムゾーンに対応しています。 
  • datetime2:オプションの小数秒精度による上記のデータ型の拡張。 
  • 日付時刻:datetime2に似ていますが、秒の小数部の精度が低くなります。
  • 小さい:日付と時刻を定義しますが、秒は常にゼロです。
  • 時間:時刻を定義しますが、タイムゾーンを認識しません。 

その他のデータ型

SQL Serverには追加のデータ型がありますが、これらは上記のカテゴリのいずれにも完全には当てはまりません。 そのため、これらのデータ型は単に「その他」の下に存在します。 その他のデータ型には、次のものがあります。 

  • ローバージョン:テーブル内の行のバージョンスタンプに使用されます。 日付または時刻を保持しない単純な増分番号。 
  • 階層ID:階層内の位置を表すために使用される可変長システムデータ型。 
  • 一意の識別子:最大16バイトを格納できるグローバル一意識別子(GUID)。
  • sql_variant:SQLでサポートされているさまざまなデータ型を格納します。 sql_variantの最も重要な部分は、変数であるということです。 たとえば、あるsql_variant列には、ある行にintが含まれ、別の行にバイナリ値が含まれる場合があります。 SUMやPRODUCTなどの算術演算を適用するには、最初にその演算で機能するものに型をキャストする必要があります。
  • XML:XMLデータを格納します。 
  • 空間ジオメトリタイプ:フラットな座標系でデータを表します。
  • 空間地理タイプ:丸い地球の座標系でデータを表します。 
  • テーブル:後で処理するために結果を格納するために使用される特別なデータ型。

カスタムデータ型の定義

上記のカテゴリのいずれにも固有ではないカスタムデータ型がある場合でも、事前に設定しておけば、SQLServerに取り込むことができます。 Transact-SQLまたはMicrosoft.NETFrameworkのいずれかを使用して、開発者はプロジェクトのカスタムデータ型を定義できます。

カスタムデータ型を作成する際、SQLServerのインターフェイスにはTransact-SQLの生成に役立つツールがいくつかあります。 指定する必要のあるフィールドは、スキーマ、名前、基になるデータ型、長さ、nullの許可、バイト単位のサイズ、デフォルト値のオプションフィールド、およびデータ型が従う必要のあるルールです。 たとえば、電子メールフィールドはvarcharの基になるタイプを使用する可能性が高く、許可されていない文字のリストとともに@と。を含める必要があります。 次に、ニーズに合った最大長を設定すると、バイト数がインターフェイスに自動的に入力されます。
必要に応じて、Microsoftはより多くの情報を提供します 独自のデータ型を作成する.

適切なデータ型の選択

SQL Serverを使用する場合は、使用するデータに対して正しいデータ型を選択することが重要です。 そうしないと、データ型を使用して意図しない日付と時刻を格納する場合のように、データ品質の問題やデータの損失につながる可能性があります。 間違ったデータ型は、クエリとパフォーマンスにも悪影響を与える可能性があります。 

たとえば、整数を格納する必要がある場合は、正確な数値データ型を選択するだけで間違いはないと思うかもしれません。 ただし、bigintタイプを不必要に使用して、年齢などの小さくて単純な数値を格納すると、リソースが無駄になります。 

ほとんどの場合、数値データを操作するときはいつでも、smallint、integer、bigint、またはdecimalから選択するように指示されます。 非常に大きな数を扱っている場合は、decfloatまたはfloatを提案する可能性があります。 ただし、特定のユースケースを扱う場合、このアドバイスは単純すぎて一般的すぎます。 

たとえば、XNUMX桁の値と先行ゼロを必要とする在庫システムを使用している場合があります。 または、社会保障番号を保存している可能性があります。社会保障番号は、XXX-XX-XXXXのようにハイフンで適切にフォーマットする必要があります。 ご想像のとおり、SQL Serverには多くの複雑なアプリケーションがあり、一般的なガイドラインでは適切なデータ型を選択するのに十分ではありません。 そのため、使用可能なすべてのデータ型を知ることは、保存する必要のある情報に最適なデータ型を選択するための最初のステップです。 幸い、すべてのデータ型とその情報範囲を覚えておく必要はありません。 マイクロソフトは 優れたドキュメント これにより、将来さらに詳細な情報が必要になった場合に、ここで説明するすべてのデータ型を確認できます。