Dieser Artikel bietet Ihnen eine Einführung in die Einführung und den Betrieb von MySQL-Ansichten (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.
1. Vorbereitung
Erstellen Sie zwei Tabellen Saldo (Saldentabelle) und Kunde (Kundentabelle) in der MySQL-Datenbank und fügen Sie Daten ein.
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;
Fügen Sie jeweils 3 Daten in die Kundentabelle und die Saldentabelle ein.
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);
Eine Ansicht kann einfach als virtuelle Tabelle verstanden werden. Sie unterscheidet sich von der realen Datentabelle in der Datenbank die Abfrage der realen Tabelle. Ansichten haben eine ähnliche Struktur wie echte Tabellen. Ansichten unterstützen auch Vorgänge wie das Aktualisieren, Abfragen und Löschen realer Tabellen. Warum brauchen wir also Ansichten?
a. Verbessern Sie die Sicherheit der realen Tabelle: Die Ansicht ist virtuell, und Sie können dem Benutzer nur die Berechtigungen der Ansicht erteilen, ohne die Berechtigungen der realen Tabelle zu erteilen, was eine Rolle beim Schutz der realen Tabelle spielt Tisch.
b. Angepasste Anzeige von Daten: Basierend auf derselben tatsächlichen Tabelle können Daten angepasst werden, um Daten für Benutzer mit unterschiedlichen Anforderungen in verschiedenen Ansichten anzuzeigen.
c. Vereinfachte Datenoperationen: Es eignet sich für Szenarien, in denen Abfrageanweisungen komplex sind und häufig verwendet werden, und kann über Ansichten implementiert werden.
......
Es ist zu beachten, dass für ansichtsbezogene Vorgänge entsprechende Berechtigungen des Benutzers erforderlich sind. Für die folgenden Vorgänge wird der Root-Benutzer verwendet, und der Standardbenutzer verfügt über Betriebsberechtigungen.
create view <视图名称> as <select语句>;
Um den Ansichtsnamen zu ändern, können Sie ihn zuerst löschen und dann mit derselben Anweisung erstellen.
#更新视图结构 alter view <视图名称> as <select语句>; #更新视图数据相当于更新实际表,不适用基于多表创建的视图 update ....
Hinweis: Die Daten einiger Ansichten können nicht aktualisiert werden, das heißt, sie können nicht mit update, insert und anderen Anweisungen aktualisiert werden, wie zum Beispiel:
a Die select-Anweisung enthält mehrere Tabellen
b. Ansicht enthält die Klausel „withing“
c
Erstellen Sie eine Ansicht basierend auf einer einzelnen Tabelle
drop view <视图名称>
mysql> create view bal_view -> as -> select * from balance; Query OK, 0 rows affected (0.22 sec)
#查询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)
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
Fazit: Wenn sich die Daten in der Ansichtstabelle ändern, ändern sich auch die Daten in der realen Tabelle.
Erstellen Sie eine Ansicht basierend auf mehreren Tabellen
Erstellen Sie eine Ansicht „cus_bal“ mit zwei Feldern: Kundenname und Kontostand.
mysql> select * from bal_view where id=1; +----+------------+---------+ | id | customerId | balance | +----+------------+---------+ | 1 | 1 | 2000.00 | +----+------------+---------+ 1 row in set (0.03 sec)
Ansicht ändern
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)
Ansichten ändern, die auf der Grundlage mehrerer Tabellen erstellt wurden
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)
Ansicht cus_bal löschen
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'
[Verwandte Empfehlungen:
MySQL-TutorialDas obige ist der detaillierte Inhalt vonEinführung in MySQL-Ansichten und -Operationen (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!