序文 ビューは、データベース システム内で非常に便利なデータベース オブジェクトです。 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 データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル
この記事の例では、すべてのチェックボックスの選択を実現するためのJavaScriptの具体的なコード...
前述のこの記事はとても短いです〜主な目的は、モバイル端末上のクリックと js イベントのメカニズムに...
HTML は Hypertext Markup Language の略です。これは、実際のプレゼンテ...
実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配...
目次まず効果を見てみましょう:成し遂げる:要約:まず効果を見てみましょう: 成し遂げる: 1. ナビ...
目次解決策1解決策2テーブルを作成するときに、興味深い問題に遭遇しました。「指定されたキーが長すぎま...
1. Dockerネットワークカードを作成する [root@i ~]# brctl addbr d...
ワンクリック実行仮想マシンに Python 3.8 をインストールするには、ネットワーク アダプター...
この記事では、CentOS 7 で高可用性 Hadoop 2.10 クラスターを構築する方法を紹介し...
目次1. innodb_buffer_pool_size 2. innodb_log_buffer_...
目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...
1.mysql-5.7.19-winx64.zip(これは無料のインストールバージョンで、約318 ...
目次1. 使用方法1. 基本的な使い方2. 2番目のパラメータ - フィルター3. 3番目のパラメー...
ユーザーのホーム ディレクトリがどんどん大きくなってきたら、ホーム ディレクトリを新しいパーティショ...
目次ストレージエンジンMySQL でサポートされているストレージ エンジン同時実行制御ロック粒子をロ...