序文 ビューは、データベース システム内で非常に便利なデータベース オブジェクトです。 MySQL 5.0 以降のバージョンでは、ビューのサポートが追加されました。 ビューを理解する ビューは、クエリによって内容が定義される仮想テーブルです。実際のテーブルと同様に、ビューには一連の名前付き列と行データが含まれますが、ビューは実際にデータベースに格納されるデータ テーブルではありません。 ビューは、一連の名前付き列といくつかの行を含む、1 つ以上のテーブルまたはビューから派生したテーブルです。 ビューは、次の点でテーブルと異なります。
ビューとテーブルは本質的に異なりますが、ビューが定義されると、その構造はテーブルと同じになり、クエリ、変更、更新、削除などの操作を実行できます。 1. 準備 MySQL データベースに balance と customer の 2 つのテーブルを作成し、データを挿入します。 顧客テーブルを作成( id int(10) 主キー、 名前 char(20) が null ではない、 役割 char(20) nullではない、 電話 char(20) が null ではない、 性別文字(10)がNULLではない、 アドレス char(50) が null でない )ENGINE=InnoDB デフォルト文字セット=utf8; #外部キーはcustomerIdです テーブルバランスを作成( id int(10) 主キー、 顧客ID int(10) が null ではない、 残高 DECIMAL(10,2)、 外部キー(顧客ID)は顧客(ID)を参照します )ENGINE=InnoDB デフォルト文字セット=utf8; 顧客テーブルと残高テーブルにそれぞれ 3 つのレコードを挿入します。 顧客値に挿入します(0001、"xiaoming"、'vip1'、'12566666'、'男性'、'江寧区888号')。 顧客値に挿入します(0002,"xiaohong",'vip10','15209336760','男性','No. 888, Jianye District'); 顧客値に挿入します(0003,"xiaocui",'vip11','15309336760','女性','新街口888号'); バランス値(1,0001,900.55)に挿入します。 残高に値(2,0002,900.55)を挿入します。 バランス値(3,0003,10000)に挿入します。 2. 概要を表示 ビューは、簡単に言えば仮想テーブルです。データベース内の実際のデータ テーブルとは異なります。ビュー内のデータは、実際のテーブルのクエリに基づいて取得されます。ビューは実際のテーブルと同様の構造を持ちます。ビューは、実際のテーブルの更新、クエリ、削除などの操作もサポートします。では、なぜビューが必要なのでしょうか? a. 実テーブルのセキュリティを強化する: ビューは仮想です。実テーブルへの権限を付与せずに、ユーザーにビュー権限のみを付与することで、実テーブルを保護できます。 b. データのカスタマイズされた表示: 同じ実際のテーブルに基づいて、さまざまなビューを使用して、さまざまなニーズを持つユーザー向けにデータの表示をカスタマイズできます。 c. データ操作の簡素化: これは、クエリ ステートメントが複雑で頻繁に使用されるシナリオに適しており、ビューを通じて実現できます。 ...... ビュー関連の操作を行うには、ユーザーが対応する権限を持っている必要があることに注意してください。以下の操作は root ユーザーを使用して実行され、デフォルト ユーザーに操作権限が与えられます。 ビュー構文の作成
ビュー構文を変更する ビュー名を変更するには、まずビューを削除し、次に同じステートメントを使用してビューを作成します。 # ビュー構造を更新します。 alter view <ビュー名> as <選択ステートメント>; #ビュー データの更新は実際のテーブルの更新と同じであり、複数のテーブルに基づいて作成されたビューには適用されません。 注意:一部のビューのデータは更新できません。つまり、update や insert などのステートメントを使用して更新することはできません。次に例を示します。 a. 選択ステートメントに複数のテーブルが含まれている b. ビューにhaving句が含まれている c. 試行には異なるキーワードが含まれている ...... ビュー構文の削除
3. 表示操作 単一のテーブルに基づくビューの作成 mysql> ビューbal_viewを作成 -> として -> バランスから*を選択します。 クエリは正常、影響を受けた行は 0 行 (0.22 秒) 作成が完了したら、bal_view の構造とレコードを表示します。ビューを通じてデータをクエリして得られた結果は、実際のテーブルをクエリして得られた結果とまったく同じであることがわかります。 #bal_viewの構造を照会するmysql> desc bal_view; +------------+---------------+------+-----+--------+-------+ | フィールド | タイプ | Null | キー | デフォルト | 追加 | +------------+---------------+------+-----+--------+-------+ | id | int(10) | いいえ | | NULL | | | 顧客ID | int(10) | いいえ | | NULL | | | 残高 | 小数点(10,2) | はい | | NULL | | +------------+---------------+------+-----+--------+-------+ 3 行セット (0.07 秒) #bal_view 内のレコードをクエリしますmysql> select * from bal_view; +----+------------+----------+ | ID | 顧客ID | 残高 | +----+------------+----------+ | 1 | 1 | 900.55 | | 2 | 2 | 900.55 | | 3 | 3 | 10000.00 | +----+------------+----------+ セット内の 3 行 (0.01 秒) ビューを作成するステートメントから結論付けるのは難しくありません。実際のテーブル内のデータが変更されると、ビュー内のデータもそれに応じて変更されます。では、ビュー内のデータが変更されると、実際のテーブル内のデータも変更されるのでしょうか?実験して、id=1 の顧客の残高を 2000 に変更してみましょう。 mysql> bal_view を更新し、balance=2000 に設定します。ここで、id=1 です。 クエリは正常、1 行が影響を受けました (0.05 秒) 一致した行: 1 変更された行: 1 警告: 0 実際のテーブル残高のデータを見てみましょう。 mysql> bal_view から * を選択します (id=1); +----+------------+---------+ | ID | 顧客ID | 残高 | +----+------------+---------+ | 1 | 1 | 2000.00 | +----+------------+---------+ セット内の1行(0.03秒) 結論: ビュー テーブルのデータが変更されると、実際のテーブル内のデータもそれに応じて変更されます。 複数のテーブルに基づくビューの作成 顧客名と残高の 2 つのフィールドを持つビュー cus_bal を作成します。 mysql> ビュー cus_bal を作成 -> (cname,bal) -> として -> customer、balance から customer.name、balance.balance を選択します -> ここで、customer.id=balance.customerId; クエリは正常、影響を受けた行は 0 行 (0.05 秒) #cus_bal のデータを表示します。mysql> select * from cus_bal; +----------+-----------+ | cname | bal | +----------+-----------+ | 暁明 | 2000.00 | | シャオホン | 900.55 | | シャオキュイ | 10000.00 | +----------+-----------+ 3 列セット (0.28 秒) ビューを変更する cus_bal ビューで cname を cusname に変更します。 mysql> ビュー cus_bal を変更する -> (お客様の名前,bal) -> として -> customer、balance から customer.name、balance.balance を選択します -> ここで、customer.id=balance.customerId; クエリは正常、影響を受けた行は 0 行です (0.06 秒) #変更されたビュー構造を表示します。 mysql> desc cus_bal; +---------+---------------+------+-----+--------+-------+ | フィールド | タイプ | Null | キー | デフォルト | 追加 | +---------+---------------+------+-----+--------+-------+ | cusname | char(20) | NO | | NULL | | | bal | 小数点(10,2) | はい | | NULL | | +---------+---------------+------+-----+--------+-------+ セット内の 2 行 (0.00 秒) 複数のテーブルに基づいて作成されたビューを変更する mysql> cus_bal(cusname,bal) に値 ("ee",11) を挿入します。 エラー 1393 (HY000): 結合ビュー 'rms.cus_bal' を通じて複数の基本テーブルを変更することはできません ビューの削除 ビューcus_balを削除します ビュー cus_bal を削除します。 mysql> ビュー cus_bal を削除します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Vueは左上と右上のスライドナビゲーションを実装します
>>: Linux で Oracle データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル
mysql の存在する例と存在しない例の詳細な説明テーブルA |列1 | 列1 | 列3 |テーブル...
1. はじめにEXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情...
序文これまでは、/bin/ ディレクトリのソフトリンクを変更して Python のバージョンを切り替...
レプリケーションとは、マスター データベースの DDL および DML 操作をバイナリ ログを介して...
目次導入取引の4つの特徴トランザクション分離レベル確認するMVCC現在の読書スナップショット読み取り...
この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...
1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...
個々のウェブマスターにとって、自分のウェブサイトをいかにユニークで個性あふれるものにするかは、常に絶...
MySQL データベースの作成MySQL サービスにログインしたら、create コマンドを使用し...
1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...
3つのモードブリッジ(ブリッジ モード)、NAT(ネットワーク アドレス変換モード)、ホストオンリー...
ページ、特にホームページを作成するときは、通常、Web サイト全体の他のメイン ページにリンクできる...
1 つのサーバー上で 3 つの MySQL インスタンス プロセスが開始され、それぞれ異なるポート ...
本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。...
目次解決策1: レプリカを再構築する前提条件アドバンテージ欠点手順マスター奴隷解決策2: データ修復...