ホームページ >データベース >mysql チュートリアル >mysql がビューを作成できない場合はどうすればよいですか?

mysql がビューを作成できない場合はどうすればよいですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-10-13 16:51:173297ブラウズ

mysql がビューを作成できない問題の解決策: CREATE VIEW ステートメントを使用してビューを作成します。コードは [CREATE VIEW b1f95d94e72e8b0dcea85d1e65e6a935 AS语句>

mysql がビューを作成できない場合はどうすればよいですか?

その他の関連する無料学習の推奨事項: mysql チュートリアル (ビデオ)

mysql がビューを作成できない問題の解決策:

基本構文

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)

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

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

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 フィールドに対応します。

クエリ ビュー

ビューを定義したら、データ テーブルをクエリするのと同じように、SELECT ステートメントを使用してビュー内のデータをクエリできます。構文は、データ テーブルのクエリと同じです。ベーステーブル。

ビューは主に、次の側面でのクエリに使用されます。

  • ビューを使用して、取得したデータを再フォーマットします。

  • ビューを使用して、複雑なテーブル結合を簡素化します。

  • #ビューを使用してデータをフィルタリングします。
  • DESCRIBE はビューを表示するために使用できます。構文は次のとおりです:

DESCRIBE view name;

[例 4]

スルー DESCRIBE ステートメントビュービュー v_students_info の定義、入力 SQL 文と実行結果は以下のとおりです。

mysql> DESCRIBE v_students_info;
+----------+---------------+------+-----+------------+-------+
| Field  | Type     | Null | Key | Default  | Extra |
+----------+---------------+------+-----+------------+-------+
| s_id   | int(11)    | NO  |   | 0     |    |
| s_name  | varchar(45)  | YES |   | NULL    |    |
| d_id   | int(11)    | YES |   | NULL    |    |
| s_age  | int(11)    | YES |   | NULL    |    |
| s_sex  | enum(&#39;M&#39;,&#39;F&#39;) | YES |   | NULL    |    |
| s_height | int(11)    | YES |   | NULL    |    |
| s_date  | date     | YES |   | 2016-10-22 |    |
+----------+---------------+------+-----+------------+-------+
7 rows in set (0.04 sec)

注: DESCRIBE は通常、DESC と省略できます。このコマンドを入力した実行結果は、DESCRIBE を入力した場合と同じです。

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

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