RDBMS
-特徴
・2次元テーブルで表現
・表のデータの関連付けによる巨大なデータベース
・オンライントランザクション処理
-オープンソースのRDBMS
・PostgreSQL
・MySQL
・Firebirdなど
SQLの機能
データ操作はもちろん、表の作成やユーザー権限の操作もできる
制御機能
1.データベース定義言語(DDL)
データを格納する表を作成するときなどに使う言語
オブジェクトの作成:CREATE
オブジェクトの削除:DROP
ユーザー権限を付与:GRANT
ユーザー権限の削除:REVOKE
2.データベース操作(DML)
データを操作
データ検索:SELECT
テーブルに追加:INSERT
データを更新:UPDATE
データの削除:DELETE
3.トランザクション管理
回復や同時実行のための最小端子として保障される一連の処理の操作
start → 処理1 → 処理2 → end
特性4つ(ACID)
A:原始性(Atomicity)
-すべての処理は、有効になるか無効になるかの2択
C:一貫性(Consistency)
-実行前と実行後のデータの整合性を持つ
I:隔離性(Isolation)
-トランザクションA,トランザクションBが同時に行われる場合、
Aが変更完了した後、Bが実行可能になる。
D:持続性(Durability)
-トランザクションで実行されるデータは、終了まで変化しない。
1.トランザクション開始の宣言:BEGIN TRAN
-処理の確定or取り消しまでに発行されるDML文を扱う
2.処理の確定 :COMMITE
3.処理の取り消し :ROLLBACK
-データ更新処理を検知する必要があるため、複数のDML文が発行される。
このときのエラー検知には、TRA~CATCH文を利用
BEGIN TRY
BEGIN TRANSACTION #トランザクションの開始
(DML文の発行)
COMMIT TRANSACTION #トランザクションを確定
END TRY
BEGIN CATCH #例外処理
ROLLBACK TRANSACTION #トランザクションを取り消し
END CATCH
コミット
-トランザクションによるデータの変更処理が正常に終了した場合に、
その変更処理を有効な結果と確定し、データに反映すること
処理→処理→処理→COMMIT
ロールバック
トランザクションによるデータの変更処理の途中でなんらかの障害が発生した場合に、それまでの変更処理を無効にし、実行される前の状態に戻すこと
start→処理→処理-✖️-処理
↓
start
排他制御
-トランザクション実行中に、トランザクションが対象としているデータをロックすることで、
データの整合性を確保する仕組み
-トランザクション完了時にロックを解除し、データへのアクセスを可能にする
ロック
トランザクションの特性の一つ隔離性
*共有ロック
-SELECT文によるデータの参照時のロック
-他のトランザクションからデータの参照は可能にするが、変更は不能とする
*排他ロック
-INSERT文、UPDATE文、DELETE文時のロック
-他のトランザクションからデータの参照も変更も不能とする
サブクエリ
-SQL文の中に埋め込み、データ抽出条件として利用
-WHERE句やJOIN句の内側に記述するクエリのことを言う
-複数のクエリを組み合わせて、1つのクエリが生成した出力で、
他のクエリの出力を制御することができる。
ex)
WHERE句
SELECT 受注番号 FROM 受注表
WHERE 商品コード IN
(SELECT 商品コード FROM 商品表
WHERE 単価 = 400);
HAVING句
SELECT 顧客コード,COUNT(DISTINCT 受注番号) FROM 受注表
GROUP BY 顧客コード
HAVING 受注個数 <
(SELECT MIN(受注個数) FROM 受注表
WHERE 顧客コード = '002');