他のRDBMSとの差異 - テーブルのDDL
インデックス(索引)
インデックスとは
テーブル内のデータへ効率的にアクセスするためのオブジェクト WHERE
条件に指定される列に対してインデックスを作成することで、一般に
SQL
の処理効率を高めることができる
様々な種類のインデックスが存在するが、Bツリーインデックスが最もよく使 用される B ツリーインデックスの作成方法
CREATE INDEX
インデックス名ON
テーブル名(
列名);
複数列に対してインデックスを作成することも可能CREATE INDEX インデックス名 ON テーブル名 (列名, 列名, … );
ビュー
ビューとは
SELECT
文に名前をつけて、クエリ内で単なるテーブルのように使えるよう にしたもの
アプリケーション側で複雑なクエリを記述してなくても済む
ビューの実装(具体的な検索方法)を隠蔽できる
ビューは読み取り専用で、書き込みはできない ビューの定義方法
CREATE VIEW
ビュー名AS SELECT … ;
ビューの削除方法
DROP VIEW ビュー名;
スキーマと名前空間
スキーマとは
オブジェクト(テーブル、インデックスなど)の論理的なコンテナ
すべてのオブジェクトはいずれか1つのスキーマに含まれる
「スキーマ名.
オブジェクト名」がオブジェクトの完全修飾名
オブジェクト名の名前空間として機能する
別のスキーマであれば、同じ名前のオブジェクトを作成可能 データベースとスキーマ
すべてのデータベースに「public」というスキーマが初期状態で作成済み
ひとつのデータベースに複数のスキーマを作成できるデータベース publicスキーマ
empテーブル
shスキーマ
スキーマ
スキーマの作成
CREATE SCHEMA
スキーマ名;
スキーマの削除
DROP SCHEMA
スキーマ名:
"public"
スキーマを削除することもできる オブジェクトの検索ルールとスキーマ
search_path
パラメータの設定に沿ってスキーマを探索
デフォルトは'"$user",public'("$user"は接続ユーザー名)
まず、接続ユーザー名と同名のスキーマ内のオブジェクトを検索
次にpublic
スキーマ内のオブジェクトを検索 新規作成オブジェクトの格納先スキーマ
スキーマを指定しないとsearch_path
内の最初のスキーマに格納される
スキーマを指定すると、指定したスキーマに格納されるシーケンス
シーケンスとは
連番を作成するオブジェクト
ただし、トランザクションをロールバックした場合など、番号に「飛び」が発生 する可能性がある
完全な連番を生成することよりも、処理の高速性を優先している シーケンスの定義方法
CREATE SEQUENCE
シーケンス名[INCREMENT [BY]
増分] [START [WITH]
初期値];
初期値のデフォルトは1
、増分のデフォルトは1
シーケンスの操作関数
連番を取得する :nextval('
シーケンス名');
取得した連番を参照する :currval('
シーケンス名');
連番をリセットする:
setval('
シーケンス名',
次の値);
シーケンスの作成と使用
db1=> CREATE SEQUENCE seq1 CYCLE;
CREATE SEQUENCE
ドキュメント内
OSS-DB Exam Silver 技術解説無料セミナー
(ページ 171-177)