Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menggunakan Tampilan di Database MySQL

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:

  1. Linode, tempat Anda menjalankan perangkat lunak MySQL. Anda dapat mengikuti panduan Memulai dengan Linode untuk menyediakan Linode.

  2. 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:

  1. 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
    
  2. 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)]>
    
  3. 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)
    
  4. Pilih sample_database basis data:

    USE sample_database;
    

    Anda akan melihat keluaran ini:

    
    Database changed
    
  5. 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)
    
  6. Selanjutnya, isi customers tabel dengan tiga catatan. Jalankan INSERT 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)
    ...
    
  7. 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)
    
  8. 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)
    
  9. 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)
    ...
    
  10. 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 sebagai BASIC 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.

  1. 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. Sejak Leslie penjualan di bawah 5000 (500,27), tampilan menampilkan keanggotaan pelanggan sebagai BASIC . Andy dan Ben penjualan masing-masing adalah 7600,32 dan 25879,63 dan ini menjadikannya PREMIUM anggota:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    +-------------+---------------+------------+
    3 rows in set (0.00 sec)
    
  2. 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 kepada customers tabel:

    INSERT INTO customers (customer_name) VALUES ('Rajie');
    

    Keluaran ini muncul:

    
    Query OK, 1 row affected (0.01 sec)
    
  3. 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)
    
  4. 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 dengan BASIC 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;
  1. 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)
    
  2. 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.
  3. 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Server MySQL telah hilang saat mengimpor file sql besar

  2. Masalah Java + Mysql UTF8

  3. Pelajari cara membuat cadangan database MySQL Anda

  4. Transposisi Kolom Dinamis ke Baris

  5. Cari teks di bidang di setiap tabel database MySQL