Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате изгледи в MySQL база данни

Изглед в MySQL е наименувана заявка, която може да се задейства за показване на данни, съхранявани в други таблици. С други думи, изгледите са дефинирани от потребителя виртуални таблици. Изгледите могат да се използват за:

  • Подобрете сигурността на базата данни. Ако вашата база данни съдържа чувствителна информация, която трябва да бъде защитена, използването на изглед ви помага да изолирате данните. Изглед може да бъде създаден с предварително дефиниран набор от резултати и можете да предоставите на потребителите достъп само до този изглед, вместо до таблицата, която съдържа поверителна информация.
  • Преместете сложна бизнес логика към сървъра на базата данни. Вместо да кодира често използвана софтуерна логика в различни клиенти, разработчикът може да премести логиката на ниво база данни, използвайки изглед. Например може да се създаде изглед за показване на класификации на клиенти в зависимост от общите им продажби.
  • Намалете разсейването на данните. Изгледът може да комбинира резултати от различни таблици и да показва съответните колони само при извикване.

В това ръководство ще научите:

  • Как е структуриран синтаксисът на изглед на MySQL.
  • Как да създадете изглед на MySQL.
  • Как да извикате изглед на MySQL.
  • Как да махнете изглед в MySQL.

Преди да започнете

За да следвате това ръководство, уверете се, че имате следното:

  1. Linode, на който стартирате софтуера MySQL. Можете да следвате ръководството Първи стъпки с Linode, за да осигурите Linode.

  2. MySQL сървърният софтуер (или MariaDB), инсталиран на вашия Linode. Моля, вижте раздела MySQL, който съдържа ръководства, които описват как да инсталирате MySQL в няколко Linux дистрибуции.

Подготовка на базата данни

Преди да създадете вашите MySQL изгледи, създайте примерна база данни, дефинирайте няколко таблици и първо ги попълнете с някои данни:

  1. SSH към вашия Linode. След това въведете тази команда, за да влезете в MySQL като root потребител:

    mysql -u root -p
    

    Когато бъдете подканени, въведете root паролата на вашия MySQL сървър и натиснете Enter за да продължите.

    Забележка

    Ако паролата ви не е приета, може да се наложи да изпълните предишната команда с sudo :

    sudo mysql -u root -p
    
  2. Ако вашата парола е приета, трябва да видите подканата за MySQL:

    
    mysql >
    
    Забележка

    Ако използвате MariaDB, вместо това може да видите подкана като следната:

    
    MariaDB [(none)]>
    
  3. След това изпълнете тази SQL команда, за да създадете примерна база данни с име sample_database :

    CREATE DATABASE sample_database;
    

    Трябва да видите този изход, който потвърждава, че базата данни е създадена успешно:

    
    Query OK, 1 row affected (0.02 sec)
    
  4. Изберете sample_database база данни:

    USE sample_database;
    

    Трябва да видите този изход:

    
    Database changed
    
  5. Изпълнете тази команда, за да създадете customers таблица:

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

    Трябва да видите този изход:

    
    Query OK, 0 rows affected (0.07 sec)
    
  6. След това попълнете customers таблица с три записа. Изпълнете долния INSERT команди една по една:

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

    Изходът по-долу се показва след вмъкване на всеки запис:

    
    Query OK, 1 row affected (0.08 sec)
    ...
    
  7. Уверете се, че примерните записи са били вмъкнати в базата данни, като изпълните този SELECT команда:

    SELECT * FROM customers;
    

    Появява се този изход, който потвърждава, че данните са били вмъкнати успешно в предишната стъпка:

    
    +-------------+---------------+
    | customer_id | customer_name |
    +-------------+---------------+
    |           1 | Leslie        |
    |           2 | Andy          |
    |           3 | Ben           |
    +-------------+---------------+
    3 rows in set (0.01 sec)
    
  8. След това създайте sales маса. Изпълнете тази команда:

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

    Появява се този изход:

    
    Query OK, 0 rows affected (0.07 sec)
    
  9. След това добавете някои данни към sales маса. Изпълнете тези команди една по една:

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

    След вмъкване на всеки запис за продажби се появява този изход:

    
    Query OK, 1 row affected (0.01 sec)
    ...
    
  10. След това стартирайте SELECT заявка, за да проверите дали данните за продажбите са вмъкнати в таблицата:

    SELECT * FROM sales;
    

    Появява се този изход, който потвърждава, че данните за продажбите са били вмъкнати успешно в предишната стъпка:

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

Вие сте дефинирали базата данни и таблиците, върху които да работите. Следващият раздел описва синтаксиса на изглед на MySQL.

Синтаксисът на MySQL View

Това е опростена версия на синтаксиса на MySQL изглед:

    CREATE
    VIEW view_name
    AS select_statement
  • view_name :Името на изгледа на MySQL трябва да бъде дефинирано тук. Препоръчително е да използвате описателно име, за да можете да запомните функцията на изгледа по-късно.

  • select_statement :Това е SQL заявката, която е съчетана с дефинирания изглед. Когато изгледът е извикан, MySQL изпълнява тази заявка, за да върне набор от записи.

Създаване на MySQL изглед

Този раздел представя примерен изглед на MySQL. Този изглед се използва за класифициране на клиенти от примерната ви база данни в зависимост от броя им на месечните продажби.

Уверете се, че сте влезли във вашия MySQL сървър. След това изпълнете командата по-долу, за да създадете customers_membership изглед:

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;

Ако изгледът е създаден успешно, трябва да видите изхода, показан по-долу:


Query OK, 0 rows affected (0.01 sec)

Горната команда MySQL създава изглед с име customers_membership който се присъединява към customers и sales таблица с PRIMARY KEY customer_id . Логическият IF(expression, value_if_true, value_if_false) логиката на изявленията се използва за определяне на членството на клиента от техните месечни продажби:

  • Ако продажбите на клиента са равни или над 5000, изгледът класифицира клиента като PREMIUM член.

  • В противен случай (ако продажбите са под 5,000 ), клиентът е класифициран като BASIC член.

customers_membership изгледът вече е запазен в базата данни. Следващият раздел показва как да извикате изглед на MySQL и да покажете набор от записи, без да правите директно запитване към базовите таблици.

Извикване на изглед на MySQL

Този раздел показва как да извикате изгледа на MySQL, който сте създали по-горе, и да потвърдите, че работи според очакванията. След като изгледът е създаден, той се вижда като обект на база данни и може да бъде извикан с помощта на SELECT изявление.

  1. За да извикате customers_membership преглед, стартиране:

    SELECT * FROM customers_membership;
    

    Ако изгледът работи според очакванията, сега трябва да видите списък с клиенти с генерираното от тях membership стойности въз основа на техните продажби. От Leslie продажбите на клиента бяха под 5000 (500.27), изгледът извежда членството на клиента като BASIC . Andy и Ben продажбите на 7600,32 и 25879,63 съответно и това ги прави PREMIUM членове:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    +-------------+---------------+------------+
    3 rows in set (0.00 sec)
    
  2. След като данните на основната таблица се актуализират и отново извикате изглед на MySQL, трябва да видите най-новата информация. Изгледите изтеглят информация от своите основни таблици и не съхраняват данните. За да демонстрирате как изгледът извлича актуализирана информация от базовите таблици, добавете друг клиент на име Rajie на customers таблица:

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

    Появява се този изход:

    
    Query OK, 1 row affected (0.01 sec)
    
  3. След това добавете информация за месечните продажби на клиента към таблицата за продажби:

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

    Появява се този изход:

    
    Query OK, 1 row affected (0.01 sec)
    
  4. След това извикайте customers_membership вижте отново:

    SELECT * FROM customers_membership;
    

    Появява се изходът по-долу, който потвърждава, че изгледът е в състояние да вземе промени и да изтегли информацията за новите клиенти, както се очаква:

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

    Както можете да видите в набора от записи по-горе, вече имате нов клиент на име Rajie с BASIC членство.

Изпускане на изглед на MySQL

Точно като други обекти на база данни, можете да изтриете изгледи, ако вече не се нуждаете от тях. Това е основният синтаксис за премахване на изглед на MySQL:

    DROP VIEW IF EXISTS view_name;
  1. Преди да пуснете изглед на MySQL, първо идентифицирайте името му, като изпълните командата по-долу:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    

    Появява се списък с всички изгледи в текущо избраната база данни:

    
    +---------------------------+------------+
    | Tables_in_sample_database | Table_type |
    +---------------------------+------------+
    | customers_membership      | VIEW       |
    +---------------------------+------------+
    1 row in set (0.01 sec)
    
  2. В този случай името на изгледа, който искате да премахнете, е customers_membership . Така че, за да го изтриете, изпълнете:

    DROP VIEW IF EXISTS customers_membership;
    

    Уверете се, че изходът по-долу се показва, след като изгледът бъде изтрит от базата данни:

    
    Query OK, 0 rows affected (0.01 sec)
    
    Забележка Моля, обърнете внимание, ако се опитате да изтриете изглед на MySQL, който не съществува, без да използвате IF EXISTS ключова дума, MySQL извежда грешка.
  3. Когато командата от стъпка 1 се изпълни отново, вече не трябва да има резултати:

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

Повече информация

Може да пожелаете да се консултирате със следните ресурси за допълнителна информация по тази тема. Въпреки че те са предоставени с надеждата, че ще бъдат полезни, моля, имайте предвид, че не можем да гарантираме за точността или навременността на външно хостваните материали.

  • MySQL – Използване на изгледи

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да ИЗБЕРЯ редове с MAX (стойност на колона), PARTITION от друга колона в MYSQL?

  2. Как да промените паролата на базата данни

  3. Определете ранг въз основа на множество колони в MySQL

  4. Как да АКТУАЛИЗИРАМ ред в таблица или да го вмъкна, ако не съществува?

  5. Как да замените част от низ в MySQL