インデックス:索引
大量のデータから表を効率よく検索するための「索引」みたいな機能のこと。
*表ごとに設定するデータベースオブジェクト
【インデックスの作成 】
1 |
CREATE INDEX インデックス名 ON 表名(列名); |
<作成例>
1 |
CREATE INDEX idx_item_name ON Item(item_name); |
【インデックスの削除】
1 |
DROP INDEX インデックス名; |
シーケンス:連番を発行
自動的に連番を発行するデータベースオブジェクト
【シーケンスの作成 】
1 2 3 4 5 6 7 |
CREATE SEQUENCE シーケンス名 [START WITH 初期値] [INCREMENT BY 増減値] [MAXVALUE 最大値 | NOMAXVALUE] [MINVALUE 最小値 | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE キャッシュ数 | NOCACHE]; |
*シーケンス名以下のオプションは省略可。
【 シーケンスの利用】
擬似列名 | 説明 |
CURRVAL | 順序の現在の値が返される |
NEXTVAL | 順序が増減され、新しい値が返される (データを登録する際に利用) |
↑ 例: 主キー列の後ろに「.NEXTVAL」と記入
1 |
INSERT INTO <テーブル名> (主キー列,……) VALUES(シーケンス名.nextval,……); |
<作成例>
1 2 3 4 5 6 |
//シーケンスの作成 CREATE SEQUENCE seq_dept START WITH 5; //上で作成したシーケンスを元に連番をふる INSERT INTO Dept values (seq_dept.nextval, '人事部'); COMMIT; |
【シーケンスの削除】
*一度削除すると、ROLLBACK で戻ることができない。
*シーケンスの値を変更 → 一度シーケンスを削除し、新たに作成。
1 |
DROP SEQUENCE シーケンス名; |
トランザクションとロック
・トランザクション → 複数の処理をまとめて扱う機能
(処理中のデータに問題が発生した場合、変更前の状態に戻すなど。)
COMMMIT(コミット) → 結果をデータベースに反映させること
ROLLBACK(ロールバック) → 反映せずに、元に戻すこと
自動コミット機能 *現場ではOFFに!!
↑ *コミットをするとデータを更新前に戻すことが基本できないため
1 |
SET AUTOCOMMIT ON(または OFF) |
セーブポイント
ROLLBACK で処理を戻す際に、どの時点の状態まで戻すかという位置を SAVEPOINT で指定。
【セーブポイントの設定】
1 |
SAVEPOINT <セーブポイント名>; |
【指定するセーブポイントまでロールバック 】
1 |
ROLLBACK TO <セーブポイント名> |
関連記事
Oracle研修1:データベースの概要とOracleの特徴、ユーザーと権限
Oracle研修2:SQLのデータ型。テーブルの作成、変更、削除。 列の追加、変更、削除。
Oracle研修3: INSERT 文、SELECT文、UPDATE 文、DELETE文、TRUNCATE 文