Sebuah tampilan di MySQL adalah kueri bernama yang dapat dipicu untuk menampilkan data yang disimpan di tabel lain. Dengan kata lain, tampilan adalah tabel virtual yang ditentukan pengguna. Tampilan dapat digunakan untuk:
- Tingkatkan keamanan basis data. Jika database Anda berisi informasi sensitif yang perlu diamankan, menggunakan tampilan akan membantu Anda mengisolasi data. Tampilan dapat dibuat dengan kumpulan hasil yang telah ditentukan sebelumnya, dan Anda hanya dapat memberikan akses kepada pengguna ke tampilan tersebut, bukan tabel yang berisi informasi sensitif.
- Pindahkan logika bisnis yang kompleks ke server database. Alih-alih mengkodekan logika perangkat lunak yang sering digunakan di klien yang berbeda, pengembang dapat memindahkan logika ke tingkat basis data menggunakan tampilan. Misalnya, tampilan dapat dibuat untuk menampilkan klasifikasi pelanggan bergantung pada total penjualan mereka.
- Kurangi gangguan data. Tampilan dapat menggabungkan hasil dari tabel yang berbeda dan hanya menampilkan kolom yang relevan saat dipanggil.
Dalam panduan ini Anda akan belajar:
- Bagaimana struktur sintaks tampilan MySQL.
- Cara membuat tampilan MySQL.
- Cara memanggil tampilan MySQL.
- Cara menghapus tampilan di MySQL.
Sebelum Anda Mulai
Untuk mengikuti panduan ini, pastikan Anda memiliki yang berikut:
-
Linode, tempat Anda menjalankan perangkat lunak MySQL. Anda dapat mengikuti panduan Memulai dengan Linode untuk menyediakan Linode.
-
Perangkat lunak server MySQL (atau MariaDB) diinstal pada Linode Anda. Silakan merujuk ke bagian MySQL, yang berisi panduan yang menjelaskan cara menginstal MySQL pada beberapa distribusi Linux.
Menyiapkan Database
Sebelum Anda membuat tampilan MySQL, buat database sampel, tentukan beberapa tabel, dan isi dengan beberapa data terlebih dahulu:
-
SSH ke Linode Anda. Kemudian, masukkan perintah ini untuk masuk ke MySQL sebagai pengguna root:
mysql -u root -p
Saat diminta, masukkan kata sandi root server MySQL Anda dan tekan Enter untuk melanjutkan.
Catatan
Jika kata sandi Anda tidak diterima, Anda mungkin perlu menjalankan perintah sebelumnya dengan
sudo
:sudo mysql -u root -p
-
Jika kata sandi Anda diterima, Anda akan melihat perintah MySQL:
mysql >
Catatan
Jika Anda menggunakan MariaDB, Anda mungkin melihat prompt seperti berikut ini:
MariaDB [(none)]>
-
Selanjutnya, jalankan perintah SQL ini untuk membuat database sampel yang diberi nama
sample_database
:CREATE DATABASE sample_database;
Anda akan melihat output ini, yang mengonfirmasi bahwa database berhasil dibuat:
Query OK, 1 row affected (0.02 sec)
-
Pilih
sample_database
basis data:USE sample_database;
Anda akan melihat keluaran ini:
Database changed
-
Jalankan perintah ini untuk membuat
customers
tabel:CREATE TABLE customers ( customer_id BIGINT PRIMARY KEY AUTO_INCREMENT, customer_name VARCHAR(50) ) ENGINE = InnoDB;
Anda akan melihat keluaran ini:
Query OK, 0 rows affected (0.07 sec)
-
Selanjutnya, isi
customers
tabel dengan tiga catatan. JalankanINSERT
di bawah ini perintah satu per satu:INSERT INTO customers (customer_name) VALUES ('Leslie'); INSERT INTO customers (customer_name) VALUES ('Andy'); INSERT INTO customers (customer_name) VALUES ('Ben');
Output di bawah ini ditampilkan setelah setiap record dimasukkan:
Query OK, 1 row affected (0.08 sec) ...
-
Pastikan catatan sampel dimasukkan ke dalam database dengan menjalankan
SELECT
perintah:SELECT * FROM customers;
Keluaran ini muncul, yang mengonfirmasi bahwa data berhasil dimasukkan pada langkah sebelumnya:
+-------------+---------------+ | customer_id | customer_name | +-------------+---------------+ | 1 | Leslie | | 2 | Andy | | 3 | Ben | +-------------+---------------+ 3 rows in set (0.01 sec)
-
Selanjutnya, buat
sales
meja. Jalankan perintah ini:CREATE TABLE sales ( customer_id BIGINT PRIMARY KEY AUTO_INCREMENT, monthly_sales DECIMAL(17,2) ) ENGINE = InnoDB;
Keluaran ini muncul:
Query OK, 0 rows affected (0.07 sec)
-
Kemudian, tambahkan beberapa data ke
sales
meja. Jalankan perintah ini satu per satu:INSERT INTO sales (customer_id, monthly_sales) VALUES ('1','500.27'); INSERT INTO sales (customer_id, monthly_sales) VALUES ('2','7600.32'); INSERT INTO sales (customer_id, monthly_sales) VALUES ('3', '25879.63');
Setelah memasukkan setiap record penjualan, output ini muncul:
Query OK, 1 row affected (0.01 sec) ...
-
Selanjutnya, jalankan
SELECT
query untuk memverifikasi bahwa data penjualan telah dimasukkan ke dalam tabel:SELECT * FROM sales;
Output ini muncul, yang mengkonfirmasi bahwa data penjualan berhasil dimasukkan pada langkah sebelumnya:
+-------------+---------------+ | customer_id | monthly_sales | +-------------+---------------+ | 1 | 500.27 | | 2 | 7600.32 | | 3 | 25879.63 | +-------------+---------------+ 3 rows in set (0.00 sec)
Anda telah menentukan database dan tabel untuk dikerjakan. Bagian selanjutnya menjelaskan sintaks tampilan MySQL.
Sintaks Tampilan MySQL
Ini adalah versi sederhana dari sintaks tampilan MySQL:
CREATE
VIEW view_name
AS select_statement
-
view_name
:Nama tampilan MySQL harus didefinisikan di sini. Sebaiknya gunakan nama deskriptif agar Anda dapat mengingat fungsi tampilan nanti. -
select_statement
:Ini adalah kueri SQL yang digabungkan dengan tampilan yang ditentukan. Saat tampilan dipanggil, MySQL menjalankan kueri ini untuk mengembalikan recordset.
Membuat Tampilan MySQL
Bagian ini menyajikan contoh tampilan MySQL. Tampilan ini digunakan untuk mengklasifikasikan pelanggan dari database sampel Anda, bergantung pada jumlah penjualan bulanan mereka.
Pastikan Anda masuk ke server MySQL Anda. Kemudian, jalankan perintah di bawah ini untuk membuat customers_membership
lihat:
CREATE
VIEW customers_membership
AS SELECT sales.customer_id,
customer_name,
(IF(sales.monthly_sales >= 5000, 'PREMIUM', 'BASIC')) as membership
FROM sales
LEFT JOIN customers
ON sales.customer_id = customers.customer_id;
Jika tampilan berhasil dibuat, Anda akan melihat output yang ditunjukkan di bawah ini:
Query OK, 0 rows affected (0.01 sec)
Perintah MySQL di atas membuat tampilan bernama customers_membership
yang bergabung dengan customers
dan sales
tabel dengan PRIMARY KEY
customer_id
. Logika IF(expression, value_if_true, value_if_false)
logika pernyataan digunakan untuk menentukan keanggotaan pelanggan dari penjualan bulanan mereka:
-
Jika penjualan pelanggan sama atau di atas 5.000, tampilan akan mengklasifikasikan pelanggan sebagai
PREMIUM
anggota. -
Sebaliknya (jika penjualan di bawah
5,000
), pelanggan diklasifikasikan sebagaiBASIC
anggota.
customers_membership
tampilan sekarang disimpan ke database. Bagian selanjutnya menunjukkan cara memanggil tampilan MySQL dan menampilkan recordset tanpa menanyakan tabel dasar secara langsung.
Memanggil Tampilan MySQL
Bagian ini menunjukkan cara menjalankan tampilan MySQL yang Anda buat di atas dan mengonfirmasi bahwa itu berfungsi seperti yang diharapkan. Setelah tampilan dibuat, itu terlihat sebagai objek database dan dapat dipanggil menggunakan SELECT
pernyataan.
-
Untuk memanggil
customers_membership
lihat, jalankan:SELECT * FROM customers_membership;
Jika tampilan berfungsi seperti yang diharapkan, Anda sekarang akan melihat daftar pelanggan dengan
membership
. yang mereka buat nilai berdasarkan penjualan mereka. SejakLeslie
penjualan di bawah 5000 (500,27), tampilan menampilkan keanggotaan pelanggan sebagaiBASIC
.Andy
danBen
penjualan masing-masing adalah 7600,32 dan 25879,63 dan ini menjadikannyaPREMIUM
anggota:+-------------+---------------+------------+ | customer_id | customer_name | membership | +-------------+---------------+------------+ | 1 | Leslie | BASIC | | 2 | Andy | PREMIUM | | 3 | Ben | PREMIUM | +-------------+---------------+------------+ 3 rows in set (0.00 sec)
-
Setelah data tabel dasar diperbarui dan Anda memanggil tampilan MySQL lagi, Anda akan melihat informasi terbaru. Tampilan menarik informasi dari tabel dasarnya, dan tidak menyimpan data. Untuk mendemonstrasikan bagaimana tampilan menarik informasi terbaru dari tabel dasar, tambahkan pelanggan lain bernama
Rajie
kepadacustomers
tabel:INSERT INTO customers (customer_name) VALUES ('Rajie');
Keluaran ini muncul:
Query OK, 1 row affected (0.01 sec)
-
Kemudian, tambahkan informasi penjualan bulanan pelanggan ke tabel penjualan:
INSERT INTO sales (customer_id, monthly_sales) VALUES ('4', '147.41');
Keluaran ini muncul:
Query OK, 1 row affected (0.01 sec)
-
Selanjutnya, aktifkan
customers_membership
lihat lagi:SELECT * FROM customers_membership;
Output di bawah ini muncul, yang mengonfirmasi bahwa tampilan dapat mengambil perubahan dan menarik informasi pelanggan baru seperti yang diharapkan:
+-------------+---------------+------------+ | customer_id | customer_name | membership | +-------------+---------------+------------+ | 1 | Leslie | BASIC | | 2 | Andy | PREMIUM | | 3 | Ben | PREMIUM | | 4 | Rajie | BASIC | +-------------+---------------+------------+ 4 rows in set (0.00 sec)
Seperti yang Anda lihat di recordset tampilan di atas, Anda sekarang memiliki pelanggan baru bernama
Rajie
denganBASIC
keanggotaan.
Menjatuhkan Tampilan MySQL
Sama seperti objek database lainnya, Anda dapat menghapus tampilan jika tidak lagi membutuhkannya. Ini adalah sintaks dasar untuk menjatuhkan tampilan MySQL:
DROP VIEW IF EXISTS view_name;
-
Sebelum menjatuhkan tampilan MySQL, kenali dulu namanya dengan menjalankan perintah di bawah ini:
SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
Daftar semua tampilan dalam database yang dipilih saat ini muncul:
+---------------------------+------------+ | Tables_in_sample_database | Table_type | +---------------------------+------------+ | customers_membership | VIEW | +---------------------------+------------+ 1 row in set (0.01 sec)
-
Dalam hal ini, nama tampilan yang ingin Anda hapus adalah
customers_membership
. Jadi, untuk menghapusnya, jalankan:DROP VIEW IF EXISTS customers_membership;
Pastikan output di bawah ini ditampilkan setelah tampilan dihapus dari database:
Query OK, 0 rows affected (0.01 sec)
Catatan Harap diperhatikan, jika Anda mencoba menghapus tampilan MySQL yang tidak ada tanpa menggunakan
IF EXISTS
kata kunci, MySQL membuat kesalahan. -
Ketika perintah dari langkah 1 dijalankan lagi, seharusnya tidak ada hasil:
SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
Empty set (0.000 sec)
Informasi Lebih Lanjut
Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.
- MySQL - Menggunakan Tampilan