mysql:11297
From: "zen kishimoto" <"zen kishimoto" <zen@xxxxxxxxxx>>
Date: Thu, 31 Mar 2005 11:25:05 -0800
Subject: [mysql 11297] MySQL 5.0 の新しい機能: View
http://dev.mysql.com/tech-resources/articles/mysql-views.html MySQL 5.0 の新しい機能: View Trudy Pelzer著 初めに この記事は第五版での新機能を知りたいMySQLユーザのため のものです。簡単に言えば「stored procedure, trigger, viewと インフォーメーションスキーマ」です。もっとも詳しく言えば MySQL 5.0 新機能シリーズに述べられているものです。 これはこのシリーズの3番目のものです。 コンベンションとスタイル 実際のコード、例えばmysqlのクライアント・プログラム のスクリーンから直接取り出す場合は違うフォントで示します。 (注:テキストでは示せません。) 例: mysql> DROP VIEW v CASCADE; Query OK, 0 rows affected (0.00 sec) 例が大きくてある特定の場所に注目したいとき は、ハイライトしたりページの右に小さな矢印を 示します。 例: mysql> CREATE VIEW v AS -> SELECT column1 AS c /* view col name is c */ -> FROM table1; Query OK, 0 rows affected (0.01 sec) 時々、mysql> と -> promptsを省略してあります。これはこの部分を 切り取って、あなたのプログラムにペーストできるようにです。 この記事の全ての例はSUSE Linux(version 9.1)上で MySQL 5.0.3のアルファ版を使ってテストしてあります。これを 読まれる時には版の番号は変わっているかも知れません。 また違うOSをサポートしているかも知れません。 それで多分全ての例をあなたのコンピュータ上で実行できる と思います。 定義と例 テーブルとは1つまたそれ以上の列とゼロかそれ以上 の行からなっています。 +---------------+---------------+-------+ | column name | column name | ... | +---------------+---------------+-------+ | column value | column value | ... | | ... | ... | ... | +---------------+---------------+-------+ MySQLとMyISAM ストレッジ・エンジンではテーブルのコンテンツ (列の値)は2つのファイルに収納されて(.MYD と.MYI データ とインデクス・ファイル)ディスクに格納されます。 このタイプのテーブルはベース・テーブルです。なぜベース と呼ばれるかというと、これは基本的、基礎的でストラクチャ の根底だからです。ベーステーブルの次の段階はderivedテーブルで これは列の値がベース・テーブル、literalまたはCURRENT_TIME のような環境変数から来ます。 derivedテーブルをSQLで生成します。 これは "FROM table1, table2"または"GROUP BY x" または単に "SELECT ..."のコマンドで出来ます。 テーブルを指定すると これら全てのオペレーション使うと他のテーブルを生成します。 SELECTが生成するテーブルは結果セットです。名前はありません。 結果セットに名前をつけてその名前を格納すると (この定義に関連したデータと共に、例えばメタデータ)、 viewつきのテーブルができます。省略してviewと呼びます。 それで: Viewはデータベースの永続的な定義の部分に名前がついている derived テーブルです。 viewを形成するにはCREATE VIEWというコマンドにViewの名前 を加えます。それにViewを定義するSELECTを追加します。 例は mysql> CREATE VIEW v AS SELECT column1 FROM t; Query OK, 0 rows affected (0.01 sec) 常にviewからSELECTできます。viewにはアップデートできる ものもあります。ViewにはINSERTやDELETEが出来ます。 アップデートできるviewは「挿入可能」つまりviewにINSERTできます。 例は mysql> INSERT INTO v VALUES (1); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM v; +---------+ | column1 | +---------+ | 1 | +---------+ 1 row in set (0.00 sec) 続き 全部の記事は長いので、PDFにしました。残りは http://dev.mysql.com/tech-resources/articles/mysql-views.pdf (登録は必要ありませんが、翻訳版はありません。) --------------------- Zen Kishimoto www.ipdevices.com IP Devices, Inc. zen@xxxxxxxxxx 2175 De La Cruz Blvd., Suite 10 (408) 567-9391 Santa Clara, CA 95050 (801) 720-8847 (FAX)