sql >> データベース >  >> RDS >> Database

T-SQLとは何ですか?

    Transact-SQLは、T-SQLまたはTSQLと略されることが多く、MicrosoftおよびSybase独自のSQL拡張機能です。 Transact-SQLはSQL標準を拡張して、SQL標準に含まれていない追加機能を追加します。

    簡単なT-SQLステートメントの例を次に示します。

    CREATE DATABASE Movies;

    これは、T-SQLの例で得られるのと同じくらい簡単です。これにより、Moviesという新しいデータベースが作成されます 。

    ただし、T-SQLには、データベースファイルの配置場所、それらのファイルのサイズ、最大サイズなど、このステートメントに含める他のオプションが用意されています。

    T-SQLの機能

    T-SQLの機能には次のものがあります。

    • 手続き型プログラミング
    • ローカル変数
    • 文字列処理、日付処理、数学などのさまざまなサポート機能
    • DELETEへの変更 およびUPDATE ステートメント。特に、FROM句を追加して、結合を含めることができます。
    • T-SQLにはBULK INSERTがあります データファイルをデータベーステーブルにインポートしたり、ユーザー指定の形式で表示したりできるステートメント。

    上記の拡張機能の主な利点の1つは、T-SQLとSQLを使用する場合のプログラマビリティが大幅に向上することです。たとえば、ストアドプロシージャを使用すると、プログラミングロジックをデータベースに組み込むことができます。 1つ以上のパラメーターをストアード・プロシージャーに渡すことができ、ストアード・プロシージャーは、パラメーターの値に応じて変化する出力を返します。

    T-SQLには、多数の組み込み関数が含まれているだけでなく、ユーザー定義関数もサポートされています。

    組み込み関数の例

    もう1つの基本的な例を次に示します。今回は、T-SQLの組み込み関数の1つを使用しています。

    SELECT GETDATE();

    結果:

    2018-05-06 23:30:37.003

    この場合、T-SQLのGETDATE()を使用します 現在の日付と時刻を返す関数。これは、SELECTと一緒に使用されます ステートメント。これは、データを返すための一般的なSQLステートメントです。

    その関数を別の関数の引数として使用することもできます。次に例を示します:

    SELECT FORMAT(GETDATE(), 'MMM');

    結果:

    May

    この場合、T-SQL FORMAT()を使用します 日付の月の部分だけを抽出し、特定の形式で表示する関数。その他の日付/時刻の例については、SQLServerで日付と時刻をフォーマットする方法を参照してください。

    T-SQLの歴史

    Transact-SQL(およびSQL Server)は最も一般的にMicrosoftのものとして知られていますが、実際には1987年に開始されたMicrosoftとSybaseのパートナーシップの結果です。このパートナーシップは1994年に解消されました。

    その後、T-SQLは両社がリリースしたデータベース製品で引き続きサポートされていましたが、各企業は独自の方向でデータベース製品を開発しました。したがって、SybaseT-SQLとMicrosoftT-SQLにはいくつかの違いがあります。

    T-SQLおよびGUIツール

    Transact-SQLはSQLServerの中心です。 SQL Serverのほとんどの操作は、T-SQLを使用して実行されます。これは、GUIツール(SSMSやDBeaverなど)を使用していて、実際にプログラミングを行っていない場合でも当てはまります。アプリケーションを使用してSQLServerと対話するときはいつでも、アプリケーションはバックグラウンドでT-SQLを使用して、指定されたタスクを実行します。

    ただし、Transact-SQLをサポートするデータベース管理システムはSQLServerだけではありません。 Microsoft Azure SQL Databaseは、T-SQLもサポートしています。アプリケーションが使用するほとんどのT-SQL機能は、MicrosoftSQLServerとAzureSQLDatabaseの両方で完全にサポートされています(ただし、いくつかの例外があります)。

    GOコマンドについて

    T-SQLを使用したことがある人なら、おそらくGOに精通しているでしょう。 指図。このキーワードは、多くの場合、ステートメントのバッチの最後に配置されます。たとえば、上記の最初の例は次のように書くこともできます:

    CREATE DATABASE Movies;
    GO
    

    ただし、GO コマンドは実際にはTransact-SQLの一部ではありません。実際、GO コマンドは、Transact-SQLステートメントと同じ行を占めることさえできません。

    GO sqlcmdによって認識されるコマンドの1つです およびosql ユーティリティ、およびバッチとスクリプトの読みやすさと実行を容易にするSQL ServerManagementStudioコードエディタ。 GO コマンドは、Transact-SQLステートメントのバッチの終了をSQLServerユーティリティに通知します。

    SQLServerユーティリティはGOを解釈します Transact-SQLステートメントの現在のバッチをSQLServerのインスタンスに送信する必要があることを示すシグナルとして。ステートメントの現在のバッチは、最後のGO以降に入力されたすべてのステートメントで構成されます 、またはこれが最初のGOの場合は、アドホックセッションまたはスクリプトの開始以降 。

    その他の独自のSQL拡張機能

    Transact-SQLは、SQL標準の唯一の拡張機能ではありません。さまざまなデータベースシステムには独自の拡張機能があります。たとえば、OracleはPL / SQLと呼ばれる独自の手続き型言語を使用し、PostgreSQLはPL/pgSQLと呼ばれる手続き型言語を使用します。

    プロプライエタリSQL拡張機能には利点(拡張機能など)がありますが、欠点もあります。大きな欠点の1つは、あるシステムから別のシステムにデータベースを移植する必要がある場合に、問題が発生する可能性があることです。たとえば、組織がSQL Serverの代わりにOracleを使用することを突然決定した場合、すべてのSQL Serverコードを調べて、Oracle用に書き直す必要がある場合があります。これには、両方のシステムの構文を理解する必要もあります。


    1. OracleとSQLServerのスペースの処理の違い

    2. テンポラルテーブルを使用したデータ変更監査の実行

    3. Asind()がPostgreSQLでどのように機能するか

    4. PgbackrestRestoreおよびRestoreDelta