記事ディレクトリ
1. SQLの概要
1 はじめに
SQL (Structured Query Language) は、データ操作やデータ定義などの複数の機能を備えたデータベース言語です。この言語は対話型であり、ユーザーに大きな利便性を提供します。データベース管理システムは、コンピュータ アプリケーション システムを改善するために SQL 言語を最大限に活用する必要があります。仕事の質と効率。SQL 言語は、端末に単独で適用できるだけでなく、他のプログラム設計を効果的に支援するサブ言語として使用することもでき、このプログラム アプリケーションでは、SQL が他のプログラム言語と連携してプログラムの機能を最適化し、ユーザーに次の機能を提供します。より包括的な情報。
2. 特徴
- 包括的で統一された
- 非常に非手続き的
- セット指向の操作
- 同じ構文構造で 2 つの使用方法を提供します
- シンプルな言語、学びやすく使いやすい
3. 構成
- SQL データベースはテーブル(テーブル) のコレクションであり、1 つ以上の SQLスキーマによって定義されます。
- SQL テーブルは行セットで構成され、行は列のシーケンス (セット) であり、各列と行はデータ項目に対応します。
- テーブルはベース テーブルまたはビューのいずれかです。基本テーブルはデータベースに実際に格納されるテーブルであり、ビューは複数の基本テーブルまたは他のビューで構成されるテーブルの定義です。
- 基本テーブルは 1 つ以上のストレージ ファイルにまたがることができ、ストレージ ファイルには 1 つ以上の基本テーブルも格納できます。各ストレージ ファイルは、外部ストレージ上の物理ファイルに対応します。
- ユーザーは SQL ステートメントを使用して、ビューと基本テーブルをクエリできます。ユーザーの観点からは、ビューと基本テーブルは同じであり、違いはなく、すべてリレーションシップ (テーブル) です。
- SQL ユーザーはアプリケーションまたはエンド ユーザーになることができます。SQL ステートメントは、FORTRAN、COBOL、PASCAL、PL/I、C、Ada などのホスト言語のプログラムに埋め込むことができます。SQL ユーザーは、対話型環境でエンドユーザー向けのスタンドアロン ユーザー インターフェイスとして機能することもできます。
4. SQLの分類
- DDL : データ定義言語。CREATE / ALTER / DROP / RENAME / TRUNCATEを含む
- DML : データ操作言語。挿入/削除/更新/選択を含む
- DCL : データ制御言語。COMMIT / ROLLBACK / SAVEPOINT / GRANT / REVOKE を含む
5.仕様書の書き方
- データベース名、テーブル名、テーブルの別名、フィールド名、フィールドの別名などはすべて小文字です。
- SQLキーワード、関数名、バインド変数などは大文字で表記されます。
学習スキル: 大きく考えて、小さく始めてください!
2. データ定義
関数には、スキーマ定義、テーブル定義、ビュー、インデックス定義が含まれます。
1. パターンの定義と削除
①定義モード
スキーマ定義ステートメント:
CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句> | <视图定义子句> | <授权定义子句>]
注:
- <schemaname> が指定されていない場合は、暗黙的に <username> として解釈されます。
- スキーマを作成するには、コマンドを呼び出すユーザーに DBA 権限が必要です
- スキーマを定義すると、実際には、基本的なテーブル、ビュー、インデックスなど、スキーマに含まれるデータベース オブジェクトを定義できる名前空間が定義されます。
- CREATE TABLE、CREATE VIEW、および GRANT 句は、CREATE SCHEMA で使用できます。
②削除モード
スキーマ削除ステートメント:
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
注:
- CASCADE または RESTRICT のいずれかを選択する必要があります
- 前者はカスケード を意味し、スキーマの削除と同時にスキーマ内のすべてのデータベース オブジェクトも削除されることを意味します。
- 後者は制限を表しており、従属データベース オブジェクト (テーブル、ビューなど) がスキーマ内に定義されている場合、削除ステートメントの実行は拒否されることを意味します。
2. 基本テーブルの定義、削除、変更
① 基本テーブルを定義する
定義形式:
CREATE TABLE <表名>(<列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件]]
…
[,<表级完整性约束条件>]);
用語の説明:
- <テーブル名>: 定義する基本テーブルの名前
- <列名>: テーブルを構成する各属性(列)
- <列レベルの整合性制約>: 対応する属性列に関係する整合性制約
- <テーブルレベルの整合性制約>: 1 つ以上の属性列を含む整合性制約
②データの種類
③モードとテーブル
各テーブルはスキーマに属し、スキーマには複数の基本テーブルが含まれます。
ベーステーブルが属するスキーマを定義する方法:
- テーブル名にスキーマ名を明示的に指定します。
- create schema ステートメントでテーブルを同時に作成します。
- テーブル名を作成するときにスキーマ名を指定する必要がないように、テーブルが属するスキーマを設定します。
ユーザーがスキーマを指定せずに基本テーブルを作成すると、システムは検索パスに基づいてオブジェクトが属するスキーマを決定します。
検索パスにはスキーマのリストが含まれており、RDBMS はスキーマ リスト内の最初の既存のスキーマをデータベース オブジェクトのスキーマ名として使用します。検索パスにスキーマ名が存在しない場合は、エラーが発生します。
現在の検索パスを表示します。
SHOW search_path;
デフォルト:$user, PUBLIC
検索パスを設定します (DBA ユーザー) :
SET search_path TO "S-T",PUBLIC;
ベーステーブルを定義します。
CREATE TABLE Student();
基本的なテーブルを作成しますS-T.Student
。RDBMS は、最初のスキーマ名 ST が検索パスに存在することを検出したため、このスキーマを基本テーブル Student が属するスキーマとして採用します。
④基本テーブルを修正する
ステートメントの形式:
ALTER TABLE <表名>
[ADD <新列名> <数据类型> [完整性约束]]
[DROP <完整性约束名>]
[ALTER COLUMN <列名> <数据类型>];
- <テーブル名>: 変更する基本テーブル
- ADD 句: 新しい列と新しい整合性制約を追加します。
- DROP 句: 指定された整合性制約を削除します。
- MODIFY 句: 列名とデータ型を変更するために使用されます。
⑤基本テーブルの削除
ステートメントの形式:
DROP TABLE <表名> [RESTRICT|CASCADE]
- RESTRICT: ドロップテーブルは制限されています。削除するテーブルは、他のテーブルの制約によって参照することはできません。テーブルに依存するオブジェクトがある場合、テーブルを削除することはできません。
- CASCADE: テーブルの削除に制限はありません。基本テーブルを削除すると、関連する依存オブジェクトも一緒に削除されます。
3. インデックスの作成と削除
インデックス作成はクエリを高速化する効果的な手段です。インデックス付けは、必要に応じて DBA またはテーブルの所有者 (つまり、テーブルの作成者) によって確立されます。
①インデックスを作成する
ステートメントの形式:
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
用語の説明:
- <テーブル名>: インデックスを作成する基本テーブルの名前。
- インデックス: テーブルの 1 つ以上の列に基づいて構築でき、列名はカンマで区切られます。
- <Order>: インデックス値のソート順序を指定します。昇順: ASC、降順: DESC、デフォルトは昇順です。
- UNIQUE は、このインデックスの各インデックス値が一意のデータ レコードのみに対応することを示します。
- CLUSTER は、構築されるインデックスがクラスター化インデックスであることを示します。インデックス エントリの順序がテーブル内のレコードの物理的な順序と一致するインデックス構成を指します。
クラスター化インデックス:
- 頻繁にクエリされる列にクラスター化インデックスを構築すると、クエリの効率が向上します。
- クラスタ化インデックスは最大 1 つ作成できます
②インデックスの削除
インデックスを削除すると、そのインデックスの説明がデータ ディクショナリから削除されます。ユーザーの介入は必要ありません
DROP INDEX Stusname;