Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Create View, Replace View i Drop View Statements z przykładami

Widok SQL to wirtualna tabela lub zestaw wyników wygenerowany przez zapytanie SELECT. W przeciwieństwie do tabel fizycznych widoki nie przechowują danych w bazie danych. Kiedy uruchamiamy zapytanie SELECT w celu wypełnienia danych, wykonuje ono zapytanie, które tworzy widok (definicja widoku).

Co to jest widok w MySQL

Załóżmy, że masz złożone zapytanie SQL, które używa wielu złączeń i złożonej logiki biznesowej. Często używasz tego zapytania w kodzie aplikacji. Jednak ze względu na wymagania biznesowe należy zmienić logikę zapytań. Zmiany wprowadzone w zapytaniu muszą odzwierciedlać całą aplikację.

W takich przypadkach lepiej jest utworzyć widok SQL i zawrzeć w nim logikę biznesową. Co więcej, gdy chcemy zmienić definicję zapytania, możemy zmienić definicję widoku zamiast wprowadzać zmiany w aplikacji.

Widoki mają również zastosowanie do ukrycia rzeczywistej nazwy i szczegółów tabeli. Jeśli przechowujemy poufne informacje dowolnego klienta w tabeli i chcemy pokazać tylko podstawowe dane, możemy utworzyć widok.

W tym artykule wyjaśniono Utwórz widok , Zastąp widok i Upuść widok użycie instrukcji na serwerze MySQL.

Próbka Baza danych Konfiguracja

Na potrzeby demonstracji zainstalowałem MySQL Server i stworzyłem fikcyjną bazę danych o nazwie EltechDB . W tej bazie danych utworzyłem tabelę o nazwie tblemployee .

Następujące zapytanie tworzy EltechDB baza danych:

Create database EltechDB;

Następujące zapytanie tworzy tblemployee tabela:

CREATE TABLE tblemployees (
    emp_no      INT             NOT NULL,
    birth_date  DATE            NOT NULL,
    first_name  VARCHAR(14)     NOT NULL,
    last_name   VARCHAR(16)     NOT NULL,
    gender      ENUM ('M','F')  NOT NULL,    
    hire_date   DATE            NOT NULL,
    PRIMARY KEY (emp_no)
);

Wstawiłem kilka fikcyjnych rekordów do tblemployee tabela za pomocą następującego zapytania:

INSERT INTO `EltechDB`.`tblemployees` 
VALUES 
(10001,'1953-09-02','Georgi','Facello','M','1986-06-26'),
(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21'),
(10003,'1959-12-03','Parto','Bamford','M','1986-08-28'),
(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01'),
(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'),
(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'),
(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10'),
(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15'),
(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'),
(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');

Teraz wyjaśnijmy instrukcje zarządzania widokami MySQL.

Jak stworzyć widok w MySQL

Instrukcja Create View tworzy nowy widok w bazie danych. Składnia jest następująca:

Create View view_name
As
Select * from base_table

Tutaj:

  • nazwa_widoku jest pożądaną nazwą widoku.
  • wybierz * z to zapytanie, które generuje widok przy użyciu base_table . Zapytanie jest określone po AS słowo kluczowe.

Przykład składni tworzenia widoku MySQL

Załóżmy, że chcemy utworzyć widok wypełniający listę pracowników. Definicja widoku jest następująca:

Create view vwEmployees
as
select * from tblemployees;

Aby uzyskać dostęp do danych Widoku, możemy użyć zapytania SELECT. Aby wyświetlić dane vwEmployees , uruchom następujące zapytanie:

mysql> select * from vwEmployees;

Wyjście:

Filtruj dane widoku za pomocą klauzuli WHERE

Możemy filtrować dane wyjściowe View za pomocą klauzuli WHERE. W naszym przypadku chcemy pobrać listę kobiet pracownicy od pracowników vw . Zapytanie jest następujące:

mysql> select * from vwEmployees where gender='F';

Wynik zapytania to:

Weźmy inny przykład. Chcemy pobrać listę pracowników, których numer pracownika jest mniejszy niż 10005 . Zapytanie jest następujące:

mysql> select * from vwemployees where emp_no<10005;

Wyjście zapytania:

Użyj funkcji agregacji w widoku

Możemy używać funkcji agregujących w widoku.

Tutaj chcemy wypełnić liczbę pracowników płci męskiej i żeńskiej z grupy vwEmployees Pogląd. Najpierw używamy funkcji ILE.LICZB, aby uzyskać liczbę pracowników. Następnie używamy klauzuli GROUP BY, aby pogrupować dane wyjściowe na podstawie kolumny płci. Zapytanie jest następujące:

mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;

Wyjście zapytania:

Użyj funkcji Data-Czas w widoku

Możemy użyć funkcji data-czas na wyjściu View. Pobierzmy listę pracowników, których rok dołączenia jest większy lub równy 1990. Zapytanie jest następujące:

mysql> select * from vwemployees where Year(hire_date)>=1990;

Wyjście zapytania:

Użyj funkcji Control-Flow w widoku

Możemy użyć funkcji CASE lub IF na wyjściu Widoku.

Drukujemy wartość płci w jakimś znaczącym formacie. Dane wyjściowe kolumny płci zwróconej przez widok to M lub F. Zamiast drukowania M zapytanie musi zwrócić Mężczyzna . Podobnie, zamiast drukowania F, zapytanie musi zwrócić Kobieta . Zapytanie jest następujące:

mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;

Wyjście zapytania:

Przeczytaj więcej, jak utworzyć widok w SQL.

Zastąp oświadczenie dotyczące widoku

Polecenie ZAMIEŃ WIDOK służy do zmiany definicji widoku. Słowa kluczowe CREATE VIEW i REPLACE VIEW są używane razem. Składnia jest następująca:

Create or replace View view_name
As
Select * from base_table

Tutaj:

  • Utwórz lub zamień widok: Te słowa kluczowe służą do tworzenia lub zastępowania istniejącego widoku. Kiedy uruchamiamy instrukcję create lub replace view, MySQL sprawdza, czy istnieje ona w bazie danych. Jeśli widok istnieje, zmienia definicję widoku przy użyciu zapytania określonego po słowie kluczowym AS. Jeśli widok nie istnieje, tworzy nowy widok przy użyciu zapytania określonego po słowie kluczowym AS.
  • nazwa_widoku jest pożądaną nazwą widoku.
  • wybierz * z to zapytanie używane do generowania widoku przy użyciu base_table . Zapytanie jest określone po AS słowo kluczowe.

Uwaga: Utwórz lub zamień słowa kluczowe widoku, utwórz nowy widok lub zmień istniejącą definicję widoku.

Wpisz nazwę widoku w „nazwa_bazy”.„nazwa_widoku” format . Jeśli nie określisz bazy danych, możesz utworzyć widok w innej bazie danych.

Przykład instrukcji MySQL CREATE View lub MySQL REPLACE View

Chcemy pokazać tylko imię, nazwisko i płeć pracowników. Ponadto chcemy nadać kolumnom odpowiednie nazwy. Na przykład imię i nazwisko wartości kolumn należy połączyć, a nazwa kolumny musi być nazwiskiem pracownika. Zapytanie SQL powinno wyglądać następująco:

mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees; 

Uruchom następujące zapytanie SELECT, aby wyświetlić dane od vwEmployees :

mysql> select * from vwEmployees

Wyjście zapytania:

Jak widać, imię i nazwisko wartości są łączone w EmployeeName kolumna wskazująca, że ​​definicja widoku została zaktualizowana.

Oświadczenie MySQL DROP View

Słowo kluczowe DROP View służy do usunięcia widoku z bazy danych. Składnia jest następująca:

Drop View ‘database_name’.’view_name’

W składni nazwa_widoku to nazwa widoku, który chcesz usunąć.

Odrzućmy vwEmployees Wyświetl za pomocą instrukcji DROP View. Wykonaj następujące zapytanie:

mysql> DROP VIEW `eltechdb`.`vwemployees`;

Aby sprawdzić, czy widok został usunięty, uruchom następujące zapytanie:

mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';

Wyjście:

Zapytanie zwróciło zero wierszy, co wskazuje, że widok został usunięty.

Podsumowanie

W tym artykule wyjaśniono i zademonstrowano widoki MySQL oraz sposoby tworzenia i zarządzania tymi widokami. Wyjaśniono również użycie instrukcji CREATE VIEW, REPLACE View i DROP View. CREATE View służy do tworzenia widoku, REPLACE View zmienia definicję widoku, a DROP View usuwa widok.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL (lub PHP?) grupuje wyniki według danych pola

  2. Jak porównywać wydajność MySQL za pomocą SysBench?

  3. CURRENT_DATE/CURDATE() nie działa jako domyślna wartość DATE

  4. SEC_TO_TIME() Przykłady – MySQL

  5. Jak policzyć wszystkie wiersze przy użyciu SELECT z LIMIT w zapytaniu MySQL?