mysql create view tutorial with code examples
Bu MySQL Oluşturma Görünümü Eğitimi, Farklı Maddeler ve Örnekler kullanarak MySQL'de bir Görünüm Oluşturma hakkında her şeyi açıklar. Ayrıca Görünümlerin nasıl bırakılacağını ve yönetileceğini de kapsar:
MySQL'de görünüm, tabloya diğer programlar tarafından erişilmesini engellemeden tablodaki verilere bakmamızı sağlayan ve böylece kilitlenme durumlarından kaçınmamıza yardımcı olan sanal bir tablodur.
Görünümler, verileri tutan bir veya birden fazla tablonun üzerinde oluşturulur. Devam etmeden önce, kullandığımızı lütfen unutmayın MySQL sürüm 8.0 .
Ne öğreneceksin:
MySQL Oluşturma Görünümü
Sözdizimi:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;Sözdizimi Açıklaması:
- Sözdizimi 'CREATE VIEW' anahtar sözcüğü ile başlar, böylece MySQL Sunucusunu gerçekleştirilecek aktivite türü hakkında bilgilendirir. Bu zorunlu bir anahtar kelimedir ve ihmal edilemez.
- DEĞİŞTİR, isteğe bağlı bir parametredir. Mevcut bir görünüm üzerinde çalışırken bunu kullanabiliriz.
- Ardından görünümün adı geliyor. Tabloların ve sütunların adları gibi benzersiz olmalıdır.
- Ardından tablodan sütunları seçin. Bir görünüm, temeldeki tablonun tüm sütunlarına veya yalnızca birkaçına sahip olabilir.
- Ardından, görünümün gerçekleştirilmesi gereken tablonun adı gelir. Bu zorunludur ve ihmal edilemez.
- Ardından, GÖRÜNÜM OLUŞTUR eyleminin uygulanması gereken hedef satırların sayısını sınırlayan veya filtreleyen WHERE koşulu gelir. WHERE aynı zamanda bir anahtar kelimedir, ancak isteğe bağlıdır.
Bununla birlikte, WHERE yan tümcesi önemlidir. Belirtilmediyse veya koşul doğru ayarlanmazsa, tüm tablo veya gerekli olmayan satırlar görünümün bir parçası olacaktır.
MySQL Görünüm Örneği Oluştur
Aşağıda MYSQL'de oluşturulmuş örnek bir tablodur.
Şema Adı: Pasifik
Tablo ismi: çalışanlar
Sütun Adları:
empNum : Çalışan sayısı için tam sayı değerlerini tutar.
Soyadı : Çalışanın soyadı için varchar değerlerini tutar.
İsim : Çalışanın adı için varchar değerlerini tutar.
e-posta : Çalışanın e-posta kimliği için varchar değerlerini tutar.
deptNum : Bir çalışanın ait olduğu departman kimliği için varchar tutar.
maaş : Her çalışan için ondalık maaş değerlerini tutar.
Başlangıç tarihi : Çalışanın katılım tarihi için tarih değerlerini tutar.

Şema Adı: Pasifik
Tablo ismi: bölümler
Sütun Adları:
deptNum; Bir kuruluş içindeki departman kimliği için varchar tutar.
Kent: Bölümlerin çalıştığı şehrin adını tutar.
ülke: Şehre karşılık gelen ülkenin adını tutar.
bonus Bonusun yüzde değerini tutar.

MySQL Basit Bir Görünüm Oluştur
Şimdi yukarıdaki tablonun üstünde bir görünüm oluşturalım.
Aşağıda verilen sorgu.

SELECT deyimi belirli sütun adlarıyla olabilir veya tüm sütunları elde etmek için '*' kullanabiliriz. Bir kez bir görünüm oluşturduğumuzda, sütun ekleyemiyoruz veya silemiyoruz. Sütun eklemek veya silmek istiyorsak, yeni bir görünüm oluşturmalı veya bu mevcut görünümü değiştirmeliyiz.
Çıktı ifadesi, CREATE VIEW SQL deyimlerinin başarıyla yürütüldüğünü gösterir. Ayrıca hiçbir satırın etkilenmediğini de söylüyor. Bu, yeni bir satır oluşturulduğunda temel tablodaki verileri etkilemeyeceği anlamına gelir.
Şimdi görünümü sorgulayalım.

Sorgu:
CREATE VIEW employees_view AS SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ; SELECT empNum, firstName, lastName, email, deptNum, salary, start_date FROM employees_view ;Sonuç kümesi:
| empNum | Soyadı | İsim | e-posta | deptNum | maaş | Başlangıç tarihi |
|---|---|---|---|---|---|---|
| 1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494.4 | 0001-01-01 |
| 1001 | Andrews | Jack | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
| 1002 | Schwatz | Mike | ms@gmail.com | 1 | 5304.5 | 0001-01-01 |
| 1003 | Langley | Margaret | margaret.langley@gmail.com | iki | 8820 | 0001-01-01 |
| 1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
| 1005 | okumak | Peter | pl@gmail.com | iki | 14332.5 | 0001-01-01 |
| 1006 | Keith | Jenny | jk@gmail.com | iki | 16537.5 | 0001-01-01 |
| 1009 | Fincan | Harry | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
| 1011 | Hanks | Tom | th@gmail.com | BOŞ | 10100 | 0001-01-01 |
| 1012 | Luther | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
| 1014 | Murray | Keith | km@gmail.com | 1 | 25.000 | 0001-01-01 |
| 1015 | Branson | John | jb@gmail.com | iki | 15.000 | 0001-01-01 |
| 1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
| 1017 | Johnson | Havva | ej@gmail.com | 3 | 5500 | 2019-11-25 |
| 1018 | Bond | Nolan | nb@gmail.com | iki | 15.000 | 2019-09-13 |
GROUP BY ve ORDER BY kullanarak Görünüm Oluştur
Departman açısından toplam maaş miktarını almamız gereken bir senaryo varsayalım.
Aşağıda verilen sorgu:

Tabloda bu sorguyu her seferinde çalıştırmak yerine, bilgiye ihtiyacımız var, daha az veritabanı kaynağı tüketeceğinden görünümü sorgulamak daha iyidir.
Şimdi, görünümümüzün içeriğini görelim. Her departmanın çalışanlarına maaş olarak ne kadar para gönderdiğini bulacağız.

Sorgu:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;Sonuç kümesi:
| deptNum | toplam (maaş) | |||||
|---|---|---|---|---|---|---|
| 1006 | Keith | Jenny | iki | Charlotte | Amerika Birleşik Devletleri | 5 |
| 5 | 30645.6 | |||||
| 4 | 5000 | |||||
| 3 | 42994.4 | |||||
| iki | 69690 | |||||
| 1 | 44096.2 | |||||
| BOŞ | 10100 |
DeptNum'daki NULL, bir çalışanın herhangi bir departmanın parçası olmadığını, ancak kuruluşun maaş bordrosunda olduğunu gösterir.
JOIN Kullanarak MySQL Create View
Departman, bulunduğu şehir ve çalışanlarına sunulan ikramiye hakkında veri almak istediğimizi varsayalım. Her çalışan için bu bilgiye ihtiyacımız var.
Bunu başarmak için, departmanlar ve çalışanlar tablosundan veri almak için JOIN anahtar kelimesini kullanacağız.
Şimdi sorguya ve çıktısına bir göz atalım.

Burada, ihtiyacımıza bağlı olarak INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN veya FULL OUTER JOIN gibi farklı JOIN türleri kullanabiliriz.
Sorgu:
CREATE VIEW join_view AS SELECT A.empNum, A.lastName, A.firstName, A.deptNum, B.city, B.country, B.bonus FROM employees A INNER JOIN departments B USING (deptNum) ; SELECT * FROM join_view ; Şimdi çıktıyı görmek için bu görünümde bir SELECT sorgusu yürütelim:

Sonuç kümesi:
| empNum | Soyadı | İsim | deptNum | Kent | ülke | bonus |
|---|---|---|---|---|---|---|
| 1001 | Andrews | Jack | 1 | New York | Amerika Birleşik Devletleri | 3 |
| 1002 | Schwatz | Mike | 1 | New York | Amerika Birleşik Devletleri | 3 |
| 1004 | Harera | Sandra | 1 | New York | Amerika Birleşik Devletleri | 3 |
| 1014 | Murray | Keith | 1 | New York | Amerika Birleşik Devletleri | 3 |
| 1003 | Langley | Margaret | iki | Charlotte | Amerika Birleşik Devletleri | 5 |
| 1005 | okumak | Peter | iki | Charlotte | Amerika Birleşik Devletleri | 5 |
| 1015 | Branson | John | iki | Charlotte | Amerika Birleşik Devletleri | 5 |
| 1018 | Bond | Nolan | iki | Charlotte | Amerika Birleşik Devletleri | 5 |
| 1008 | Bailey | Oliver | 3 | Chicago | Amerika Birleşik Devletleri | 8 |
| 1012 | Luther | Martin | 3 | Chicago | Amerika Birleşik Devletleri | 8 |
| 1017 | Johnson | Havva | 3 | Chicago | Amerika Birleşik Devletleri | 8 |
| 1016 | Martin | Richard | 4 | Londra | İngiltere | 10 |
| 1009 | Fincan | Harry | 5 | Berlin | Almanya | 13 |
Alt Sorguyu Kullanarak Görünüm Oluştur
Bu tür bir create view deyiminde, cümlenin bir alt sorgunun çıktısına dayandığı bir sütunun değerini almaya çalışırız. Diyelim ki, maaşı kuruluşun ortalama maaşından fazla olan tüm çalışanları bulmamız gerekiyor.
Sorguyu görelim:


Sorgu:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ; Sonuç kümesi:
| empNum | Soyadı | İsim | maaş |
|---|---|---|---|
| 1018 | Bond | Nolan | 15.000 |
| 1005 | okumak | Peter | 14332.5 |
| 1006 | Keith | Jenny | 16537.5 |
| 1008 | Bailey | Oliver | 24494.4 |
| 1009 | Fincan | Harry | 30645.6 |
| 1014 | Murray | Keith | 25.000 |
| 1015 | Branson | John | 15.000 |
Görünümleri Yönetme
Görünümü Alter veya Oluştur / Değiştir görünümünü kullanarak herhangi bir görünümü değiştirebilir / değiştirebiliriz. Bir görünümü yeniden derlemek için açıkça ALTER VIEW kullanmak geçerli değildir.
HERHANGİ BİR Tablo sistem ayrıcalıklarına sahipseniz veya görünüm şemanızdaysa, ALTER VIEW İfadesini kullanabilirsiniz.
ana c ++ 'ya tanımsız başvuru
Alter View sorgusunu kullanarak, yeniden derleme hatalarını çalışma zamanından önce bulabiliriz. ALTER VIEW deyimini kullanmak, ona bağlı olan diğer nesneyi / görünümü etkileyebilir. Böylece, değiştirdikten sonra bir görünümü yeniden derleyebiliriz.
Görünümü Oluştur'u kullanarak bir görünümü yeniden tanımlayabilir ve mevcut görünümü Görünümü değiştir sorgusu ile değiştirebiliriz.
Örneğin, çalışanları göz önünde bulundurun_view. Burada, diğer birkaç sütunla birlikte lastName ve firstName sütunlarına sahibiz. FirstName ve lastName sütunlarını birleştirmemiz gerektiğini düşünün.
Aşağıda, ALTER sorgusunu çalıştırmadan önce görünümün anlık görüntüsü verilmiştir.

Şimdi, firstName ve lastName'i birleştirmek için ALTER VIEW sorgusunu çalıştıralım.
Sorgu aşağıda verilmiştir:

Sorgu:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ; Şimdi çalışanın içeriğini görelim_görün:

Fark ederseniz, isimler için iki ayrı sütunumuz yok. Bunun yerine, hem adı hem de soyadı birleştirilmiş bir sütunumuz var.
Daha fazla bilgi edinin = >> MySQL CONCAT İşlevi
Sorgu:
SELECT * FROM employees_view;Sonuç kümesi:
| empNum | empName | e-posta | deptNum | maaş | Başlangıç tarihi |
|---|---|---|---|---|---|
| 1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
| 1001 | Jack Andrews | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
| 1002 | Mike Schwatz | ms@gmail.com | 1 | 5304.5 | 0001-01-01 |
| 1003 | Margaret Langley | margaret.langley@gmail.com | iki | 8820 | 0001-01-01 |
| 1004 | Sandra Harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
| 1005 | Peter Lee | pl@gmail.com | iki | 14333 | 0001-01-01 |
| 1006 | Jenny Keith | jk@gmail.com | iki | 16538 | 0001-01-01 |
| 1009 | Harry Beher | hb@gmail.com | 5 | 30646 | 0001-01-01 |
| 1011 | Tom Hanks | th@gmail.com | 10100 | 0001-01-01 | |
| 1012 | Martin Luther | ml@gmail.com | 3 | 13000 | 0001-01-01 |
| 1014 | Keith Murray | km@gmail.com | 1 | 25.000 | 0001-01-01 |
| 1015 | John Branson | jb@gmail.com | iki | 15.000 | 0001-01-01 |
| 1016 | Richard Martin | rm@gmail.com | 4 | 5000 | 0001-01-01 |
| 1017 | Eve Johnson | ej@gmail.com | 3 | 5500 | 2019-11-25 |
| 1018 | Nolan Bond | nb@gmail.com | iki | 15.000 | 2019-09-13 |
Bir Görünümü Düşürmek
DROP VIEW deyimini kullanarak bir görünümü bırakabiliriz. HERHANGİ BİR görüntüleme ayrıcalığına sahipse veya şemasında olması gerekiyorsa DROP VIEW kullanılabilir. Sarkık görünüm, görünümün oluşturulduğu temel tabloyu veya bu tablodaki verileri etkilemez.
Sorgu:
DROP VIEW (view name); 
SSS
S # 1) MySQL'de görünümler nasıl oluşturulur?
Cevap: MySQL'de görünüm oluşturmanın birden fazla yolu vardır. Aşağıda gösterildiği gibi dört farklı yoldan geçtik.
1. MySQL Basit Bir Görünüm Oluşturun
2. GROUP BY ve ORDER BY kullanarak MySQL Create View
3. JOIN Kullanarak MySQL Create View
4. Alt Sorguyu Kullanarak MySQL Oluşturma Görünümü
S # 2) MySQL'de bir görünüm nedir?
Cevap: Görünümler, mantıksal yapıda saklanan önceden çalıştırılan sorgular gibidir, böylece tablodaki karmaşık sorguları yeniden yürütmemize gerek kalmaz. Tabloyu etkilemeden sadece görünümü sorgulayabilir ve verilerimizi alabiliriz.
S # 3) Görünüm oluştururken görünümlere JOIN uygulayabilir miyiz?
Cevap: Evet, JOIN deyimleri, tablolarda kullandığımıza benzer şekilde görünümlerde kullanılabilir.
S # 4) Başka bir görünümden bir görünüm oluşturabilir miyiz?
Cevap: Görünümler esasen tablolar olarak hareket eder, ancak sanal bir tablo olarak işlev görür. Dolayısıyla, bir tablonun tepesinde görünümler oluşturma şeklimiz, benzer şekilde başka bir görünümün üzerinde görünümler oluşturabiliriz.
S # 5) Neden görünümler kullanıyoruz?
Cevap: SQL sorgusunun bir sonucu olarak, görünüm mantıksal bir tablo oluşturur. Görünümleri aşağıdaki nedenlerle kullanıyoruz.
- Görünümü kullanarak, ilgili görevler için satırların ve sütunların görünürlüğünü (Select and Where cümlesini kullanarak) sınırlayabiliriz.
- Satırları ve sütunları birleştirdiğimizde görünümler kullanılır ( Birlik ve Birleştir) birden çok tablodan.
- Satırları (Gruplama ölçütü ve sahip olma özelliğini kullanarak) daha ince ayrıntılara sahip bir tabloya toplayan daha belirgin bir sunum elde etmek için.
- Görünümler, sütunu (AS kullanarak) veya satırları (JOIN, IF, CASE veya Oracle’ın DECODE kullanarak) yeniden adlandırırken veya kod çözerken kullanılır.
- Yukarıdakilerden herhangi birini güvenlik ayarlarıyla birleştirerek, kullanıcının yalnızca yetkilendirildiklerine erişimi olup olmadığını kontrol edebiliriz.
Sonuç
Bu eğitimde, MySQL'de bir görünüm oluşturmanın farklı yollarını keşfettik.
1. MySQL Basit Bir Görünüm Oluşturun
2. GROUP BY ve ORDER BY kullanarak MySQL Create View
3. JOIN Kullanarak MySQL Create View
4. Alt Sorguyu Kullanarak MySQL Oluşturma Görünümü
Proje gereksinimlerine bağlı olarak bu seçeneklerden birini seçebiliriz.
Daha fazla okuma = >> MySQL CREATE TABLE
Mutlu Öğrenme !!
Önerilen Kaynaklar
- MySQL ALTER TABLE - MySQL'de Bir Tabloya Sütun Nasıl Eklenir
- Örneklerle MySQL CONCAT ve GROUP_CONCAT İşlevleri
- Örneklerle MySQL COUNT ve COUNT DISTINCT
- MySQL Veritabanı Oluştur - MySQL'de Veritabanı Nasıl Oluşturulur
- MySQL CREATE USER: MySQL'de Yeni Kullanıcı Nasıl Oluşturulur
- MySQL Kod Örnekleriyle Görünüm Öğreticisini Oluştur
- MySQL GROUP BY Clause - Örneklerle Eğitim
- MySQL JOIN Eğitimi: İç, Dış, Çapraz, Sol, Sağ ve Öz