Apa itu Tampilan MySQL?
Tampilan MySQL hanyalah objek database biasa yang dapat menghemat banyak waktu bagi penulis kueri SQL bila digunakan dengan benar. Tampilan adalah kueri tersimpan yang dapat dirujuk pengguna seperti tabel. Banyak kali pengguna akan menemukan diri mereka menggunakan kueri dasar yang sama berulang-ulang untuk memecahkan banyak masalah. Tampilan adalah cara cepat menyimpan kueri itu dan merujuknya nanti.
Apa Keuntungan Menggunakan Tampilan?
Tampilan memiliki beberapa keunggulan. Pertama, tampilan muncul ke pengguna MySQL seperti tabel. Klausa SELECT dapat mereferensikan tampilan persis seperti tabel. Keuntungan lain adalah ketika tabel yang mendasari yang direferensikan oleh tampilan berubah, hasil tampilan juga berubah. Keuntungan ketiga adalah tampilan hanya membutuhkan sedikit ruang di server. Hasil SQL tampilan dihitung setiap kali diakses, sehingga tidak disimpan di server sampai diakses.
Tabel untuk Latihan ini
Untuk artikel ini, database akan dibuat berisi informasi tentang musim balap mobil fiksi yang menampilkan tiga pembalap, empat trek, dan satu balapan di setiap trek. Dalam database ini, ada empat tabel.
- Pengemudi
- Trek
- Balapan
- Selesai
Struktur tabel seperti yang dijelaskan di bawah ini.
create table drivers
(
id int auto_increment,
name varchar(64) not null,
car_number int not null,
constraint drivers_pk
primary key (id)
);
create table tracks
(
id int auto_increment,
name varchar(64) not null,
location varchar(64) not null,
constraint track_pk
primary key (id)
);
create table races
(
id int auto_increment,
name varchar(64) not null,
track int not null,
distance int not null,
constraint races_pk
primary key (id)
);
create table finishes
(
id int auto_increment,
driver int not null,
race int not null,
position int not null,
constraint finishes_pk
primary key (id)
);
Pengemudi
Sekarang, pada langkah selanjutnya, kita akan memasukkan tiga pengemudi dan nomor mobil mereka ke dalam tabel.
- Buddy Baker 28
- Dale Earnhardt Jr. 8
- Ricky Rudd 88
insert into drivers (name,car_number) values
('Buddy Baker',28),
('Dale Earnhardt Jr.',8),
('Ricky Rudd',88);
Hasil kami sekarang akan menampilkan output berikut.
ID | Nama | Nomor Mobil |
1 | Buddy Baker | 28 |
2 | Dale Earnhardt Jr. | 8 |
3 | Ricky Rudd | 88 |
Lintasan Balap
Selanjutnya, kami menambahkan empat arena pacuan kuda dan lokasinya.
- Talladega Superspeedway - Lincoln, AL
- Daytona International Speedway - Pantai Daytona, FL
- Indianapolis Motor Speedway - Speedway, IN
- Michigan International Speedway - Brooklyn, MI
insert into tracks (name,location) values
('Talladega Superspeedway','Lincoln, AL'),
('Daytona International Speedway','Daytona Beach, FL'),
('Indianapolis Motor Speedway','Speedway, IN'),
('Michigan International Speedway','Brooklyn, MI');
Hasil kami sekarang akan menampilkan output berikut.
ID | Nama | Lokasi |
1 | Talladega Superspeedway | Lincoln, AL |
2 | Daytona International Speedway | Pantai Daytona, FL |
3 | Jalur Balap Motor Indianapolis | Speedway, IN |
4 | Michigan International Speedway | Brooklyn, MI |
Balapan
Sekarang, empat balapan, bersama dengan jarak untuk masing-masing, diikutsertakan.
- Daytona 500 ,2,500
- Talladega 500.1,500
- Brickyard 400,3, 400
- Michigan 400 ,4, 400
insert into races (name,track,distance) values
('Daytona 500',2,500),
('Talladega 500',1,500),
('Brickyard 400',3,400),
('Michigan 400',4,'400');
Hasil kami sekarang akan menampilkan output berikut.
ID | Nama | Lacak | Jarak |
1 | Talladega 500 | 2 | 500 |
2 | Daytona 500 | 1 | 500 |
3 | Brickyard 400 | 3 | 400 |
4 | Michigan 400 | 4 | 400 |
Hasil
Akhirnya, tabel untuk awal musim sekarang dibuat.
Pada balapan pertama di Daytona 500:
- Ricky Rudd finis pertama
- Dale Earnhardt Jr finis kedua
- Buddy Baker finis ketiga.
insert into finishes (driver, race, position) values
(1,1,3),
(2,1,2),
(3,1,1);
Data Terkompilasi
Masukan Data Pertama
Sekarang ada data aktual untuk kueri. Jika kami menjalankan kueri untuk melihat semua hasil pembalap dengan trek dan balapan yang sesuai, ini agak rumit karena ada beberapa gabungan.
select d.name as driver,
r.name as race,
t.name as track,
t.location as location,
f.position as position
from finishes f
left join races r
on f.race = r.id
left join tracks t
on r.track = t.id
left join drivers d
on d.id = f.driver;
Hasil kami sekarang menunjukkan output berikut.
Driver | Balapan | Lacak | Lokasi | Posisi |
Buddy Baker | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 3 |
Dale Earnhardt Jr. | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 2 |
Ricky Rudd | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 1 |
Masukan Data Kedua
Saat balapan kedua, Talladega 500, data ditambahkan, kueri dapat ditulis lagi, sama seperti kueri sebelumnya. Dalam perlombaan ini, Dale Earnhardt berada di urutan pertama, dan Buddy Baker berada di urutan kedua.
insert into finishes (driver, race, position) values
(1,2,2),
(2,2,1),
(3,2,3);
Hasil query di atas akan terlihat seperti ini.
Driver | Balapan | Lacak | Lokasi | Posisi |
Buddy Baker | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 3 |
Dale Earnhardt Jr. | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 2 |
Ricky Rudd | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 1 |
Buddy Baker | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 2 |
Dale Earnhardt, Jr. | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 1 |
Ricky Rudd | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 3 |
Buat Tampilan
Sekarang ada banyak balapan di database, ada cara baru untuk melihat hasilnya. Kueri dapat ditulis untuk “Penyelesaian Terbaik ” dan “Kemenangan Terbanyak .” Kueri ini semuanya akan dimulai dengan data dasar yang sama tentang apa yang diselesaikan pembalap di setiap posisi balapan. Untuk menyederhanakan proses pengembangan kueri ini, tampilan dapat dibuat dengan klausa "buat atau ganti tampilan sebagai". Klausa ini diikuti oleh SQL yang akan disimpan. Dalam hal ini, itu ditambahkan sebelum kueri sebelumnya yang kami tunjukkan di atas.
create or replace view all_finishes as
select d.name as driver,
r.name as race,
t.name as track,
t.location as location,
f.position as position
from finishes f
left join races r
on f.race = r.id
left join tracks t
on r.track = t.id
left join drivers d
on d.id = f.driver;
Hasilnya adalah fitur yang kuat dari SQL. Hasil ini sekarang menjadi sesuatu yang tampak seperti tabel tetapi akan berubah ketika informasi baru ditambahkan ke tabel yang mendasarinya. Ayo jalankan kueri ini.
select * from all_finishes;
Driver | Balapan | Lacak | Lokasi | Posisi |
Buddy Baker | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 3 |
Dale Earnhardt Jr. | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 2 |
Ricky Rudd | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 1 |
Buddy Baker | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 2 |
Dale Earnhardt, Jr. | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 1 |
Ricky Rudd | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 3 |
Hasilnya identik dengan terakhir kali kami menjalankan kueri ini:
Perbedaannya adalah sekarang tampilan dapat di-query seperti tabel. Kueri yang menunjukkan pemenang setiap balapan.
select * from all_finishes where position = 1;
Kueri memberikan hasil ini.
Driver | Balapan | Lacak | Lokasi | Posisi |
Ricky Rudd | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 1 |
Dale Earnhardt, Jr. | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 1 |
Kueri juga dapat ditulis untuk menampilkan pemimpin berdasarkan penyelesaian rata-rata.
select avg(position) as finish,
driver
from all_finishes
group by driver
order by finish;
Yang menunjukkan Dale Earnhardt memimpin sejauh ini untuk musim ini:
Selesai | Driver |
1.5 | Dale Earnhardt, Jr. |
2.0 | Ricky Rudd |
2.5 | Buddy Baker |
Karena tampilan dapat mereferensikan tampilan lain, tampilan yang lebih luas dapat dibuat dengan kueri ini.
create view standings_leader as
select avg(position) as finish,
driver
from all_finishes
group by driver
order by finish;
Hasil query di atas akan terlihat seperti ini.
Selesai | Driver |
1.5 | Dale Earnhardt, Jr. |
2.0 | Ricky Rudd |
2.5 | Buddy Baker |
Serta:
create view race_winners as
select * from all_finishes where position = 1;
Yang memberi kami hasil yang sama.
Driver | Balapan | Lacak | Lokasi | Posisi |
Ricky Rudd | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 1 |
Dale Earnhardt, Jr. | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 1 |
Menambahkan Data
Bagian yang paling kuat dari tampilan adalah ketika kita menambahkan lebih banyak data seperti balapan ini selesai di mana Buddy Baker memenangkan Brickyard 400 dan Michigan 400, kita bisa menanyakan pandangan kita untuk mendapatkan hasil yang sama.
insert into finishes (driver, race, position) values
(1,3,1),
(2,3,3),
(3,3,2);
insert into finishes (driver, race, position) values
(1,4,1),
(2,4,2),
(3,4,3);
Sekarang kita bisa melihat semua selesai dengan kueri ini.
select * from all_finishes;\
Hasil query di atas akan terlihat seperti ini.
Driver | Balapan | Lacak | Lokasi | Posisi |
Buddy Baker | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 3 |
Dale Earnhardt Jr. | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 2 |
Ricky Rudd | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 1 |
Buddy Baker | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 2 |
Dale Earnhardt Jr. | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 1 |
Ricky Rudd | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 3 |
Buddy Baker | Brickyard 400 | Jalur Balap Motor Indianapolis | Speedway, IN | 1 |
Dale Earnhardt Jr. | Brickyard 400 | Jalur Balap Motor Indianapolis | Speedway, IN | 3 |
Ricky Rudd | Brickyard 400 | Jalur Balap Motor Indianapolis | Speedway, IN | 2 |
Buddy Baker | Michigan 400 | Michigan International Speedway | Brooklyn, MI | 1 |
Dale Earnhardt Jr. | Michigan 400 | Michigan International Speedway | Brooklyn, MI | 2 |
Ricky Rudd | Michigan 400 | Michigan International Speedway | Brooklyn, MI | 3 |
Kami juga dapat menjalankan:
select * from race_winners;
Yang memberi kita:
Driver | Balapan | Lacak | Lokasi | Posisi |
Ricky Rudd | Daytona 500 | Daytona International Speedway | Pantai Daytona, FL | 1 |
Dale Earnhardt Jr. | Talladega 500 | Talladega Superspeedway | Lincoln, AL | 1 |
Buddy Baker | Brickyard 400 | Jalur Balap Motor Indianapolis | Speedway, IN | 1 |
Buddy Baker | Michigan 400 | Michigan International Speedway | Brooklyn, MI | 1 |
Juga, ini menghasilkan juara seri:
select * from standings_leader;
Yang menghasilkan:
Selesai | Driver |
2 | Buddy Baker |
2 | Dale Earnhardt, Jr. |
2 | Ricky Rudd |
Kesimpulan
Saat kami menyimpan kueri di server basis data kami (lebih khusus lagi di katalog basis data) dan memberinya nama, kueri yang baru dinamai ini disebut tampilan basis data, atau, lebih sederhana, tampilan. Tampilan MySQL adalah cara yang ampuh untuk menyimpan kueri penting dan dapat digunakan kembali yang dapat membantu kami mempercepat pengambilan informasi penting. Karena tampilan simpan ini dapat mereferensikan tampilan lain, tampilan yang lebih detail dapat dibuat dengan kueri substansial ini.
Beri Nilai Kami!
Kami bangga menjadi Manusia Paling Bermanfaat di Hosting™!
Tim Dukungan kami diisi dengan teknisi Linux berpengalaman dan administrator sistem berbakat yang memiliki pengetahuan mendalam tentang berbagai teknologi hosting web, terutama yang dibahas dalam artikel ini.
Jika Anda memiliki pertanyaan tentang informasi ini, kami selalu tersedia untuk menjawab pertanyaan apa pun dengan masalah yang terkait dengan artikel ini, 24 jam sehari, 7 hari seminggu, 365 hari setahun.
Jika Anda adalah server VPS yang Dikelola Sepenuhnya, Cloud Dedicated, VMWare Private Cloud, server Private Parent, Server Cloud Terkelola, atau pemilik server Dedicated dan Anda tidak nyaman melakukan salah satu langkah yang diuraikan, kami dapat dihubungi melalui telepon @800.580.4985, chat atau tiket dukungan untuk membantu Anda dalam proses ini.