ホームページ >データベース >mysql チュートリアル >mysqlでビューを作成するにはどうすればよいですか?作成ステートメントとは何ですか?

mysqlでビューを作成するにはどうすればよいですか?作成ステートメントとは何ですか?

青灯夜游
青灯夜游オリジナル
2020-10-13 16:11:5219584ブラウズ

mysql では、「CREATE VIEW」ステートメントを使用してビューを作成できます。構文形式は、「CREATE VIEW b1f95d94e72e8b0dcea85d1e65e6a935 AS 6238f2ef3988923b3a2d5244999c62fb」; ここで、「6238f2ef3988923b3a2d5244999c62fb」です。 " FROM 句にサブクエリを含めることはできず、プリペアド ステートメントのパラメータを参照することもできません。 语句>语句>

mysqlでビューを作成するにはどうすればよいですか?作成ステートメントとは何ですか?

(推奨チュートリアル: mysql ビデオ チュートリアル )

ビューの作成とは、既存の MySQL データベース テーブルにビューを確立することを指します。ビューは 1 つのテーブルまたは複数のテーブルに作成できます。

基本構文

CREATE VIEW ステートメントを使用してビューを作成できます。

構文形式は次のとおりです。

CREATE VIEW <视图名> AS <SELECT语句>

構文の説明は次のとおりです。

  • b1f95d94e72e8b0dcea85d1e65e6a935: ビューの名前を指定します。名前はデータベース内で一意である必要があり、別のテーブルまたはビューと同じ名前を持つことはできません。

  • 6238f2ef3988923b3a2d5244999c62fb: SELECT ステートメントを指定してビューを作成します。ビューは、複数のベース テーブルまたはソース ビューのクエリに使用できます。

作成されたビューの SELECT ステートメントの仕様には、次の制限があります。

  • CREATE VIEW 権限に加えて、ユーザーは、基になるテーブルやその他のビューに対する操作に関連する権限も持ちます。

  • SELECT ステートメントはシステム変数またはユーザー変数を参照できません。

  • SELECT ステートメントの FROM 句にサブクエリを含めることはできません。

  • #SELECT ステートメントは、準備されたステートメントのパラメーターを参照できません。

ビュー定義で参照されるテーブルまたはビューは存在する必要があります。ただし、ビューを作成した後、定義が参照するテーブルまたはビューを削除できます。 CHECK TABLE ステートメントを使用すると、ビュー定義にそのような問題がないか確認できます。

ORDER BY ステートメントはビュー定義で使用できますが、独自の ORDER BY ステートメントを使用する特定のビューから選択した場合、ビュー定義内の ORDER BY は無視されます。

ビュー定義でTEMPORARY表(一時表)を参照できず、TEMPORARYビューを作成できません。

WITH CHECK OPTION は、ビューを変更するときに、挿入されたデータが WHERE で設定された条件を満たしているかどうかを確認することを意味します。

単一テーブルに基づいたビューの作成

MySQL は単一のデータ テーブルにビューを作成できます。

次に示すように、test_db データベース内の tb_students_info テーブルのデータを表示します。

mysql> SELECT * FROM tb_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.00 sec)

[例 1] tb_students_info テーブルに view_students_info という名前のビューを作成する 入力 SQL 文と実行結果は以下のとおりです。

mysql> CREATE VIEW view_students_info
    -> AS SELECT * FROM tb_students_info;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM view_students_info;
+----+--------+---------+------+------+--------+------------+
| id | name   | dept_id | age  | sex  | height | login_date |
+----+--------+---------+------+------+--------+------------+
|  1 | Dany   |       1 |   25 | F    |    160 | 2015-09-10 |
|  2 | Green  |       3 |   23 | F    |    158 | 2016-10-22 |
|  3 | Henry  |       2 |   23 | M    |    185 | 2015-05-31 |
|  4 | Jane   |       1 |   22 | F    |    162 | 2016-12-20 |
|  5 | Jim    |       1 |   24 | M    |    175 | 2016-01-15 |
|  6 | John   |       2 |   21 | M    |    172 | 2015-11-11 |
|  7 | Lily   |       6 |   22 | F    |    165 | 2016-02-26 |
|  8 | Susan  |       4 |   23 | F    |    170 | 2015-10-01 |
|  9 | Thomas |       3 |   22 | M    |    178 | 2016-06-07 |
| 10 | Tom    |       4 |   23 | M    |    165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.04 sec)

デフォルトでは、作成されたビューには基本テーブルと同じフィールドが含まれます。ビュー フィールドの名前を指定してビューを作成することもできます。

[例 2] tb_students_info テーブルに v_students_info という名前のビューを作成する 入力 SQL 文と実行結果は以下のとおりです。

mysql> CREATE VIEW v_students_info
    -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
    -> AS SELECT id,name,dept_id,age,sex,height,login_date
    -> FROM tb_students_info;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date     |
+------+--------+------+-------+-------+----------+------------+
|    1 | Dany   |    1 |    24 | F     |      160 | 2015-09-10 |
|    2 | Green  |    3 |    23 | F     |      158 | 2016-10-22 |
|    3 | Henry  |    2 |    23 | M     |      185 | 2015-05-31 |
|    4 | Jane   |    1 |    22 | F     |      162 | 2016-12-20 |
|    5 | Jim    |    1 |    24 | M     |      175 | 2016-01-15 |
|    6 | John   |    2 |    21 | M     |      172 | 2015-11-11 |
|    7 | Lily   |    6 |    22 | F     |      165 | 2016-02-26 |
|    8 | Susan  |    4 |    23 | F     |      170 | 2015-10-01 |
|    9 | Thomas |    3 |    22 | M     |      178 | 2016-06-07 |
|   10 | Tom    |    4 |    23 | M     |      165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.01 sec)

ご覧のとおり、view_students_info と v_students_info の 2 つのビューのフィールド名は異なりますが、データは同じです。したがって、ビューを使用する場合、ユーザーは実際のテーブル内のデータはもちろん、基本的なテーブルの構造を理解する必要がなく、データベースのセキュリティが確保されます。

複数のテーブルに基づいたビューの作成

MySQL では、CREATE VIEW ステートメントを使用して 3 つ以上のテーブルにビューを作成することもできます。

[例 3] テーブル tb_student_info とテーブル tb_Departments にビュー v_students_info を作成する 入力 SQL 文と実行結果は以下のとおりです。

mysql> CREATE VIEW v_students_info
    -> (s_id,s_name,d_id,s_age,s_sex,s_height,s_date)
    -> AS SELECT id,name,dept_id,age,sex,height,login_date
    -> FROM tb_students_info;
Query OK, 0 rows affected (0.06 sec)
mysql> SELECT * FROM v_students_info;
+------+--------+------+-------+-------+----------+------------+
| s_id | s_name | d_id | s_age | s_sex | s_height | s_date     |
+------+--------+------+-------+-------+----------+------------+
|    1 | Dany   |    1 |    24 | F     |      160 | 2015-09-10 |
|    2 | Green  |    3 |    23 | F     |      158 | 2016-10-22 |
|    3 | Henry  |    2 |    23 | M     |      185 | 2015-05-31 |
|    4 | Jane   |    1 |    22 | F     |      162 | 2016-12-20 |
|    5 | Jim    |    1 |    24 | M     |      175 | 2016-01-15 |
|    6 | John   |    2 |    21 | M     |      172 | 2015-11-11 |
|    7 | Lily   |    6 |    22 | F     |      165 | 2016-02-26 |
|    8 | Susan  |    4 |    23 | F     |      170 | 2015-10-01 |
|    9 | Thomas |    3 |    22 | M     |      178 | 2016-06-07 |
|   10 | Tom    |    4 |    23 | M     |      165 | 2016-08-05 |
+------+--------+------+-------+-------+----------+------------+
10 rows in set (0.01 sec)

基本テーブル内のデータは、このビューを通じて適切に保護できます。ビューには s_id、s_name、および dept_name が含まれており、s_id フィールドは tb_students_info テーブルの id フィールドに対応し、s_name フィールドは tb_students_info テーブルの name フィールドに対応し、dept_name フィールドは tb_Departments テーブルの dept_name フィールドに対応します。

以上がmysqlでビューを作成するにはどうすればよいですか?作成ステートメントとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。