この記事は、MySQL ビューの導入と操作 (コード付き) を紹介します。一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。
1. 準備
MySQL データベースに、balance (残高テーブル) と customer (顧客テーブル) の 2 つのテーブルを作成し、データを挿入します。
create table customer( id int(10) primary key, name char(20) not null, role char(20) not null, phone char(20) not null, sex char(10) not null, address char(50) not null )ENGINE=InnoDB DEFAULT CHARSET=utf8; #外键为customerId create table balance( id int(10) primary key, customerId int(10) not null, balance DECIMAL(10,2), foreign key(customerId) references customer(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
顧客テーブルと残高テーブルにデータを 3 つずつ挿入します。
insert into customer values(0001,"xiaoming",'vip1','12566666','male','江宁区888号'); insert into customer values(0002,"xiaohong",'vip10','15209336760','male','建邺区888号'); insert into customer values(0003,"xiaocui",'vip11','15309336760','female','新街口888号'); insert into balance values(1,0001,900.55); insert into balance values(2,0002,900.55); insert into balance values(3,0003,10000);
ビューは、単に仮想テーブルとして理解できます。データベース内の実際のデータ テーブルとは異なります。ビュー内のデータは、以下に基づいて取得されます。実際のテーブルのクエリ。ビューは実際のテーブルと同様の構造を持っています。ビューは、実際のテーブルの更新、クエリ、削除などの操作もサポートします。では、なぜビューが必要なのでしょうか?
a. 実テーブルのセキュリティの向上: ビューは仮想であり、実テーブルの権限を付与せずにユーザーにビューの権限のみを付与できます。これは、実テーブルを保護する役割を果たします。テーブル。
b. データのカスタマイズされた表示: 同じ実際のテーブルに基づいて、データをカスタマイズして、さまざまなビューを通じてさまざまなニーズを持つユーザーにデータを表示できます。
c. データ操作の簡素化: クエリ ステートメントが複雑で頻繁に使用されるシナリオに適しており、ビューを通じて実装できます。
......
ビュー関連の操作には、ユーザーが対応する権限を持っている必要があることに注意してください。以下の操作はrootユーザーで行い、デフォルトユーザーが操作権限を持っています。
create view <视图名称> as <select语句>;
ビュー名を変更するには、まずビューを削除してから、同じステートメントで作成します。
#更新视图结构 alter view <视图名称> as <select语句>; #更新视图数据相当于更新实际表,不适用基于多表创建的视图 update ....
注: 一部のビューのデータは更新できません。つまり、update、insert、および次のような他のステートメントを使用して更新できません。
a、select ステートメントには複数のテーブルが含まれています
b, view には、having 句
c が含まれており、ビューには個別のキーワードが含まれています
...
drop view <视图名称>
mysql> create view bal_view -> as -> select * from balance; Query OK, 0 rows affected (0.22 sec)
作成が完了したら、bal_view の構造とレコードを表示します。ビューを介してデータをクエリすることによって得られる結果は、実際のテーブルを介してクエリを実行する場合とまったく同じであることがわかります。
#查询bal_view的结构 mysql> desc bal_view; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | id | int(10) | NO | | NULL | | | customerId | int(10) | NO | | NULL | | | balance | decimal(10,2) | YES | | NULL | | +------------+---------------+------+-----+---------+-------+ 3 rows in set (0.07 sec) #查询bal_view中的记录 mysql> select * from bal_view; +----+------------+----------+ | id | customerId | balance | +----+------------+----------+ | 1 | 1 | 900.55 | | 2 | 2 | 900.55 | | 3 | 3 | 10000.00 | +----+------------+----------+ 3 rows in set (0.01 sec)
ビューの作成ステートメントから結論を引き出すのは難しくありません。実際のテーブル内のデータが変更されると、それに応じてビュー内のデータも変更されます。では、ビュー内のデータが変更されると、実際のテーブル内のデータも変更されるのでしょうか? id=1~2000の顧客の残高を変更して実験してみましょう。
mysql> update bal_view set balance=2000 where id=1; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0
実際のテーブル残高のデータを見てみましょう。
mysql> select * from bal_view where id=1; +----+------------+---------+ | id | customerId | balance | +----+------------+---------+ | 1 | 1 | 2000.00 | +----+------------+---------+ 1 row in set (0.03 sec)
結論: ビュー表のデータが変更されると、それに応じて実際の表のデータも変更されます。
顧客名と残高の 2 つのフィールドを持つビュー cus_bal を作成します。
mysql> create view cus_bal -> (cname,bal) -> as -> select customer.name,balance.balance from customer ,balance -> where customer.id=balance.customerId; Query OK, 0 rows affected (0.05 sec) #查看cus_bal中的数据 mysql> select * from cus_bal; +----------+----------+ | cname | bal | +----------+----------+ | xiaoming | 2000.00 | | xiaohong | 900.55 | | xiaocui | 10000.00 | +----------+----------+ 3 rows in set (0.28 sec)
cus_bal ビューの cname を cusname に変更します。
mysql> alter view cus_bal -> (cusname,bal) -> as -> select customer.name,balance.balance from customer ,balance -> where customer.id=balance.customerId; Query OK, 0 rows affected (0.06 sec) #查看修改后视图结构。 mysql> desc cus_bal; +---------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------------+------+-----+---------+-------+ | cusname | char(20) | NO | | NULL | | | bal | decimal(10,2) | YES | | NULL | | +---------+---------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
複数のテーブルに基づいて作成されたビューの変更
mysql> insert into cus_bal(cusname,bal) values ("ee",11); ERROR 1393 (HY000): Can not modify more than one base table through a join view 'rms.cus_bal'
ビューの削除 cus_bal
drop view cus_bal; mysql> drop view cus_bal; Query OK, 0 rows affected (0.00 sec)
[関連する推奨事項: MySQL チュートリアル]
以上がMySQL のビューと操作の概要 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。