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

Jak korzystać z widoków w bazie danych MySQL

widok w MySQL to nazwane zapytanie, które może zostać wywołane w celu wyświetlenia danych przechowywanych w innych tabelach. Innymi słowy, widoki są wirtualnymi tabelami zdefiniowanymi przez użytkownika. Widoki mogą być używane do:

  • Zwiększ bezpieczeństwo bazy danych. Jeśli Twoja baza danych zawiera poufne informacje, które wymagają zabezpieczenia, użycie widoku pomoże Ci wyizolować dane. Widok można utworzyć ze wstępnie zdefiniowanym zestawem wyników, a użytkownikom można przyznać dostęp tylko do tego widoku, a nie do tabeli zawierającej poufne informacje.
  • Przenieś złożoną logikę biznesową na serwer bazy danych. Zamiast kodować często używaną logikę oprogramowania w różnych klientach, programista może przenieść logikę na poziom bazy danych za pomocą widoku. Na przykład można utworzyć widok, aby wyświetlić klasyfikacje klientów w zależności od ich całkowitej sprzedaży.
  • Ogranicz rozpraszanie danych. Widok może łączyć wyniki z różnych tabel i wyświetlać tylko odpowiednie kolumny po wywołaniu.

Z tego przewodnika dowiesz się:

  • Jak skonstruowana jest składnia widoku MySQL.
  • Jak utworzyć widok MySQL.
  • Jak wywołać widok MySQL.
  • Jak usunąć widok w MySQL.

Zanim zaczniesz

Aby postępować zgodnie z tym przewodnikiem, upewnij się, że masz następujące elementy:

  1. Linode, na którym uruchamiasz oprogramowanie MySQL. Możesz postępować zgodnie z przewodnikiem Wprowadzenie do Linode, aby udostępnić Linode.

  2. Oprogramowanie serwera MySQL (lub MariaDB) zainstalowane na twoim Linode. Zapoznaj się z sekcją MySQL, która zawiera przewodniki opisujące, jak zainstalować MySQL w kilku dystrybucjach Linuksa.

Przygotowywanie bazy danych

Zanim utworzysz widoki MySQL, utwórz przykładową bazę danych, zdefiniuj kilka tabel i wypełnij je danymi:

  1. SSH do twojego Linode. Następnie wprowadź to polecenie, aby zalogować się do MySQL jako użytkownik root:

    mysql -u root -p
    

    Po wyświetleniu monitu wprowadź hasło roota serwera MySQL i naciśnij Enter aby kontynuować.

    Uwaga

    Jeśli twoje hasło nie zostanie zaakceptowane, być może będziesz musiał uruchomić poprzednie polecenie z sudo :

    sudo mysql -u root -p
    
  2. Jeśli Twoje hasło zostało zaakceptowane, powinieneś zobaczyć monit MySQL:

    
    mysql >
    
    Uwaga

    Jeśli korzystasz z MariaDB, zamiast tego możesz zobaczyć monit podobny do następującego:

    
    MariaDB [(none)]>
    
  3. Następnie uruchom to polecenie SQL, aby utworzyć przykładową bazę danych o nazwie sample_database :

    CREATE DATABASE sample_database;
    

    Powinieneś zobaczyć ten wynik, który potwierdza, że ​​baza danych została pomyślnie utworzona:

    
    Query OK, 1 row affected (0.02 sec)
    
  4. Wybierz sample_database baza danych:

    USE sample_database;
    

    Powinieneś zobaczyć to wyjście:

    
    Database changed
    
  5. Uruchom to polecenie, aby utworzyć customers tabela:

     CREATE TABLE customers
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     customer_name VARCHAR(50)
     ) ENGINE = InnoDB;
    

    Powinieneś zobaczyć to wyjście:

    
    Query OK, 0 rows affected (0.07 sec)
    
  6. Następnie wypełnij customers tabela z trzema rekordami. Uruchom poniższy INSERT polecenia jeden po drugim:

    INSERT INTO customers (customer_name) VALUES ('Leslie');
    INSERT INTO customers (customer_name) VALUES ('Andy');
    INSERT INTO customers (customer_name) VALUES ('Ben');
    

    Poniższe dane wyjściowe są wyświetlane po wstawieniu każdego rekordu:

    
    Query OK, 1 row affected (0.08 sec)
    ...
    
  7. Upewnij się, że przykładowe rekordy zostały wstawione do bazy danych, uruchamiając ten SELECT polecenie:

    SELECT * FROM customers;
    

    Pojawi się ten wynik, który potwierdza, że ​​dane zostały pomyślnie wstawione w poprzednim kroku:

    
    +-------------+---------------+
    | customer_id | customer_name |
    +-------------+---------------+
    |           1 | Leslie        |
    |           2 | Andy          |
    |           3 | Ben           |
    +-------------+---------------+
    3 rows in set (0.01 sec)
    
  8. Następnie utwórz sales stół. Uruchom to polecenie:

     CREATE TABLE sales
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     monthly_sales DECIMAL(17,2)
     ) ENGINE = InnoDB;
    

    Pojawia się to wyjście:

    
    Query OK, 0 rows affected (0.07 sec)
    
  9. Następnie dodaj trochę danych do sales stół. Uruchom te polecenia jeden po drugim:

    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');
    

    Po wstawieniu każdego rekordu sprzedaży pojawi się następujący wynik:

    
    Query OK, 1 row affected (0.01 sec)
    ...
    
  10. Następnie uruchom SELECT zapytanie, aby sprawdzić, czy dane sprzedaży zostały wstawione do tabeli:

    SELECT * FROM sales;
    

    Pojawi się ten wynik, który potwierdza, że ​​dane sprzedaży zostały pomyślnie wstawione w poprzednim kroku:

    
    
    
    
    +-------------+---------------+
    | customer_id | monthly_sales |
    +-------------+---------------+
    |           1 |        500.27 |
    |           2 |       7600.32 |
    |           3 |      25879.63 |
    +-------------+---------------+
    3 rows in set (0.00 sec)
    

Zdefiniowałeś bazę danych i tabele do pracy. Następna sekcja opisuje składnię widoku MySQL.

Składnia widoku MySQL

To jest uproszczona wersja składni widoku MySQL:

    CREATE
    VIEW view_name
    AS select_statement
  • view_name :Tutaj należy zdefiniować nazwę widoku MySQL. Wskazane jest użycie nazwy opisowej, aby móc później zapamiętać funkcję widoku.

  • select_statement :To jest zapytanie SQL połączone ze zdefiniowanym widokiem. Po wywołaniu widoku MySQL uruchamia to zapytanie, aby zwrócić zestaw rekordów.

Tworzenie widoku MySQL

Ta sekcja przedstawia przykładowy widok MySQL. Ten widok służy do klasyfikowania klientów z Twojej przykładowej bazy danych w zależności od ich liczby miesięcznej sprzedaży.

Upewnij się, że jesteś zalogowany na swoim serwerze MySQL. Następnie uruchom poniższe polecenie, aby utworzyć customers_membership widok:

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;

Jeśli widok zostanie pomyślnie utworzony, powinieneś zobaczyć dane wyjściowe pokazane poniżej:


Query OK, 0 rows affected (0.01 sec)

Powyższe polecenie MySQL tworzy widok o nazwie customers_membership która dołącza do customers i sales tabela z PRIMARY KEY customer_id . Logiczne IF(expression, value_if_true, value_if_false) Logika wyciągu służy do określenia członkostwa klienta na podstawie jego miesięcznej sprzedaży:

  • Jeśli sprzedaż klienta jest równa lub wyższa niż 5000, widok klasyfikuje klienta jako PREMIUM członek.

  • W przeciwnym razie (jeśli sprzedaż spadnie poniżej 5,000 ), klient jest klasyfikowany jako BASIC członek.

customers_membership widok jest teraz zapisany w bazie danych. Następna sekcja pokazuje, jak wywołać widok MySQL i wyświetlić zestaw rekordów bez bezpośredniego odpytywania tabel bazowych.

Wywoływanie widoku MySQL

Ta sekcja pokazuje, jak wywołać widok MySQL, który utworzyłeś powyżej i potwierdzić, że działa zgodnie z oczekiwaniami. Po utworzeniu widok jest widoczny jako obiekt bazy danych i można go wywołać za pomocą SELECT oświadczenie.

  1. Aby wywołać customers_membership zobacz, uruchom:

    SELECT * FROM customers_membership;
    

    Jeśli widok działa zgodnie z oczekiwaniami, powinieneś teraz zobaczyć listę klientów z ich wygenerowanym membership wartości na podstawie ich sprzedaży. Od Leslie sprzedaż była poniżej 5000 (500,27), widok wyświetla członkostwo klienta jako BASIC . Andy i Ben sprzedaż wyniosła odpowiednio 7600,32 i 25879,63, co czyni je PREMIUM członkowie:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    +-------------+---------------+------------+
    3 rows in set (0.00 sec)
    
  2. Po zaktualizowaniu danych tabeli podstawowej i ponownym wywołaniu widoku MySQL, powinieneś zobaczyć najnowsze informacje. Widoki pobierają informacje ze swoich tabel podstawowych i nie przechowują danych. Aby zademonstrować, w jaki sposób widok pobiera zaktualizowane informacje z tabel podstawowych, dodaj innego klienta o nazwie Rajie do customers tabela:

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

    Pojawia się to wyjście:

    
    Query OK, 1 row affected (0.01 sec)
    
  3. Następnie dodaj miesięczne informacje o sprzedaży klienta do tabeli sprzedaży:

    INSERT INTO sales (customer_id, monthly_sales) VALUES ('4', '147.41');
    

    Pojawia się to wyjście:

    
    Query OK, 1 row affected (0.01 sec)
    
  4. Następnie wywołaj customers_membership zobacz ponownie:

    SELECT * FROM customers_membership;
    

    Pojawia się poniższy wynik, który potwierdza, że ​​widok jest w stanie wychwycić zmiany i pobrać informacje o nowych klientach zgodnie z oczekiwaniami:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    |           4 | Rajie         | BASIC      |
    +-------------+---------------+------------+
    4 rows in set (0.00 sec)
    

    Jak widać w powyższym zestawie rekordów widoku, masz teraz nowego klienta o nazwie Rajie z BASIC członkostwo.

Porzucanie widoku MySQL

Podobnie jak inne obiekty bazy danych, możesz usuwać widoki, jeśli już ich nie potrzebujesz. To jest podstawowa składnia usuwania widoku MySQL:

    DROP VIEW IF EXISTS view_name;
  1. Przed upuszczeniem widoku MySQL, najpierw zidentyfikuj jego nazwę, uruchamiając poniższe polecenie:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    

    Pojawi się lista wszystkich widoków w aktualnie wybranej bazie danych:

    
    +---------------------------+------------+
    | Tables_in_sample_database | Table_type |
    +---------------------------+------------+
    | customers_membership      | VIEW       |
    +---------------------------+------------+
    1 row in set (0.01 sec)
    
  2. W tym przypadku nazwa widoku, który chcesz usunąć, to customers_membership . Aby go usunąć, uruchom:

    DROP VIEW IF EXISTS customers_membership;
    

    Upewnij się, że poniższe dane wyjściowe są wyświetlane po usunięciu widoku z bazy danych:

    
    Query OK, 0 rows affected (0.01 sec)
    
    Uwaga Pamiętaj, że jeśli spróbujesz usunąć widok MySQL, który nie istnieje bez użycia IF EXISTS słowo kluczowe, MySQL zgłasza błąd.
  3. Po ponownym uruchomieniu polecenia z kroku 1 nie powinno być żadnych wyników:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    
    
    Empty set (0.000 sec)
    

Więcej informacji

Dodatkowe informacje na ten temat można znaleźć w poniższych zasobach. Chociaż są one dostarczane w nadziei, że będą przydatne, należy pamiętać, że nie możemy ręczyć za dokładność ani aktualność materiałów hostowanych zewnętrznie.

  • MySQL — korzystanie z widoków

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zalety MySQLi nad MySQL

  2. Policz dni między dwiema datami, z wyłączeniem weekendów (tylko MySQL)

  3. Jak obliczyć procentowy wzrost z tygodnia na tydzień w MySQL?

  4. MySQL usuwa niektóre klucze obce

  5. Wykryto spowolnienie podczas wybierania i kodowania obrazu w bazie 64 z bazy danych