1. トランザクション
1. ロールバック
-
2.
1. ビューを作成します-
2. ビューの削除
-
3. ビューの使用
1. サブクエリの使用
-
スカラーサブクエリ
3. 相関サブクエリ
-
1. トランザクション
RDBMSにおいて、トランザクションとはテーブル内のデータを更新する単位です。簡単に言うと、トランザクションとは、同じ処理単位で実行する必要がある更新プロセスの集合です。 -
事务开始语句START TRANSACTION;
DML语句①;
DML语句②;
DML语句③;
.
.
.
事务结束语句(COMMIT或者ROLLBACK);
ログイン後にコピー
1.コミット
COMMITは、送信トランザクションに含まれる全ての更新処理の終了指示であり、ファイル処理における上書き保存に相当します。一度コミットすると、トランザクション開始前の状態に戻すことはできません。
- 2. RollbackROLLBACKは、トランザクションに含まれる全ての更新処理をキャンセルする終了命令であり、ファイル処理における保存を諦めることに相当します。ロールバックされると、データベースはトランザクションが開始される前の状態に復元されます。
- 3. ACID 特性 DBMS トランザクションはすべて、これら 4 つの特性の頭文字を組み合わせて ACID 特性と呼ばれます。
-
原子性
アトミック性とは、トランザクションの終了時に、トランザクションに含まれる更新処理がすべて実行されるか、まったく実行されないかのいずれかであることを意味します。
一貫性
一貫性とは、トランザクションに含まれる処理が、主キー制約やNOT NULL制約など、データベースによって事前に設定された制約を満たす必要があることを意味します。たとえば、NOT NULL 制約のある列を NULL に更新することはできません。主キー制約に違反するレコードを挿入しようとすると、エラーが発生して実行できません。トランザクションの場合、これらの不正な SQL はロールバックされます。
孤立
分離とは、異なるトランザクションが相互に干渉しないようにする機能を指します。この機能により、トランザクションが相互にネストされなくなります。さらに、トランザクション内で行われた変更は、トランザクションが終了するまで他のトランザクションには表示されません。したがって、トランザクションがテーブルにレコードを追加した場合でも、他のトランザクションはコミットされるまで新しく追加されたレコードを参照できません。
耐久性
耐久性とは、トランザクション (コミットまたはロールバック) の終了後にその時点のデータ状態が確実に保存される DBMS の機能を指します。システム障害によりデータが失われた場合でも、何らかの手段でデータベースを回復する必要があります。
2. ビュー
ビューとテーブルの本質的な違いは、「実際のデータが保存されるかどうか」です。
実際のデータはテーブルに保存され、テーブルからデータを取得するために使用される SELECT ステートメントはビューに保存されます。 頻繁に使用する SELECT ステートメントをビューにすべきです。
1. ビューを作成します-
--格式:CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……) AS <SELECT语句>
CREATE VIEW v1 (product_name, name_cnt)
AS
SELECT product_name, count(*)
FROM
表名/视图名
GROUP BY product_name
ログイン後にコピー
注:
ビューに基づいてビューを作成しないでください。ほとんどの DBMS では、複数のビューにより SQL パフォーマンスが低下します。
ビューを定義するときに ORDER BY 句を使用することはできません
2. ビューを削除します
--格式:DROP VIEW 视图名称
DROP VIEW v1
ログイン後にコピー
3. ビューを更新します
-- 格式:ALTER VIEW 视图名称 AS <SELECT语句>
-- 格式:INSERT INTO 视图名称 VALUES(...)
ログイン後にコピー
注:
ビューとテーブルは次の場所で更新する必要があります。接続されたテーブルを結合して得られるビューは、INSERT では更新できません。
1. サブクエリを使用する
サブクエリは 1 回限りのビュー (SELECT ステートメント) です。ビューとは異なり、サブクエリは SELECT ステートメントの実行後に消えます。
-- 根据商品种类统计商品数量的视图
CREATE VIEW ProductSum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
FROM Product
GROUP BY product_type;
-- 确认创建好的视图
SELECT product_type, cnt_product
FROM ProductSum;
--子查询
SELECT product_type, cnt_product
FROM (SELECT product_type, COUNT(*)
FROM Product
GROUP BY product_type)AS ProductSum;
ログイン後にコピー
2. スカラー サブクエリ
スカラー サブクエリには特別な制限があります。つまり、1 行 1 列の結果のみを返さなければなりません。つまり、クエリ内の特定の行の特定の列の値を返します。テーブル。 -
SELECT product_id, product_name, sale_price
FROM Product
WHERE sale_price > (SELECT AVG(sale_price)
FROM Product);
ログイン後にコピー
3. 相関サブクエリ
細分化されたグループ内で比較する場合は、相関サブクエリを使用する必要があります。
りー
以上がMySQL システムのトランザクションとビューの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。