ホームページ データベース mysql チュートリアル MySQLビューの基本操作(5)_MySQL

MySQLビューの基本操作(5)_MySQL

Sep 09, 2016 am 08:13 AM
mysql ビュー

1. ビューを使用する理由:
複雑な SQL ステートメントの再利用性とテーブル操作のセキュリティ (たとえば、クエリ結果を表示できるすべてのユーザーに給与フィールドを表示したくないなど) を向上させるために、MySQL はビュー機能を提供します。いわゆるビューは本質的には仮想テーブルであり、その内容は実際のテーブルと同様であり、一連の名前付きの列データと行データが含まれています。ただし、ビューはデータベースに保存されたデータ値としては存在しません。行と列のデータは、カスタム ビューのクエリによって参照されるベース テーブルから取得され、ビューの使用時に動的に生成されます。
ビューには次の特徴があります
1. ビューの列は異なるテーブルから取得できます。これは、テーブルの抽象的かつ論理的な意味で確立される新しい関係です。
2. ビューとは、基本テーブル(実テーブル)から生成されるテーブル(仮想テーブル)です。
3. ビューの作成と削除は、基本テーブルには影響しません。
4. ビューのコンテンツの更新 (追加、削除、および変更) は、基本テーブルに直接影響します。
5. ビューが複数の実表から取得されている場合、データの追加および削除は許可されません。

2. ビューを作成します:
ビューを作成するときは、まず CREATE VIEW 権限があることを確認し、作成されたビューによって参照されるテーブルに対する対応する権限があることも確認してください。
2.1 ビューを作成する構文形式:
ビューは仮想テーブルと見なすことができますが、物理的には存在しません。つまり、データベース管理システムにはビューのデータを保存するための特別な場所がありません。ビューの概念によれば、データはクエリ ステートメントから取得されることがわかります。そのため、ビューを作成するための構文は次のとおりです:

CREATE VIEW view_name AS クエリステートメント
//注: テーブルの作成と同様に、ビュー名をテーブル名や他のビュー名と同じにすることはできません。ビューの機能は実際には、複雑なクエリ ステートメントをカプセル化することです。

例:

リーリー

結果は次のとおりです:
+------+----------+
| ID |
+------+----------+
| 1 | リンゴ |
| 2 |
+------+----------+
//実際、ビューを作成するときにコードに書かれる実際のコードはテーブルクエリステートメントですが、クエリステートメントは再利用できるようにカプセル化され、新しい名前が付けられます。
//さらに、セキュリティの観点から、ここの価格フィールドなど、表示したくないフィールドを非表示にすることもできます。
//注意: SQL ステートメントの命名規則では、ビューは通常、view_xxx または v_xxx の形式で名前が付けられます。ビューのクエリ ステートメントはテーブルのクエリ ステートメントと同じです。

2.2 さまざまなビューを作成します:
ビューの関数は実際にクエリ ステートメントをリアルタイムでカプセル化するため、ビューにはどのような形式のクエリ ステートメントもカプセル化できますか?

2.2.1 クエリ定数ステートメントを実装するビューをカプセル化します (定数ビュー):

例:

リーリー

2.2.2 集計関数 (SUM、MIN、MAX、COUNT など) クエリ ステートメントを使用するビューをカプセル化します:

例:
まず、使用する必要がある 2 つのテーブルとその初期化データを準備します。

リーリー

2.2.3 並べ替え関数 (ORDER BY) クエリ ステートメントを実装するビューをカプセル化します。

例:

リーリー

2.2.4 テーブル内の結合クエリステートメントを実装するビューをカプセル化します:

例: (2番目のグループの生徒の名前)

リーリー

2.2.5 テーブル外結合 (LEFT JOIN および RIGHT JOIN) のクエリ ステートメントを実装するビューをカプセル化します。

例: (生徒名の 2 番目のグループ)

リーリー

2.2.6 は、サブクエリ関連のクエリ ステートメントを実装するビューをカプセル化します。

例:


リーリー

2.2.7 レコード結合 (UNION および UNION ALL) クエリ ステートメントを実装するビューをカプセル化します。

リーリー

3. ビュービュー:
3.1 ビュー名を表示するための SHOW TABLES ステートメント:
SHOW TABLES ステートメントを実行すると、テーブル名だけでなくビュー名も表示できます。

例:


リーリー

3.2 ビューの詳細を表示するための SHOW TABLE STATUS ステートメント:

SHOW TABLES ステートメントと同様に、SHOW TABLE STATUS ステートメントはテーブルの詳細情報を表示するだけでなく、ビューの詳細情報も表示します。

構文は次のとおりです:


テーブルステータスを表示 [db_name から] [「パターン」のように]
//パラメータ db_name はデータベースの設定に使用されます。 SHOW TABLES STATUS は、設定されたライブラリのテーブルとビューの詳細情報が表示されることを意味します。
//特定のテーブルまたはビューに関する詳細情報を表示するには、LIKE キーワードを設定します。例: SHOW TABLE STATUS FROM zhaojd LIKE 't_group' G
例:

リーリー

3.3 SHOW CREATE VIEW语句查看视图定义信息:

语法为:
 SHOW CREATE VIEW viewname;
 示例:

 mysql> show create view view_test8 \G
*************************** 1. row ***************************
View: view_test8
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_test8` AS select `t_student`.`id` AS `id`,
`t_student`.`NAME` AS `name` from `t_student` union all select `t_group`.`id` AS `id`,`t_group`.`NAME` AS `name` from `t_group`
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec)
//根据执行结果可以发现,SHOW CREATE VIEW语句返回两个字段,分别为表示视图名的View字段和关于视图定义的Create view字段。
ログイン後にコピー

3.4 DESCRIBE | DESC 语句查看视图定义信息:

语法为:
DESCRIBE | DESC viewname;
示例:

mysql> desc view_test8;
+-------+-------------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id  | int(11)   | NO  |   | 0    |    |
| name | varchar(20) | YES |   | NULL  |    |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.02 sec) 
ログイン後にコピー

3.5 通过系统表查看视图信息:
当MySQL安装成功后,会自动创建系统数据库infomation_schema。在该数据库中存在一个包含视图信息的表格,可以通过查看表格views来查看所有视图的相关信息。

示例:

mysql> use information_schema;
Database changed
mysql> select * from views where table_name='view_test8' \G
*************************** 1. row ***************************
    TABLE_CATALOG: def
    TABLE_SCHEMA: zhaojd
     TABLE_NAME: view_test8
   VIEW_DEFINITION: select `zhaojd`.`t_student`.`id`AS`id`,`zhaojd`.`t_student`.`NAME` AS `name` from `zhaojd`.`t_student` union all select `zhaojd`.`t_group`.`id` AS`id`,`zhaojd`.`t_group`.`NAME` AS `name` from `zhaojd`.`t_group`
    CHECK_OPTION: NONE
    IS_UPDATABLE: NO
       DEFINER: root@localhost
    SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
1 row in set (0.01 sec)
ログイン後にコピー

4.删除视图:
在删除视图时首先要确保拥有删除视图的权限。

语法为:
DROP VIEW view_name [,view_name] ......
//从语法可以看出,DROP VIEW一次可以删除多个视图
示例:

mysql> use zhaojd;
Database changed
mysql> show tables;
+------------------+
| Tables_in_zhaojd |
+------------------+
| t_group     |
| t_product    |
| t_student    |
| v_product    |
| view_test1    |
| view_test2    |
| view_test3    |
| view_test4    |
| view_test5    |
| view_test6    |
| view_test8    |
+------------------+
11 rows in set (0.00 sec)
mysql> drop view view_test1, view_test2;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+------------------+
| Tables_in_zhaojd |
+------------------+
| t_group     |
| t_product    |
| t_student    |
| v_product    |
| view_test3    |
| view_test4    |
| view_test5    |
| view_test6    |
| view_test8    |
+------------------+
9 rows in set (0.00 sec)
ログイン後にコピー

5.修改视图:
5.1 CREATE OR REPLACE VIEW语句修改视图:
对于已经创建好的表,尤其是已经有大量数据的表,通过先删除,然后再按照新的表定义重新建表的方式来修改表,需要做很多额外的工作,例如数据的重载等。可是对于视图来说,由于是“虚表”,并没有存储数据,所以完全可以通过该方式来修改视图。

实现思路就是:先删除同名的视图,然后再根据新的需求创建新的视图即可。

DROP VIEW view_name; 
CREATE VIEW view_name as 查询语句;
ログイン後にコピー

但是如果每次修改视图,都是先删除视图,然后再次创建一个同名的视图,则显得非常麻烦。于是MySQL提供了更方便的实现替换的创建视图的语法,完整语法为:

CREATE OR REPLACE VIEW view_name as 查询语句;

 5.2 ALTER语句修改视图:

语法为:

ALTER VIEW view_name as 查询语句;

6.利用视图操作基本表: 
再MySQL中可以通常视图检索基本表数据,这是视图最基本的应用,除此之后还可以通过视图修改基本表中的数据。 
6.1检索(查询)数据: 
    通过视图查询数据,与通过表进行查询完全相同,只不过通过视图查询表更安全,更简单实用。只需要把表名换成视图名即可。 
6.2利用视图操作基本表数据: 
    由于视图是“虚表”,所以对视图数据进行的更新操作,实际上是对其基本表数据进行的更新操作。在具体更新视图数据时,需要注意以下两点;
    1. 对视图数据进行添加、删除直接影响基本表。
    2. 视图来自于多个基本表时,不允许添加、删除数据。
    视图中的添加数据操作、删除数据操作、更新数据操作的语法同表完全相同。只是将表名换成视图名即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

Redis ExporterサービスでRedis Dropletを監視します Redis ExporterサービスでRedis Dropletを監視します Apr 10, 2025 pm 01:36 PM

Redisデータベースの効果的な監視は、最適なパフォーマンスを維持し、潜在的なボトルネックを特定し、システム全体の信頼性を確保するために重要です。 Redis Exporter Serviceは、Prometheusを使用してRedisデータベースを監視するために設計された強力なユーティリティです。 このチュートリアルでは、Redis Exporterサービスの完全なセットアップと構成をガイドし、監視ソリューションをシームレスに構築します。このチュートリアルを研究することにより、完全に動作する監視設定を実現します

SQLデータベースエラーを表示する方法 SQLデータベースエラーを表示する方法 Apr 10, 2025 pm 12:09 PM

SQLデータベースエラーを表示する方法は次のとおりです。1。エラーメッセージを直接表示します。 2。エラーを表示し、警告コマンドを表示します。 3.エラーログにアクセスします。 4.エラーコードを使用して、エラーの原因を見つけます。 5.データベース接続とクエリ構文を確認します。 6.デバッグツールを使用します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

See all articles