mysql create view tutorial with code examples
Ten samouczek dotyczący tworzenia widoku MySQL wyjaśnia wszystko o tworzeniu widoku w MySQL przy użyciu różnych klauzul i przykładów. Obejmuje również, jak upuszczać i zarządzać widokami:
jak wyświetlić plik eps
W MySQL widok jest wirtualną tabelą, która pozwala nam spojrzeć na dane w tabeli bez blokowania dostępu do tabeli przez inne programy, a tym samym pomaga nam uniknąć sytuacji zakleszczenia.
Widoki są tworzone na podstawie jednej lub więcej niż jednej tabeli zawierającej dane. Zanim przejdziesz dalej, pamiętaj, że używamy MySQL w wersji 8.0 .
Czego się nauczysz:
Widok tworzenia MySQL
Składnia:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Objaśnienie składni:
- Składnia rozpoczyna się od słowa kluczowego „CREATE VIEW”, informując w ten sposób serwer MySQL o rodzaju czynności do wykonania. To jest obowiązkowe słowo kluczowe i nie można go pominąć.
- REPLACE to opcjonalny parametr. Możemy tego użyć podczas pracy nad istniejącym widokiem.
- Następnie pojawia się nazwa widoku. Powinien być niepowtarzalny, podobnie jak nazwy tabel i kolumn.
- Następnie wybierz kolumny z tabeli. Widok może mieć wszystkie kolumny tabeli bazowej lub tylko kilka wybranych.
- Następnie pojawia się nazwa stołu, na którym ma zostać wykonany widok. Jest to obowiązkowe i nie można go pominąć.
- Następnie pojawia się warunek GDZIE, który ogranicza lub filtruje liczbę wierszy docelowych, na których ma zostać zastosowana akcja UTWÓRZ WIDOK. GDZIE jest również słowem kluczowym, ale opcjonalnym.
Jednak klauzula WHERE jest istotna. Jeśli nie zostanie wspomniane, lub jeśli warunek nie jest ustawiony poprawnie, to cała tabela lub niewymagane wiersze będą częścią widoku.
Przykład widoku tworzenia MySQL
Poniżej podano przykładową tabelę utworzoną w MYSQL.
Nazwa schematu: Pacyfik
Nazwa tabeli: pracowników
Nazwy kolumn:
empNum : Przechowuje wartości całkowite dla numeru pracownika.
nazwisko : Przechowuje wartości varchar dla nazwiska pracownika.
Imię : Przechowuje wartości varchar dla imienia pracownika.
e-mail : Przechowuje wartości varchar dla identyfikatora e-mail pracownika.
deptNum : Przechowuje varchar dla identyfikatora działu, do którego należy pracownik.
wynagrodzenie : Przechowuje wartości dziesiętne wynagrodzenia dla każdego pracownika.
Data rozpoczęcia : Przechowuje wartości dat dla daty dołączenia pracownika.
Nazwa schematu: Pacyfik
Nazwa tabeli: działy
Nazwy kolumn:
deptNum; Przechowuje varchar dla identyfikatora działu w organizacji.
Miasto: Zawiera nazwę miasta, w którym pracują departamenty.
kraj: Zawiera nazwę kraju odpowiadającego miastu.
premia Zawiera procentową wartość premii.
MySQL Proste tworzenie widoku
Teraz stwórzmy widok na górze powyższej tabeli.
Poniżej podano zapytanie.
Klauzula SELECT może mieć określone nazwy kolumn lub możemy użyć „*”, aby pobrać wszystkie kolumny. Raz tworzymy widok, nie możemy dodawać ani usuwać kolumn. Jeśli chcemy dodać lub usunąć kolumny, będziemy musieli albo utworzyć nowy widok, albo zastąpić ten istniejący widok.
Instrukcja wyjściowa pokazuje, że instrukcje SQL CREATE VIEW zostały pomyślnie wykonane. Mówi również, że nie wpłynęło to na żadne rzędy. Oznacza to, że utworzenie nowego wiersza nie ma wpływu na dane w tabeli źródłowej.
Teraz zbadajmy widok.
Pytanie:
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 ;
Zestaw wyników:
empNum | nazwisko | Imię | deptNum | wynagrodzenie | Data rozpoczęcia | |
---|---|---|---|---|---|---|
1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494,4 | 0001-01-01 |
1001 | Andrews | Jacek | ja@gmail.com | jeden | 3182,7 | 0001-01-01 |
1002 | Schwatz | Mikrofon | ms@gmail.com | jeden | 5304,5 | 0001-01-01 |
1003 | Langley | Małgorzata | margaret.langley@gmail.com | dwa | 8820 | 0001-01-01 |
1004 | Harera | Sandra | sh@gmail.com | jeden | 10609 | 0001-01-01 |
1005 | czytać | Piotr | pl@gmail.com | dwa | 14332,5 | 0001-01-01 |
1006 | Keith | Przędzarka | jk@gmail.com | dwa | 16537,5 | 0001-01-01 |
1009 | Puchar | Złupić | hb@gmail.com | 5 | 30645,6 | 0001-01-01 |
1011 | Hanks | Tomek | th@gmail.com | ZERO | 10100 | 0001-01-01 |
1012 | Lutra | Jaskółka oknówka | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Murray | Keith | km@gmail.com | jeden | 25000 | 0001-01-01 |
1015 | Branson | Jan | jb@gmail.com | dwa | 15000 | 0001-01-01 |
1016 | Jaskółka oknówka | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Johnson | Przeddzień | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Więź | Nolan | nb@gmail.com | dwa | 15000 | 2019-09-13 |
Utwórz widok za pomocą GROUP BY i ORDER BY
Przyjmijmy scenariusz, w którym musimy uzyskać całkowitą kwotę wynagrodzenia, biorąc pod uwagę dział.
Poniżej podano zapytanie:
Zamiast uruchamiać to zapytanie w tabeli za każdym razem, gdy potrzebujemy informacji, lepiej jest wysłać zapytanie do widoku, ponieważ będzie to zużywać mniej źródeł bazy danych.
Teraz zobaczmy zawartość naszego widoku. Dowiemy się, ile każdy dział wysyła swoim pracownikom pod względem wynagrodzeń.
Pytanie:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Zestaw wyników:
deptNum | suma (wynagrodzenie) | |||||
---|---|---|---|---|---|---|
1006 | Keith | Przędzarka | dwa | Charlotte | Stany Zjednoczone | 5 |
5 | 30645,6 | |||||
4 | 5000 | |||||
3 | 42994,4 | |||||
dwa | 69690 | |||||
jeden | 44096,2 | |||||
ZERO | 10100 |
NULL w deptNum wskazuje, że pracownik nie jest częścią żadnego działu, ale znajduje się na liście płac organizacji.
MySQL Utwórz widok za pomocą JOIN
Załóżmy, że chcemy uzyskać dane o wydziale, mieście, z którego pochodzi, oraz o premii oferowanej jego pracownikom. Potrzebujemy tych informacji dla każdego pracownika.
Aby to osiągnąć, będziemy używać słowa kluczowego JOIN, aby uzyskać dane z tabeli działów i pracowników.
Rzućmy okiem na zapytanie i jego wynik.
Możemy tutaj użyć różnych typów JOIN, takich jak INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN lub FULL OUTER JOIN w zależności od naszych wymagań.
Pytanie:
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 ;
Wykonajmy teraz zapytanie SELECT w tym widoku, aby zobaczyć wynik:
Zestaw wyników:
empNum | nazwisko | Imię | deptNum | Miasto | kraj | premia |
---|---|---|---|---|---|---|
1001 | Andrews | Jacek | jeden | Nowy Jork | Stany Zjednoczone | 3 |
1002 | Schwatz | Mikrofon | jeden | Nowy Jork | Stany Zjednoczone | 3 |
1004 | Harera | Sandra | jeden | Nowy Jork | Stany Zjednoczone | 3 |
1014 | Murray | Keith | jeden | Nowy Jork | Stany Zjednoczone | 3 |
1003 | Langley | Małgorzata | dwa | Charlotte | Stany Zjednoczone | 5 |
1005 | czytać | Piotr | dwa | Charlotte | Stany Zjednoczone | 5 |
1015 | Branson | Jan | dwa | Charlotte | Stany Zjednoczone | 5 |
1018 | Więź | Nolan | dwa | Charlotte | Stany Zjednoczone | 5 |
1008 | Bailey | Oliver | 3 | Chicago | Stany Zjednoczone | 8 |
1012 | Lutra | Jaskółka oknówka | 3 | Chicago | Stany Zjednoczone | 8 |
1017 | Johnson | Przeddzień | 3 | Chicago | Stany Zjednoczone | 8 |
1016 | Jaskółka oknówka | Richard | 4 | Londyn | Anglia | 10 |
1009 | Puchar | Złupić | 5 | Berlin | Niemcy | 13 |
Utwórz widok za pomocą podzapytania
W tego rodzaju instrukcji create view próbujemy pobrać wartość kolumny, w której klauzula jest oparta na danych wyjściowych podzapytania. Powiedzmy, że musimy znaleźć wszystkich tych pracowników, których pensja przekracza średnią pensję organizacji.
Zobaczmy zapytanie:
Pytanie:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Zestaw wyników:
empNum | nazwisko | Imię | wynagrodzenie |
---|---|---|---|
1018 | Więź | Nolan | 15000 |
1005 | czytać | Piotr | 14332,5 |
1006 | Keith | Przędzarka | 16537,5 |
1008 | Bailey | Oliver | 24494,4 |
1009 | Puchar | Złupić | 30645,6 |
1014 | Murray | Keith | 25000 |
1015 | Branson | Jan | 15000 |
Zarządzanie widokami
Korzystając z widoku Alter View lub Create / Replace możemy modyfikować / zastępować dowolny widok. Użycie ALTER VIEW jawnie do ponownej kompilacji widoku jest nieprawidłowe.
Jeśli masz uprawnienia ALTER ANY Table lub jeśli widok znajduje się w Twoim schemacie, możesz użyć instrukcji ALTER VIEW.
Korzystając z zapytania Alter View, możemy zlokalizować błędy ponownej kompilacji przed uruchomieniem. Użycie instrukcji ALTER VIEW może wpłynąć na inny obiekt / widok, który jest od niego zależny. Możemy więc ponownie skompilować widok po zmianie.
Możemy przedefiniować widok za pomocą Utwórz widok i możemy zastąpić istniejący widok zapytaniem Zastąp widok.
jak znaleźć klucz bezpieczeństwa sieci na telefonie z Androidem
Na przykład, weź pod uwagę Employer_view. Tutaj mamy kolumny lastName i firstName wraz z kilkoma innymi. Weź pod uwagę, że mamy wymóg scalenia kolumn firstName i lastName.
Poniżej podano migawkę widoku przed wykonaniem zapytania ALTER.
Wykonajmy teraz zapytanie ALTER VIEW, aby scalić nazwy firstName i lastName.
Zapytanie jest podane poniżej:
Pytanie:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Zobaczmy teraz zawartość atrybutu workers_view:
Jeśli możesz zauważyć, nie mamy dwóch oddzielnych kolumn na nazwy. Zamiast tego mamy tylko jedną kolumnę, która ma połączone zarówno imię, jak i nazwisko.
Dowiedz się więcej = >> Funkcja MySQL CONCAT
Pytanie:
SELECT * FROM employees_view;
Zestaw wyników:
empNum | empName | deptNum | wynagrodzenie | Data rozpoczęcia | |
---|---|---|---|---|---|
1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1001 | Jack Andrews | ja@gmail.com | jeden | 3182,7 | 0001-01-01 |
1002 | Mike Schwatz | ms@gmail.com | jeden | 5304,5 | 0001-01-01 |
1003 | Margaret Langley | margaret.langley@gmail.com | dwa | 8820 | 0001-01-01 |
1004 | Sandra Harera | sh@gmail.com | jeden | 10609 | 0001-01-01 |
1005 | Peter Lee | pl@gmail.com | dwa | 14333 | 0001-01-01 |
1006 | Jenny Keith | jk@gmail.com | dwa | 16538 | 0001-01-01 |
1009 | Harry Beaker | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1011 | Tom Hanks | th@gmail.com | 10100 | 0001-01-01 | |
1012 | Marcin Luther | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Keith Murray | km@gmail.com | jeden | 25000 | 0001-01-01 |
1015 | John Branson | jb@gmail.com | dwa | 15000 | 0001-01-01 |
1016 | Richarda Martina | 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 | dwa | 15000 | 2019-09-13 |
Upuszczanie widoku
Możemy usunąć widok za pomocą instrukcji DROP VIEW. Można użyć DROP VIEW, jeśli ma uprawnienia do przeglądania DROP ANY lub powinno być w ich schemacie. Opadający widok nie ma wpływu na tabelę bazową, na której został utworzony widok, ani na dane w tej tabeli.
Pytanie:
DROP VIEW (view name);
FAQs
Pytanie 1) Jak tworzyć widoki w MySQL?
Odpowiedź: Istnieje wiele sposobów tworzenia widoków w MySQL. Przeszliśmy przez cztery różne sposoby, jak pokazano poniżej.
darmowy konwerter youtube na mp3
1. MySQL Proste tworzenie widoku
2. MySQL Utwórz widok za pomocą GROUP BY i ORDER BY
3. MySQL Utwórz widok przy użyciu JOIN
4. MySQL Utwórz widok za pomocą podzapytania
Pytanie nr 2) Co to jest widok w MySQL?
Odpowiedź: Widoki są jak wstępnie wykonane zapytania przechowywane w strukturze logicznej, dzięki czemu nie musimy ponownie wykonywać złożonych zapytań w tabeli. Możemy po prostu wysłać zapytanie do widoku i uzyskać nasze dane bez wpływu na tabelę.
Pytanie nr 3) Czy możemy zastosować JOIN na widokach podczas tworzenia widoków?
Odpowiedź: Tak, instrukcji JOIN można używać na widokach, w podobny sposób, w jaki używamy ich na tabelach.
Pytanie 4) Czy możemy stworzyć widok z innego widoku?
Odpowiedź: Widoki zasadniczo działają jak tabele, ale jako wirtualne. Stąd sposób, w jaki tworzymy widoki na górze tabeli, możemy w podobny sposób tworzyć widoki na innym widoku.
Pytanie 5) Dlaczego używamy widoków?
Odpowiedź: W wyniku zapytania SQL widok tworzy tabelę logiczną. Używamy widoków z następujących powodów.
- Korzystając z widoku, możemy ograniczyć widoczność wierszy i kolumn (za pomocą klauzuli Select and Where) dla odpowiednich zadań.
- Widoki są używane, gdy łączymy wiersze i kolumny (używając Unia i Dołącz) z wielu tabel.
- Aby uzyskać bardziej wyrazistą prezentację agregowania wierszy (za pomocą grupowania według i posiadania) w tabeli z drobniejszymi szczegółami.
- Widoki są używane podczas zmiany nazwy lub dekodowania kolumny (przy użyciu AS) lub wierszy (przy użyciu JOIN, IF, CASE lub Oracle DECODE).
- Łącząc którekolwiek z powyższych z ustawieniami bezpieczeństwa, możemy sprawdzić, czy użytkownik ma dostęp tylko do tego, do czego ma uprawnienia.
Wniosek
W tym samouczku zbadaliśmy różne sposoby tworzenia widoku w MySQL.
1. MySQL Proste tworzenie widoku
2. MySQL Utwórz widok za pomocą GROUP BY i ORDER BY
3. MySQL Utwórz widok przy użyciu JOIN
4. MySQL Utwórz widok za pomocą podzapytania
W zależności od wymagań projektu możemy wybrać jedną z tych opcji.
Dalsza lektura = >> TABELA TWORZENIA MySQL
Miłej nauki !!
rekomendowane lektury
- MySQL ALTER TABLE - Jak dodać kolumnę do tabeli w MySQL
- Funkcje MySQL CONCAT i GROUP_CONCAT z przykładami
- MySQL COUNT I COUNT DISTINCT z przykładami
- MySQL Create Database - Jak utworzyć bazę danych w MySQL
- MySQL CREATE USER: Jak utworzyć nowego użytkownika w MySQL
- MySQL - samouczek dotyczący tworzenia widoku z przykładami kodu
- Klauzula MySQL GROUP BY - samouczek z przykładami
- MySQL JOIN Tutorial: Wewnętrzny, Zewnętrzny, Krzyż, Lewo, Prawo i Ja