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

Tampilan MySQL

Di sini, saya menjelaskan apa itu "tampilan" MySQL dan bagaimana menggunakannya.

MySQL memberi kita kemampuan untuk membuat tampilan . tampilan didefinisikan sebagai kueri tersimpan yang ketika dipanggil, menghasilkan kumpulan hasil. Beberapa orang menyebut tampilan sebagai "tabel virtual".

Jelas seperti lumpur? Ayo coba lagi.

Apa itu Tampilan?

Tampilan adalah kueri yang Anda simpan ke database. Anda kemudian dapat menjalankannya nanti hanya dengan memanggil tampilan itu (daripada menulis kueri lagi).

Tampilan dapat terdiri dari kueri yang kompleks tetapi akan menampilkan hasil seolah-olah itu adalah tabel. Oleh karena itu, Anda dapat membuat kueri tampilan seolah-olah itu adalah tabel.

Misalnya, Anda bisa memiliki kueri kompleks yang memilih data dari tiga tabel berbeda. Anda bisa mengetik kueri kompleks ini setiap kali Anda perlu menjalankannya, atau Anda bisa menyimpan kueri sebagai tampilan. Setelah disimpan sebagai tampilan, Anda dapat menjalankan SELECT simple sederhana pernyataan untuk mengembalikan hasil kueri kompleks. Namun tentu saja, Anda juga dapat menulis kueri kompleks terhadap tampilan jika perlu.

Buat Tampilan

Membuat tampilan sangat sederhana. Anda cukup mendahului kueri Anda dengan satu baris kode dan menjalankannya. Tampilan akan segera dibuat di database Anda.

Sintaks

Untuk membuat tampilan, ketik pernyataan berikut, diikuti dengan kueri:

CREATE VIEW view_name AS

Ganti view_name dengan nama apa pun yang ingin Anda gunakan untuk tampilan.

Contoh

Jika kita menjalankan kode berikut terhadap FruitShop basis data:

CREATE VIEW vFruitInventory AS
SELECT 
    Fruit.FruitName,
    Fruit.Inventory,
    Units.UnitName
FROM
	Fruit INNER JOIN Units ON
    Fruit.UnitId = Units.UnitId;

Sekarang kita melihat tampilan yang disebut vFruitInventory tercantum di bawah Tampilan (Anda mungkin perlu mengeklik Segarkan tombol untuk SCHEMAS menu dulu):

Sebaiknya pikirkan konvensi penamaan untuk tampilan Anda (seperti halnya objek database lainnya) dan patuhi itu. Banyak pengembang mengawali nama tampilan mereka dengan v , vw , v_ atau vw_ sehingga memudahkan untuk membedakan tampilan dari tabel dalam kuerinya. Namun, pengembang lain tidak setuju dengan konvensi ini dan lebih suka nama tabel dan tampilan mereka dapat dipertukarkan.

Meminta Tampilan

Sekarang kita dapat mengkueri tampilan seperti kita mengkueri tabel:

SELECT * FROM vFruitInventory;

Hasil:

Tentu saja, kita juga dapat menggunakan kueri yang lebih spesifik. Misalnya, yang ini hanya memilih catatan yang inventarisnya lebih besar atau kurang dari 10:

SELECT FruitName 
FROM vFruitInventory
WHERE Inventory <= 10;

Tapi kami tidak bisa kolom kueri yang tidak direferensikan dalam tampilan (bahkan jika kolom tersebut berada di tabel yang mendasari kueri tampilan).

Misalnya, kita dapat menanyakan Buah tabel seperti ini:

SELECT * 
FROM Fruit
WHERE FruitId = 1;

Tetapi kami tidak dapat menanyakan vFruitInventory di atas tampilan seperti ini:

SELECT * 
FROM vFruitInventory
WHERE FruitId = 1;

Ini karena tampilan tidak mengembalikan FruitId kolom. Kami menentukan kolom yang tepat dalam tampilan dan hanya itu yang dikembalikan. Seperti yang disebutkan, kumpulan hasil tampilan seperti tabel dan beberapa orang suka menyebutnya "tabel virtual". Jika "tabel" tidak menyertakan kolom tersebut, Anda tidak dapat menanyakannya.

Alih-alih menjadi batasan, ini sebenarnya adalah fitur dari pandangan. Fitur ini berarti bahwa kami dapat memberi pengguna akses ke beberapa kolom tabel tetapi tidak yang lain (melalui tampilan). Dengan kata lain, kami dapat memberikan akses pengguna ke tampilan tanpa memberikan akses pengguna tersebut ke tabel dasar yang diakses tampilan. Beberapa tabel mungkin menyimpan informasi sensitif yang tidak boleh diakses oleh pengguna. Tetapi tabel yang sama mungkin juga menyimpan informasi tidak sensitif yang butuhkan untuk mengakses. Apa yang harus dilakukan? Buat tampilan! Dan tampilan itu hanya dapat memilih informasi yang tidak sensitif dari tabel tersebut.

Memodifikasi Tampilan

Berikut adalah dua metode berbeda untuk mengubah tampilan Anda.

Opsi 1:Gunakan ALTER VIEW Pernyataan

Anda dapat mengubah tampilan dengan menggunakan ALTER VIEW penyataan. Seperti ini:

ALTER VIEW view_name AS

Ganti view_name dengan nama tampilan yang ingin Anda ubah.

Contoh

Mari tambahkan Fruit.FruitId bidang ke tampilan:

ALTER VIEW vFruitInventory AS
SELECT 
	Fruit.FruitId,
    Fruit.FruitName,
    Fruit.Inventory,
    Units.UnitName
FROM
	Fruit INNER JOIN Units ON
    Fruit.UnitId = Units.UnitId;

Sekarang, ketika kami mencoba mengembalikan FruitId bidang dalam kueri kami, kami akan mendapatkan hasil.

Tetapi perhatikan bahwa kami tidak dapat mencoba mengakses bidang ini sebagai Fruit.FruitId . Kami hanya dapat mengaksesnya sebagai FruitId . Dan beginilah seharusnya. Bagaimanapun, view adalah "tabel virtual" dan kita tidak perlu mengetahui struktur tabel yang di-query.

Opsi 2:Gunakan CREATE OR REPLACE

Perhatikan bahwa tampilan harus ada sebelum Anda menjalankan ALTER VIEW penyataan. Jika tidak ada, Anda akan menerima pesan kesalahan. Anda dapat menghindari masalah ini dengan menggunakan CREATE OR REPLACE penyataan. Ini akan membuat tampilan jika tidak ada, atau menggantinya jika ada.

Jadi kita bisa membuat tampilan di atas seperti ini:

CREATE OR REPLACE VIEW vFruitInventory AS
SELECT 
    Fruit.FruitName,
    Fruit.Inventory,
    Units.UnitName
FROM
	Fruit INNER JOIN Units ON
    Fruit.UnitId = Units.UnitId;

Dan kemudian kami dapat memperbaruinya dengan menggunakan CREATE OR REPLACE yang sama pernyataan, tetapi hanya memodifikasi definisi. Misalnya, menambahkan Fruit.FruitId bidang:

CREATE OR REPLACE VIEW vFruitInventory AS
SELECT 
	Fruit.FruitId,
    Fruit.FruitName,
    Fruit.Inventory,
    Units.UnitName
FROM
	Fruit INNER JOIN Units ON
    Fruit.UnitId = Units.UnitId;

Menurunkan Tampilan

Anda dapat melihat dengan menggunakan DROP VIEW penyataan. Seperti ini:

DROP VIEW vFruitInventory

Pernyataan di atas akan menghapus tampilan yang disebut vFruitInventory .

Menghilangkan Banyak Tampilan

Anda dapat menghapus beberapa tampilan menggunakan DROP VIEW yang sama penyataan. Pisahkan saja setiap nama tampilan dengan koma. Seperti ini:

DROP VIEW view_1, view_2 ...

IF EXISTS Klausa

Anda juga dapat menggunakan IF EXISTS klausa untuk mencegah kesalahan terjadi jika tampilan tidak ada:

DROP VIEW IF EXISTS view_1, view_2 ...

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencapai hierarki, Hubungan Orang Tua/Anak dengan cara yang efektif dan mudah

  2. Impor file CSV langsung ke MySQL

  3. Terhubung ke MySQL dari Jarak Jauh

  4. Menggunakan Database Relasional MySQL di Debian 6 (Squeeze)

  5. Cara Membuat Tabel di MySQL