ホームページ >データベース >mysql チュートリアル >mysql がビューを作成できない場合はどうすればよいですか?
mysql がビューを作成できない問題の解決策: CREATE VIEW ステートメントを使用してビューを作成します。コードは [CREATE VIEW b1f95d94e72e8b0dcea85d1e65e6a935 AS语句>
その他の関連する無料学習の推奨事項: mysql チュートリアル (ビデオ)
mysql がビューを作成できない問題の解決策:
基本構文
CREATE VIEW ステートメントを使用してビューを作成できます。
構文形式は次のとおりです。
CREATE VIEW <视图名> AS <SELECT语句>
構文の説明は次のとおりです。
b1f95d94e72e8b0dcea85d1e65e6a935: ビューの名前を指定します。名前はデータベース内で一意である必要があり、別のテーブルまたはビューと同じ名前を持つことはできません。
6238f2ef3988923b3a2d5244999c62fb: SELECT ステートメントを指定してビューを作成します。ビューは、複数のベース テーブルまたはソース ビューのクエリに使用できます。作成ビューでの SELECT ステートメントの仕様には、次の制限があります。
CREATE VIEW 権限に加えて、ユーザーは、基礎となるテーブルおよびビューに関係する他のビューに対する関連権限も持っています。手術。
SELECT ステートメントはシステム変数またはユーザー変数を参照できません。
SELECT ステートメントの FROM 句にサブクエリを含めることはできません。
単一テーブルに基づいたビューの作成
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 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('M','F') | 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 サイトの他の関連記事を参照してください。