SQLの基礎

DDL、DML、JOINについて学ぶ

Structured Query Languageは、現代のデータベースアーキテクチャの基本的なビルディングブロックの1つです。 SQLは、すべての主要なプラットフォームでリレーショナル・データベースを作成および操作するために使用されるメソッドを定義します。 一見すると、言語は脅かされて複雑に見えるかもしれませんが、それほど難しいことではありません。

SQLの背後にある基礎についてのこの紹介では、データベースの作成と変更に使用される主なコマンドのいくつかを簡単に見ていきます。

SQLについて

SQLの正しい発音は、データベース・コミュニティー内で論争の的になる問題です。 SQL標準では、米国規格協会(American National Standards Institute)は公式の発音が「es que el」であると宣言しています。 しかし、多くのデータベース専門家は、スラングの発音「続編」に取り組んできました。 選択はあなた次第です。

SQLには多くの味があります。 Oracleデータベースは、独自のPL / SQLを使用します。 Microsoft SQL ServerはTransact-SQLを使用します。 すべてのバリエーションは業界標準のANSI SQLに基づいています。 この紹介では、現代のリレーショナルデータベースシステムで動作するANSI準拠のSQLコマンドを使用します。

DDLおよびDML

SQLコマンドは2つの主なサブ言語に分けることができます。 データ定義言語(DDL)には、データベースとデータベースオブジェクトを作成および破棄するためのコマンドが含まれています。 データベース構造がDDLで定義された後、データベース管理者およびユーザーは、データ操作言語(DML)を使用して、その中に含まれるデータの挿入、取得および変更を行うことができます。

データ定義言語コマンド

データ定義言語は、データベースとデータベースオブジェクトの作成と破棄に使用されます。 これらのコマンドは、主に、データベースプロジェクトの設定および削除フェーズでデータベース管理者が使用します。 ここでは、4つの基本的なDDLコマンドの構造と使い方を見ていきます。

CREATE。 コンピュータにデータベース管理システムをインストールすることで、多くの独立したデータベースを作成および管理できます。 たとえば、営業部門の顧客連絡先のデータベースとHR部門の人事データベースを維持することができます。 CREATEコマンドは、これらのデータベースをそれぞれのプラットフォームに設定するために使用されます。 たとえば、次のコマンドを実行します。

CREATE DATABASEの従業員

DBMSに "employees"という空のデータベースを作成します。 データベースを作成したら、次にデータを含むテーブルを作成します。 この目的のために、CREATEコマンドの別の変形を使用することができる。 コマンド:

CREATE TABLE personal_info(first_name char(20)not null、last_name char(20)not null、employee_id int not null)

現在のデータベースに「personal_info」という表が作成されます。 この例では、表にfirst_name、last_name、およびemployee_idの3つの属性と、いくつかの追加情報が含まれています。

つかいます。 USEコマンドを使用すると、DBMS内で作業したいデータベースを指定できます。 たとえば、現在販売データベースで作業していて、従業員データベースに影響を与えるコマンドを発行する場合は、次のSQLコマンドを使用します。

従業員を使用する

データを操作するSQLコマンドを発行する前に、作業中のデータベースを常に意識することが重要です。

ALTER。 データベース内にテーブルを作成したら、テーブルの定義を変更することができます。 ALTERコマンドを使用すると、テーブルの構造を削除および再作成することなく変更できます。 次のコマンドを見てください:

ALTER TABLE personal_info ADD給与金額を加算する

この例では、personal_infoテーブルに新しい属性、つまり従業員の給与を追加します。 "money"引数は、従業員の給与がドルとセントの形式で格納されることを指定します。 最後に、 "null"キーワードは、データベースに、このフィールドに任意の従業員の値が含まれていないことを確認します。

ドロップ。 データ定義言語DROPの最後のコマンドは、DBMSからデータベースオブジェクト全体を削除することができます。 たとえば、作成したpersonal_infoテーブルを永久に削除する場合は、次のコマンドを使用します。

DROP TABLE personal_info

同様に、以下のコマンドを使用して従業員データベース全体を削除します。

DROP DATABASEの従業員

このコマンドは注意して使用してください。 DROPコマンドは、データベースからデータ構造全体を削除します。 個々のレコードを削除する場合は、データ操作言語のDELETEコマンドを使用します。

データ操作言語コマンド

データ操作言語(DML)は、データベース情報の検索、挿入、および変更に使用されます。 これらのコマンドは、データベースのルーチン操作中にすべてのデータベース・ユーザーによって使用されます。

インサート。 SQLのINSERTコマンドは、既存のテーブルにレコードを追加するために使用されます。 前のセクションのpersonal_infoの例に戻って、人事部が新しい従業員をデータベースに追加する必要があると考えてください。 このようなコマンドを使うことができます:

INSERT INTO personal_infoの値( 'bart'、 'simpson'、12345、$ 45000)

レコードには4つの値が指定されています。 これらは、定義された順序で表属性に対応します:first_name、last_name、employee_idおよびsalary。

SELECT。 SELECTコマンドは、SQLで最も一般的に使用されるコマンドです。 これにより、データベースユーザーは、運用データベースから必要な特定の情報を取得できます。 もう少し例を見てみましょう。また、従業員データベースのpersonal_infoテーブルを使用しています。

以下に示すコマンドは、personal_infoテーブルに含まれるすべての情報を取得します。 アスタリスクはSQLのワイルドカードとして使用されることに注意してください。 これは、文字通り、「personal_infoテーブルからすべてを選択」を意味します。

SELECT * FROM personal_info

また、ユーザーはデータベースから取得される属性を制限することもできます。 たとえば、人事部門では、会社内の全従業員の姓のリストが必要な場合があります。 次のSQLコマンドは、その情報だけを取得します。

SELECT last_name FROM personal_info

WHERE句を使用して、検索されるレコードを指定された条件を満たすレコードに限定することができます。 CEOは、すべての高額給与の従業員の人事記録を見直すことに関心があるかもしれません。 次のコマンドは、$ 50,000を超える給与額を持つレコードのpersonal_infoに含まれるすべてのデータを取得します。

SELECT * FROM personal_infoどこから給料> $ 50000

更新。 UPDATEコマンドを使用して、表内の情報をバルクまたは個別に変更できます。 全従業員に年間給与の3%の生活費の増加を与えると仮定します。 次のSQLコマンドを使用して、データベースに保存されているすべての従業員にこれを迅速に適用できます。

UPDATE personal_info SET salary =給与* 1.03

新しい従業員のバート・シンプソン氏は、職務遂行以上の業績を示すと、経営陣は5000ドルの昇給で彼の功績を認めたいと考えています。 WHERE句を使用して、Bartをこのレイズに対してシングルアウトすることができます:

UPDATE personal_info SET salary =給与+ $ 5000 WHERE employee_id = 12345

DELETE。 最後に、DELETEコマンドを見てみましょう。 このコマンドの構文は他のDMLコマンドの構文と似ています。 残念ながら、私たちの最新の企業収益レポートは期待を満たしておらず、Bartの貧弱な人たちが解雇されました。 WHERE句を指定したDELETEコマンドを使用して、personal_infoテーブルからレコードを削除できます。

DELETE FROM personal_info WHERE employee_id = 12345

ジョイン

SQLの基礎を学んだので、言語が提供しなければならない最も強力な概念の1つ、つまりJOINステートメントに移りましょう。 JOIN文を使用すると、複数の表のデータを結合して大量のデータを効率的に処理できます。 これらのステートメントは、データベースの真のパワーが存在する場所です。

基本的なJOIN操作を使用して2つの表のデータを結合する方法を調べるには、PERSONAL_INFO表を使用した例を続け、追加の表を混合表に追加してください。 次の文で作成されたDISCIPLINARY_ACTIONという表があるとします。

CREATE TABLE disciplinary_action(action_id int not null、employee_id int not null、コメントchar(500))

この表には、社員に対する懲戒処分の結果が記載されています。 従業員番号以外の従業員に関する情報は含まれていません。 DISCIPLINARY_ACTIONテーブルとPERSONAL_INFOテーブルの情報を組み合わせることができる多くのシナリオを想像するのは簡単です。

$ 40,000以上の給与を持つ全従業員に対する懲戒処分を列挙したレポートを作成することを前提としているとします。 この場合JOIN操作の使用は簡単です。 この情報は、次のコマンドを使用して取得できます。

SELECT personal_info.first_name、personal_info.last_name、disciplinary_action.comments FROM personal_info、disciplinary_actionここで、personal_info.employee_id = disciplinary_action.employee_id AND personal_info.salary> 40000

このコードでは、FROM句に結合する2つのテーブルを指定し、その結果をWHERE句に含めて一致する従業員IDを持つレコードに制限し、$ 40,000を超える給与基準を満たしています。