SQL がすべてです

おそらくすでにお察しのとおり、SQL サーバーに対するすべてのコマンドは SQL クエリを通じて実行できます。すべての。

これらのチームは正式に 4 つのグループに分けられます。

  • データ定義ステートメント(データ定義言語、DDL ):

    • CREATE はデータベース オブジェクト (データベース自体、テーブル、ビュー、ユーザーなど) を作成します。
    • ALTER はオブジェクトを変更します
    • DROP はオブジェクトを削除します
  • データ操作演算子(データ操作言語、DML ):

    • SELECT指定された条件を満たすデータを選択します
    • INSERT で新しいデータを追加します
    • UPDATE は既存のデータを変更します
    • DELETE はデータを削除します
  • データ アクセス定義演算子(データ制御言語、DCL ):

    • GRANT は、オブジェクトに対して特定の操作を実行する権限をユーザー (グループ) に付与します。
    • REVOKE は、以前に発行された権限を取り消します。
    • 拒否は許可よりも優先される禁止を設定します
  • トランザクション制御言語 ( TCL )ステートメント:

    • COMMIT はトランザクションを適用します
    • ROLLBACK は、現在のトランザクションのコンテキストで行われたすべての変更をロールバックします。
    • SAVEPOINT はトランザクションを小さなセクションに分割します

最初の 2 つのレベルでは、SELECT ステートメントの種類だけを学習しました。将来、どれほど多くの興味深いことが私たちを待っているか想像してみてください。

ただし、ここでは主に Java プログラマーについて準備しているため、仕事で必ず遭遇するであろうシナリオについて学習します。

プロジェクトのシステム管理者がすべてのデータベースを作成する可能性が高くなりますが、必ず自分でデータを何度も選択する必要があります。

さらに、コードがすべてのデータをデータベースに書き込めなかったり、間違った方法で書き込んだりする場合があるため、多くの場合、ペンでデータベースにアクセスして、実際に何が保存されているかを確認する必要があります。

前回の講義で触れた内容をもう一度復習しましょう。

データベース内にスキーマを作成する

DBMS に新しいスキーマを作成するには、次のコマンドを実行する必要があります。

CREATE SCHEMA Name;

これが最も簡単なオプションです。また、新しいスキーマを作成するときに、データのエンコード形式やその他のパラメーターを指定できます。

スキーマを削除したいが、スキーマが存在するかどうかわからない場合は、次のコマンドを実行する必要があります。

DROP SCHEMA IF EXIST Name;

これらのコマンドは、さまざまなデータベースのバックアップを含むファイルでよく見られるため、ここに紹介します。

現在のスキームの選択

DBMS に多数のスキーマがある場合、異なるスキーマに同じテーブルが存在することが容易に発生します。混乱を避けるために、次の 2 つのことを行うことができます。

  • 常にテーブル名の前にスキーマ名を置きます
  • デフォルトのスキーマを指定する

テスト スキーマにあるユーザー テーブルからデータを選択するクエリを作成してみましょう。次のようになります。

SELECT * FROM test.user;

これは、1 つのクエリで異なるスキーマの複数のテーブルを結合 (JOIN) する必要がある場合に不可欠です。

ちなみに、Java 言語でも同様のことをよく行います。コード内で異なるパッケージの同じ名前のクラスを使用する必要がある場合は、クラス名の前にパッケージ名を追加します。

2 番目の方法は、デフォルトのスキーマを指定することです。クエリでテーブル名が指定されているがスキーマが指定されていない場合は、デフォルトのスキーマが使用されます。これを行うには、USE ステートメントを使用します。

USE name - schemes;

USE ステートメントを使用して前のクエリを書き直してみましょう。

USE test;
SELECT * FROM user;

ビューの作成

SQL では、実際のデータを含むテーブルに加えて、実際のテーブルからデータを取得する仮想テーブルのようなものを保存できます。このような仮想テーブルは VIEW と呼ばれます。

このようなテーブルには実際のデータを格納することはできず、アクセスされるたびに実際のテーブルからデータが取得されます。このような VIEW のコンテンツは、SQL クエリを使用して指定されます。

次のようなコマンドを使用して、任意の SELECT クエリから VIEW を作成できます。

CREATE VIEW Name AS
SELECT-request;
従業員テーブルに基づいて、従業員の給与情報が非表示になる public_employee 仮想テーブルを作成するクエリを作成してみましょう。
CREATE VIEW public_employee AS
SELECT id, name FROM employee

上の例では、テーブル (VIEW) public_employee には従業員 ID とその名前のみが含まれますが、給与に関する情報は含まれません。このようなビューは、実際のテーブルと同じ場所で使用できます。

なぜビューが必要なのでしょうか? これらには次のような多くの利点があります。

情報へのアクセスを柔軟に制御します。特定のユーザーに VIEW へのアクセスのみを付与し、テーブルへのアクセスは付与しないことができます。そして、View ではテーブルから公開情報のみを取り出します。さらに、将来、重要な情報を含む新しい列がテーブルに追加された場合でも、それが誤ってビューに表示されることはありません。

データの非正規化。ストレージの都合上、データは多くの場合、数百、数千のテーブルに分割されますが、一般の人がそのようなデータを操作するのはあまり便利ではありません。複雑すぎるクエリを作成する必要があります。View を使用すると、数十の異なるテーブルのデータを 1 つのテーブルに表示する仮想テーブルを作成できます。

ポリモーフィズムとカプセル化。データベースの構造を変更できます。同時に、ビューを操作するプログラムのユーザーは、何かが変更されたとは思いません。また、View にアクセスできるプログラムのコードを書き直す必要もありません。VIEW に関連する SQL スクリプトを調整するだけで済みます。

読み取り専用。ビューは SELECT クエリでのみ設定できるため、ビューを操作しても実際のテーブルのデータを変更することはできません。ちなみに、これはクエリ キャッシュに有利なもう 1 つの利点です。しかし、それについては次回に詳しく説明します。