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

T-SQLとSQL

    SQLとT-SQL(Transact-SQL)の違いの概要は次のとおりです。 違いはそれほど多くありません そのようなものですが、T-SQLの説明と、SQLとの関係でT-SQLがどこに位置するかについての説明です。

    データベースの開発または管理を行ったことがある場合は、おそらくSQLに精通しているでしょう。構造化照会言語の略であるSQLは、データベースを操作するための標準の照会言語です。 MySQL、Oracle、SQL Server、PostgreSQLなどの主要なリレーショナルデータベース管理システムのほとんどは、何らかの形でSQLをサポートしています。

    ただし、SQL標準は明確な仕様を提供しますが、データベースベンダーが独自の拡張機能を追加することもできます。これにより、ベンダーは、競合他社が提供していない可能性のある追加の機能を顧客に提供できます。

    これがT-SQLの出番です。

    Transact-SQLとは何ですか?

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

    Transact-SQL(およびSQL Server)はMicrosoftのものとして最も一般的に知られていますが、実際には1987年に開始されたMicrosoftとSybaseのパートナーシップの結果です。このパートナーシップは1994年に解消されました。その後、T-SQLはただし、両社がリリースしたデータベース製品によってサポートされていますが、各企業は独自の方向でデータベース製品を開発しました。したがって、SybaseT-SQLとMicrosoftT-SQLにはいくつかの違いがあります。

    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の両方で完全にサポートされています(ただし、いくつかの例外があります)。

    T-SQLの機能

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

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

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

    GOコマンドについて

    T-SQLを使用したことがある人なら、おそらく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. SQLクエリを使用したコンマ区切り値

    2. MySQLの日時列から年を取得する方法

    3. アナリティクス、ビッグデータ、データマイニング、Hadoop、NoSQL、データサイエンスのトップFacebookグループ

    4. Psycopg2は、小文字で始まるテーブル名を好みません