MySQLケースコンバット-MySQLビュー

MySQLビュー

序文

この環境は、
特定の構築のためにMySQL-5.7.14を構築するためのCentos7.8システムに基づいています。MySQL-5.7.14環境構築を参照してください。

多くの場合、テーブルが接続され、同じ文字列のステートメントが書き込まれるたびに、empテーブルとdeptテーブルで結合クエリを実行する必要があります。同時に、給与キューデータの機密性が高いため、外部要件は次のとおりです。表示されません。
このように、ビューを作成することで完了できます


ビューの特性

  • ビューには、カスタマイズされた方法で1つ以上のテーブルのデータが表示されます
  • ビューは一種のデータベースオブジェクトであり、ユーザーは通常のテーブルのようにビューにクエリを実行できます。実際、ビューにデータは保存されず、テーブルに対するクエリにすぎません。
  • ビューの定義はデータディクショナリに格納され、ビューが作成されるテーブルは「ベーステーブル」と呼ばれます。

ビューの利点

効果:

  • セキュリティを制御する
  • クエリデータを保存する

利点:

  • 柔軟で一貫したレベルのセキュリティを提供します。
  • データの複雑さを隠す
  • ユーザーのSQLコマンドを簡素化する
  • 列の名前を変更して、別の角度からデータを提供する

テーブルを作成する

mysql> CREATE TABLE college(
    -> number INT(10) NOT NULL UNIQUE PRIMARY KEY COMMENT '学号',
    -> name VARCHAR(20) NOT NULL COMMENT '姓名',
    -> major VARCHAR(20) NOT NULL COMMENT '专业',
    -> age INT(5) COMMENT '年龄'
    -> )

テーブルにデータを挿入します

Query OK, 0 rows affected (0.18 sec)

mysql> INSERT INTO college_view VALUES(0901,'张三',20,'外语');
Query OK, 1 row affected (0.11 sec)

mysql> INSERT INTO college_view VALUES(0902,'李四',22,'计算机');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO college_view VALUES(0903,'王五',19,'计算机');
Query OK, 1 row affected (0.00 sec)

ビューを作成する

mysql> create 
    -> algorithm = merge
    -> view college_view(student_num,student_name,student_age,department)
    -> as
    -> select number,name,age,major
    -> from college
    -> with local check option;
Query OK, 0 rows affected (0.18 sec)

ビュービュー

mysql> select * from college_view;
+-------------+--------------+-------------+------------+
| student_num | student_name | student_age | department |
+-------------+--------------+-------------+------------+
|         901 | 张三         |          20 | 外语       |
|         902 | 李四         |          22 | 计算机     |
|         903 | 王五         |          19 | 计算机     |
+-------------+--------------+-------------+------------+
3 rows in set (0.00 sec)

ビューを変更する

mysql> alter 
    -> algorithm = merge
    -> view college_view(student_num,student_name,student_age,department)
    -> as
    -> select number,name,age,major
    -> from college
    -> where major='计算机'
    -> with local check option;
Query OK, 0 rows affected (0.00 sec)

もう一度ビューを見てください

mysql> select * from college_view;
+-------------+--------------+-------------+------------+
| student_num | student_name | student_age | department |
+-------------+--------------+-------------+------------+
|         902 | 李四         |          22 | 计算机     |
|         903 | 王五         |          19 | 计算机     |
+-------------+--------------+-------------+------------+
2 rows in set (0.00 sec)

おすすめ

転載: blog.csdn.net/XY0918ZWQ/article/details/112918548