SQL
 Computer >> コンピューター >  >> プログラミング >> SQL

構造化照会言語(SQL)


SQL(Structured Query Language)は、リレーショナルデータベースの管理や、データに対するさまざまな操作の実行に使用されるように標準化された特殊なプログラミング言語です。 SQLには、データベーステーブルとインデックス構造の変更を含むさまざまな用途があります。データの行の追加、更新、および削除。トランザクション処理および分析アプリケーションのために、データベースから情報のさまざまなサブセットを取得します。コマンドの形式で動作し、select、add、insert、update、delete、create、alter、truncateなどのSQLステートメントとして一般に知られている特殊なクエリと操作があります。

SQLは、1970年代後半から1980年代初頭に登場した後、リレーショナルデータベースの標準プログラミング言語になりました。一般にSQLデータベースとして知られるリレーショナルシステムは、行と列の形式でデータを含むテーブルのセットで構成されます。テーブルの各列は、顧客名や住所などのデータのカテゴリに対応し、各行には次のデータ値が含まれます。交差する列。

SQLは、リレーショナルデータベース管理システム(RDBMS)に保持されているデータのプログラミングと設計に使用されるドメイン固有言語でもあります。これは、データのさまざまなエンティティ/変数間に関係がある構造化データの処理に特に役立ちます。

SQLは元々、関係代数とタプル関係計算に基づいています。SQLは、データクエリ言語(DQL)、データ定義言語(DDL)、データ制御言語(DCL)、およびデータとして一般に知られている多くの種類のステートメントで構成されています。操作言語(DML)。 SQLの範囲には、データクエリ、データ操作(挿入、更新、削除)、データ定義(スキーマの作成と変更)、およびデータアクセス制御が含まれます。また、SQLには手続き型要素も含まれているため、宣言型言語(4GL)として記述されています。

SQLのアプリケーション

SQLにはさまざまなアプリケーションがあります-

  • 1。データ統合スクリプト- SQLの主な用途は、データベース管理者と開発者によるデータ統合スクリプトを作成することです。
  • 2。分析クエリ- データアナリストは、構造化クエリ言語を使用して、分析クエリを定期的に設定および実行します。
  • 3。情報を取得する- この言語のもう1つの一般的なアプリケーションは、分析アプリケーションとトランザクション処理のためにデータベース内の情報のサブセットを取得することです。最も一般的に使用されるSQL要素は、選択、挿入、更新、追加、削除、作成、切り捨て、および変更です。
  • 4。その他の重要なアプリケーション- SQLは、インデックス構造とデータベーステーブルの変更に使用されます。さらに、ユーザーはこの言語を使用してデータの行を追加、更新、および削除できます。

SQL標準および独自の拡張機能

公式のSQL標準は、1986年に米国規格協会(ANSI)によって採用され、1987年に国際標準化機構(ISO)によって採用されました。SQLは、データベース管理者だけでなく、データ統合スクリプトやデータを作成する開発者によっても定期的に使用されています。分析クエリの設定と実行を検討しているアナリスト。

SQLを中心に構築されたプロプライエタリおよびオープンソースのリレーショナルデータベース管理システムは、組織で使用できます。それらには、Microsoft SQL Server、Oracleデータベース、IBM DB2、SAP HANA、SAP Adaptive Server、MySQL(現在はOracleが所有)、およびPostgreSQLが含まれます。

ただし、これらのデータベース製品の多くは、手続き型プログラミングやその他の機能のための標準言語に対する独自の拡張機能を備えたSQLをサポートしています。たとえば、MicrosoftはTransact-SQL(T-SQL)と呼ばれる一連の拡張機能を提供していますが、Oracleの標準の拡張バージョンはPL/SQLです。その結果、ベンダーが提供するSQLのさまざまなバリアントは、相互に完全に互換性がありません。

SQLコマンドと構文

SQLコマンドは、データ操作言語(DML)およびデータ定義言語(DDL)ステートメント、トランザクション制御、セキュリティ対策など、いくつかの異なるタイプに分けられます。

  • DMLはデータの取得と操作に使用されます。
  • DDLステートメントは、データベース構造を定義および変更するためのものです。
  • トランザクション制御は、トランザクション処理の管理に役立ち、エラーや問題が発生した場合にトランザクションが完了またはロールバックされるようにします。
  • セキュリティステートメントは、データベースアクセスを制御し、ユーザーの役割と権限を作成するために使用されます

SQL言語は、-

を含むいくつかの言語要素に細分されます。
  • 節、 ステートメントとクエリの構成要素です。
  • 表現 これは、スカラー値、またはデータの列と行で構成されるテーブルのいずれかを持つことができます
  • 述語 SQL 3値論理(3VL)(true / false / unknown)またはブール真理値(true / false)に評価できる条件を指定するために使用され、ステートメントとクエリの効果を制限したり、プログラムフローを変更したりするために使用されます。
  • クエリ 特定の基準に基づいてデータを取得するために使用されます。
  • ステートメント これは、スキーマとデータに永続的な影響を与える可能性があり、トランザクション、プログラムフロー、接続、セッション、または診断を制御する可能性があります。
  • SQLステートメントには、セミコロン( ";")ステートメントも含まれます。 ターミネーター。
  • 重要でない空白 SQLステートメントとクエリでは通常無視されるため、SQLコードを読みやすくフォーマットするのが簡単になります。

相互運用性と標準化

SQL実装はベンダー間で互換性がなく、すべての標準に準拠しているわけではありません。特に、日付と時刻の構文、文字列の連結、NULL、および大文字と小文字の比較の区別は、ベンダーごとに異なります。その結果、SQLコードを変更せずにデータベースシステム間で移植できることはめったにありません。

データベースシステム間の移植性の問題にはいくつかの理由があります-

  • SQL標準の複雑さとサイズは、ほとんどの実装者が標準全体をサポートしていないことを意味します。
  • この標準では、いくつかの重要な領域(インデックス、ファイルストレージなど)でのデータベースの動作は指定されておらず、動作方法を決定するための実装が残されています。
  • SQL標準は、準拠するデータベースシステムが実装する必要のある構文を正確に指定します。ただし、言語構造のセマンティクスに関する標準の仕様はあまり明確に定義されていないため、あいまいさが生じます。
  • 多くのデータベースベンダーは、既存の大規模な顧客ベースを持っています。新しいバージョンのSQL標準がベンダーのデータベースの以前の動作と競合する場合、ベンダーは下位互換性を破ることを望まない可能性があります。
  • ベンダーには、ユーザーがデータベースサプライヤを簡単に変更できるようにするための商業的インセンティブが少しあります(ベンダーロックインを参照)。
  • データベースソフトウェアを評価するユーザーは、パフォーマンスなどの他の要素を標準への準拠よりも優先する傾向があります。

SQLの利点

  • SQLクエリを使用すると、データベースから大量のレコードをすばやく効率的に取得できます。
  • SQLは、データをオブジェクトに保存せずにデータを表示するために使用されます。
  • SQLは2つ以上のテーブルを結合し、それを1つのオブジェクトとしてユーザーに表示します。
  • SQLデータベースは、ANSI&によって採用されている老舗の標準を使用しています。 ISO。非SQLデータベースは、明確な標準に準拠していません。
  • 標準SQLを使用すると、大量のコードを記述しなくてもデータベースシステムを管理しやすくなります。
  • SQLはテーブルへのアクセスを制限して、誰も行をテーブルに挿入できないようにします。
  • 以前は、SQLデータベースはリレーショナルデータベースと同義でした。 ObjectOriented DBMSの登場により、オブジェクトストレージ機能がリレーショナルデータベースに拡張されました。

SQLのデメリット

  • SQLデータベースとのインターフェースは、数行のコードを追加するよりも複雑です。
  • テーブルをドロップすると、ビューが非アクティブになります。テーブルオブジェクトによって異なります。
  • SQLデータベースはANSI&に準拠していますがISO標準、一部のデータベースは、ベンダーロックインを確実にするために標準SQLの独自の拡張機能を採用しています。
  • オブジェクトであるため、スペースを占有します。

  1. MicrosoftSQLServerクエリストア

    Microsoft®SQLServer®クエリストアは、その名前が示すように、実行されたクエリのデータベース履歴、クエリの実行時実行統計、および実行プランをキャプチャするストアのようなものです。データはディスクに保存されるため、トラブルシューティングの目的でいつでもクエリストアデータを取得できます。SQLServerを再起動してもデータに影響はありません。 SQL Server 2016で導入され、以降のすべてのエディションで利用できるクエリストアを使用して、クエリプランの変更によって引き起こされるパフォーマンスの問題をトラブルシューティングします。 はじめに ベースラインデータ分析はパフォ

  2. ストレッチデータベース-理解を得る

    こんにちは、みんな。私はここに、データベース(DB)をいくつかの方法で改善するのに役立つ非常にシンプルですが素晴らしいトピックを持っています—データベースのストレッチ!! それでは、始めましょう。 ストレッチデータベースとは何ですか? SQL 2016では、オンプレミスからAzurecloudにデータを拡張するのに役立つ機能が導入されました。この機能であるStretchDatabase(またはStretchDB)は、ローカルSQL Server上のウォーム(頻繁にアクセスされる)データを維持しながら、ローカルSQLServer®からAzure®にコールド(頻繁にアクセスされない)データを