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

MySQL Създаване на изглед, замяна на изглед и изхвърляне на изявления с примери

SQL изгледът е виртуална таблица или набор от резултати, генерирани от заявката SELECT. За разлика от физическите таблици, изгледите не съхраняват данни в база данни. Когато изпълним заявката SELECT, за да попълним данните, тя изпълнява заявка, която създава изгледа (дефиниция на изглед).

Какво е View в MySQL

Да предположим, че използвате сложна SQL заявка, която използва множество обединения и сложна бизнес логика. Често използвате тази заявка в кода на приложението. Въпреки това, поради бизнес изискване, трябва да промените тази логика на заявката. Промените, направени в заявка, трябва да се отразят в цялото приложение.

В такива случаи е за предпочитане да се създаде SQL изглед и да се капсулира бизнес логиката в него. Освен това, когато искаме да променим дефиницията на заявката, можем да променим дефиницията на изгледа, вместо да правим промени в приложението.

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

Тази статия ще обясни Създаване на изглед , Замяна на изглед и Drop View използване на изрази в MySQL сървъра.

Проба База данни Настройка

За демонстрацията инсталирах MySQL Server и създадох фиктивна база данни с име EltechDB . В тази база данни създадох таблица с име tblemployee .

Следната заявка създава EltechDB база данни:

Create database EltechDB;

Следната заявка създава tblemployee таблица:

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

Вмъкнах някои фиктивни записи в tblemployee таблица с помощта на следната заявка:

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

Сега нека изясним изразите за управление на изгледите на MySQL.

Как да създадете изглед в MySQL

Инструкцията за създаване на изглед създава нов изглед в база данни. Синтаксисът е следният:

Create View view_name
As
Select * from base_table

Тук:

  • име на изглед е желаното име на изгледа.
  • изберете * от е заявката, която генерира изгледа с помощта на base_table . Заявката се посочва след AS ключова дума.

Пример за синтаксис за създаване на MySQL изглед

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

Create view vwEmployees
as
select * from tblemployees;

За достъп до данните на изгледа можем да използваме заявката SELECT. За да видите данните на vwEmployees , изпълнете следната заявка:

mysql> select * from vwEmployees;

Изход:

Филтрирайте данните на изгледа с помощта на клаузата WHERE

Можем да филтрираме изхода View с помощта на клаузата WHERE. В нашия случай искаме да извлечем списъка сженски служители от vwEmployees . Запитването е както следва:

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

Резултатът от заявката е:

Да вземем друг пример. Искаме да извлечем списъка на служителите, чийто брой на служителите е по-малък от 10005 . Запитването е както следва:

mysql> select * from vwemployees where emp_no<10005;

Изход на заявка:

Използвайте агрегатната функция в изгледа

Можем да използваме агрегатните функции на изгледа.

Тук искаме да попълним броя на служителите мъже и жени от vwEmployees Преглед. Първо, използваме функцията COUNT, за да получим броя на служителите. След това използваме клаузата GROUP BY, за да групираме изхода въз основа на колоната за пол. Запитването е както следва:

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

Изход на заявка:

Използвайте функцията дата-час в изгледа

Можем да използваме функцията дата-час на изхода View. Нека извлечем списъка на служителите, чиято година на присъединяване е по-голяма или равна на 1990 г. Запитването е както следва:

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

Изход на заявка:

Използвайте функцията Control-Flow в изгледа

Можем да използваме функцията CASE или IF на изхода на View.

Отпечатваме стойността на пола в някакъв смислен формат. Резултатът от колоната за пол, върнат от изгледа, е M или F. Вместо да отпечатва M, заявката трябва да върне Мъж . По същия начин, вместо отпечатването F, заявката трябва да върне Женски . Запитването е както следва:

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

Изход на заявка:

Прочетете повече как да създадете изглед в SQL.

Изявление за замяна на изглед

REPLACE VIEW се използва за промяна на дефиницията на изглед. Ключовите думи CREATE VIEW и REPLACE VIEW се използват заедно. Синтаксисът е следният:

Create or replace View view_name
As
Select * from base_table

Тук:

  • Създаване или замяна на изглед: Тези ключови думи служат за създаване или замяна на съществуващия изглед. Когато стартираме израза create или replace view, MySQL проверява дали съществува в базата данни. Ако изгледът съществува, той променя дефиницията на изглед, като използва заявката, посочена след ключовата дума AS. Ако изгледът не съществува, той създава нов изглед, използвайки заявката, посочена след ключовата дума AS.
  • име на изглед е желаното име на изгледа.
  • изберете * от е заявката, която се използва за генериране на изгледа с помощта на base_table . Заявката се посочва след AS ключова дума.

Забележка: Създаване или замяна на ключови думи за изглед създайте нов изглед или променете съществуващата дефиниция на изглед.

Напишете името на изгледа в ‘database_name’.‘view_name’ формат . Ако не посочите базата данни, може да създадете изгледа в друга база данни.

Пример за MySQL CREATE View или MySQL REPLACE View изявления

Искаме да показваме само името, фамилията и пола на служителите. Също така искаме да предоставим подходящи имена на колоните. Например first_name и фамилно_име Стойностите на колоните трябва да се комбинират, а името на колоната трябва да е името на служителя. SQL заявката трябва да бъде както следва:

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

Изпълнете следната заявка SELECT, за да видите данните от vwEmployees :

mysql> select * from vwEmployees

Изход на заявка:

Както можете да видите, first_name и фамилно_име стойностите се комбинират в Име на служител колона, показваща, че дефиницията на изглед е актуализирана.

Изявлението за MySQL DROP View

Ключовата дума DROP View служи за премахване на изгледа от базата данни. Синтаксисът е следният:

Drop View ‘database_name’.’view_name’

В синтаксиса име_изглед е името на изгледа, който искате да премахнете.

Нека оставим vwEmployees Преглед с помощта на оператора DROP View. Изпълнете следната заявка:

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

За да проверите дали изгледът е отпаднал, изпълнете следната заявка:

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

Изход:

Заявката върна нула реда, което показва, че изгледът е изтрит.

Резюме

Тази статия обяснява и демонстрира изгледите на MySQL и начините за създаване и управление на тези изгледи. Той също така изясни използването на изразите CREATE VIEW, REPLACE View и DROP View. CREATE View се използва за създаване на изглед, REPLACE View променя дефиницията на изгледа, а DROP View изтрива изгледа.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на времева разлика между две времена в PHP

  2. PDO fetchAll групови двойки ключ-стойност в асоцииран масив

  3. MySQL получава липсващи идентификатори от таблицата

  4. MySQL> Таблица не съществува. Но го прави (или трябва)

  5. скрипт за конвертиране на mysql dump sql файл във формат, който може да бъде импортиран в sqlite3 db