mysql create view tutorial with code examples
Този урок за създаване на изглед на MySQL обяснява всичко за създаването на изглед в MySQL с помощта на различни клаузи и примери. Той също така обхваща как да пуснете и управлявате изгледи:
В MySQL изгледът е виртуална таблица, която ни позволява да погледнем данните в таблицата, без да блокира достъпа на таблицата от други програми и по този начин да ни помогне да избегнем ситуации на блокиране.
Изгледите се създават върху една или повече от една таблица, която съдържа данни. Преди да продължите напред, моля, обърнете внимание, че ние използваме MySQL версия 8.0 .
Какво ще научите:
MySQL Create View
Синтаксис:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;
Обяснение на синтаксиса:
- Синтаксисът започва с ключовата дума „CREATE VIEW“, като по този начин информира MySQL сървъра за вида дейност, която трябва да се извърши. Това е задължителна ключова дума и не може да бъде пропусната.
- REPLACE е незадължителен параметър. Можем да използваме това, докато работим върху съществуващ изглед.
- Следва името на изгледа. Той трябва да бъде уникален, точно като имената на таблици и колони.
- След това изберете колоните от таблицата. Изгледът може да има всички колони на основната таблица или само няколко избрани.
- След това идва името на таблицата, върху която трябва да се извърши изгледът. Това е задължително и не може да се пропусне.
- След това идва условието WHERE, което ограничава или филтрира броя на целевите редове, върху които трябва да се приложи действието CREATE VIEW. WHERE също е ключова дума, но незадължителна.
Клаузата WHERE обаче е съществена. Ако не е споменато или ако условието не е зададено правилно, тогава или цялата таблица, или ненужните редове ще бъдат част от изгледа.
Пример за MySQL Create View
По-долу е дадена примерна таблица, създадена в MYSQL.
Име на схемата: тихоокеански
Име на таблицата: служители
Имена на колони:
empNum : Съдържа целочислени стойности за номера на служителя.
фамилия : Съдържа стойности на varchar за фамилното име на служителя.
първо име : Съдържа varchar стойности за собственото име на служителя.
електронна поща : Съдържа стойности на varchar за имейл адреса на служителя.
deptNum : Съдържа varchar за идентификатор на отдел, към който принадлежи служител.
заплата : Съдържа десетични стойности на заплата за всеки служител.
начална дата : Съдържа стойности на датата за датата на присъединяване на служителя.
Име на схемата: тихоокеански
Име на таблицата: отдели
Имена на колони:
deptNum; Съдържа varchar за идентификатора на отдела в рамките на организация.
град: Съдържа името на града, от който работят отделите.
страна: Съдържа името на държавата, съответстваща на града.
бонус Съдържа процентната стойност на бонуса.
MySQL Simple Създаване на изглед
Сега нека създадем изглед отгоре на горната таблица.
По-долу е заявката.
Клаузата SELECT може да бъде с конкретни имена на колони или да използваме „*“, за да получим всички колони. След като създадем изглед, не можем да добавяме или изтриваме колоните. Ако искаме да добавим или изтрием колони, тогава ще трябва да създадем нов изглед или да заменим този съществуващ изглед.
Изходният оператор показва, че SQL изразите CREATE VIEW са изпълнени успешно. Освен това се казва, че няма засегнати редове. Това предполага, че когато се създава нов ред, това не оказва влияние върху данните в основната таблица.
Сега нека направим запитване към изгледа.
Запитване:
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 ;
Резултат:
empNum | фамилия | първо име | електронна поща | deptNum | заплата | начална дата |
---|---|---|---|---|---|---|
1008 | Бейли | Оливър | oliver.bailey@gmail.com | 3 | 24494.4 | 0001-01-01 |
1001 | Андрюс | Джак | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
1002 | Швац | Майк | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Ленгли | Маргарет | margaret.langley@gmail.com | две | 8820 | 0001-01-01 |
1004 | Харера | Сандра | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Прочети | Питър | pl@gmail.com | две | 14332.5 | 0001-01-01 |
1006 | Кийт | Джени | jk@gmail.com | две | 16537,5 | 0001-01-01 |
1009 | Купа | Хари | hb@gmail.com | 5 | 30645.6 | 0001-01-01 |
1011 | Ханкс | Том | th@gmail.com | НУЛА | 10100 | 0001-01-01 |
1012 | Лутер | Мартин | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Мъри | Кийт | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | Брансън | Джон | jb@gmail.com | две | 15000 | 0001-01-01 |
1016 | Мартин | Ричард | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Джонсън | Ева | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Връзка | Нолан | nb@gmail.com | две | 15000 | 2019-09-13 |
Създаване на изглед с помощта на GROUP BY и ORDER BY
Нека приемем сценарий, при който трябва да получим общата сума на заплатата, разумно в отделите.
По-долу е заявката:
Вместо да изпълняваме тази заявка в таблицата всеки път, ние се нуждаем от информацията, по-добре е да заявим изгледа, тъй като това ще отнеме по-малко източници на база данни.
Сега нека видим съдържанието на нашия изглед. Ще открием колко всеки отдел изпраща на своите служители по отношение на заплатите.
Запитване:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;
Резултат:
deptNum | сума (заплата) | |||||
---|---|---|---|---|---|---|
1006 | Кийт | Джени | две | Шарлот | Съединени щати | 5 |
5 | 30645.6 | |||||
4 | 5000 | |||||
3 | 42994.4 | |||||
две | 69690 | |||||
1 | 44096.2 | |||||
НУЛА | 10100 |
NULL в deptNum показва, че служителят не е част от нито един отдел, а е в разплащателните ведомости на организацията.
MySQL Create View с помощта на JOIN
Да приемем, че искаме да получим данни за отдела, града, от който се намира, и бонуса, който се предлага на служителите му. Тази информация ни е необходима за всеки служител.
За да постигнем това, ще използваме ключовата дума JOIN, за да получим данни от таблицата на отделите и служителите.
Нека да разгледаме заявката и нейните резултати.
Тук можем да използваме различни видове ПРИСЪЕДИНЯВАНЕ, като ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ, ЛЯВО ВЪНШНО ПРИСЪЕДИНЯВАНЕ, ДЯСНО ВЪНШНО ПРИСЪЕДИНЯВАНЕ или ПЪЛНО ВЪНШНО ПРИСЪЕДИНЯВАНЕ в зависимост от нашите изисквания.
Запитване:
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 ;
Нека сега изпълним SELECT заявка в този изглед, за да видим резултата:
Резултат:
empNum | фамилия | първо име | deptNum | град | страна | бонус |
---|---|---|---|---|---|---|
1001 | Андрюс | Джак | 1 | Ню Йорк | Съединени щати | 3 |
1002 | Швац | Майк | 1 | Ню Йорк | Съединени щати | 3 |
1004 | Харера | Сандра | 1 | Ню Йорк | Съединени щати | 3 |
1014 | Мъри | Кийт | 1 | Ню Йорк | Съединени щати | 3 |
1003 | Ленгли | Маргарет | две | Шарлот | Съединени щати | 5 |
1005 | Прочети | Питър | две | Шарлот | Съединени щати | 5 |
1015 | Брансън | Джон | две | Шарлот | Съединени щати | 5 |
1018 | Връзка | Нолан | две | Шарлот | Съединени щати | 5 |
1008 | Бейли | Оливър | 3 | Чикаго | Съединени щати | 8 |
1012 | Лутер | Мартин | 3 | Чикаго | Съединени щати | 8 |
1017 | Джонсън | Ева | 3 | Чикаго | Съединени щати | 8 |
1016 | Мартин | Ричард | 4 | Лондон | Англия | 10 |
1009 | Купа | Хари | 5 | Берлин | Германия | 13 |
Създаване на изглед с помощта на подзаявка
В този вид оператор за създаване на изглед се опитваме да извлечем стойността на колона, където клаузата се основава на изхода на подзаявка. Да речем, трябва да намерим всички онези служители, чиято заплата е по-голяма от средната заплата на организацията.
Нека да видим заявката:
Запитване:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ;
Резултат:
empNum | фамилия | първо име | заплата |
---|---|---|---|
1018 | Връзка | Нолан | 15000 |
1005 | Прочети | Питър | 14332.5 |
1006 | Кийт | Джени | 16537,5 |
1008 | Бейли | Оливър | 24494.4 |
1009 | Купа | Хари | 30645.6 |
1014 | Мъри | Кийт | 25000 |
1015 | Брансън | Джон | 15000 |
Управление на изгледи
Чрез използване на Alter View или Create / Replace view можем да модифицираме / заменим всеки изглед. Използването на ALTER VIEW изрично за прекомпилиране на изглед не е валидно.
Ако имате ПРИЛОЖЕНИЯ ЗА ИЗМЕНЕНИЕ НА ВСЯКА система за таблица или ако изгледът е във вашата схема, можете да използвате изявление ALTER VIEW.
как да създам компютърна програма за начинаещи
Използвайки заявката Alter View, можем да намерим грешките при рекомпилация преди времето за изпълнение. Използването на израза ALTER VIEW може да повлияе на другия обект / изглед, който зависи от него. Така че, можем да компилираме изглед след промяна.
Можем да предефинираме изглед с помощта на Създаване на изглед и можем да заменим съществуващия изглед с заявка за заместване на изгледа.
Например, помислете за служители_поглед. Тук имаме колоните lastName и firstName заедно с няколко други. Помислете, че имаме изискване за обединяване на колоните firstName и lastName.
Дадено по-долу е моментната снимка на изгледа преди изпълнение на заявката ALTER.
Сега нека изпълним заявката ALTER VIEW, за да обединим firstName и lastName.
Заявката е дадена по-долу:
Запитване:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ;
Нека да видим съдържанието на staff_view сега:
Ако можете да забележите, нямаме две отделни колони за имена. Вместо това, ние просто имаме една колона, която има едновременно име и фамилия.
Научете повече = >> Функция MySQL CONCAT
Запитване:
SELECT * FROM employees_view;
Резултат:
empNum | empName | електронна поща | deptNum | заплата | начална дата |
---|---|---|---|---|---|
1008 | Оливър Бейли | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
1001 | Джак Андрюс | ja@gmail.com | 1 | 3182.7 | 0001-01-01 |
1002 | Майк Швац | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
1003 | Маргарет Ленгли | margaret.langley@gmail.com | две | 8820 | 0001-01-01 |
1004 | Сандра Харера | sh@gmail.com | 1 | 10609 | 0001-01-01 |
1005 | Питър Лий | pl@gmail.com | две | 14333 | 0001-01-01 |
1006 | Джени Кийт | jk@gmail.com | две | 16538 | 0001-01-01 |
1009 | Хари Бекер | hb@gmail.com | 5 | 30646 | 0001-01-01 |
1011 | Том Ханкс | th@gmail.com | 10100 | 0001-01-01 | |
1012 | Мартин Лутер | ml@gmail.com | 3 | 13000 | 0001-01-01 |
1014 | Кийт Мъри | km@gmail.com | 1 | 25000 | 0001-01-01 |
1015 | Джон Брансън | jb@gmail.com | две | 15000 | 0001-01-01 |
1016 | Ричард Мартин | rm@gmail.com | 4 | 5000 | 0001-01-01 |
1017 | Ив Джонсън | ej@gmail.com | 3 | 5500 | 2019-11-25 |
1018 | Нолан Бонд | nb@gmail.com | две | 15000 | 2019-09-13 |
Отпадане на изглед
Можем да пуснем изглед, като използваме израза DROP VIEW. Човек може да използва DROP VIEW, ако те имат DROP ANY privilege view, или иначе трябва да е в тяхната схема. Увисналият изглед не влияе върху основната таблица, върху която е изграден изгледът, или върху данните в тази таблица.
Запитване:
DROP VIEW (view name);
Често задавани въпроси
В # 1) Как да създавам изгледи в MySQL?
Отговор: Има няколко начина за създаване на изгледи в MySQL. Преминахме през четири различни начина, както е показано по-долу.
1. MySQL Simple Създаване на изглед
2. MySQL Create View, използвайки GROUP BY и ORDER BY
3. MySQL Create View с помощта на JOIN
4. MySQL Create View с помощта на подзаявка
Q # 2) Какво е изглед в MySQL?
Отговор: Изгледите са като предварително изпълнени заявки, съхранени в логическа структура, така че да не се налага да изпълняваме отново сложните заявки в таблицата. Можем просто да заявим изгледа и да получим данните си, без да влияем на таблицата.
Q # 3) Можем ли да приложим JOIN върху изгледи, докато създаваме изгледи?
Отговор: Да, изразите JOIN могат да се използват за изгледи, по подобен начин, по който го използваме в таблиците.
Q # 4) Можем ли да създадем изглед от друг изглед?
Отговор: Изгледите по същество действат като таблици, но като виртуални. Следователно, по начина, по който създаваме изгледи в горната част на таблица, можем по същия начин да създаваме изгледи върху друг изглед.
Q # 5) Защо използваме изгледи?
Отговор: В резултат на SQL заявката изгледът създава логическа таблица. Ние използваме изгледи по следните причини.
- Използвайки изглед, можем да ограничим видимостта на редове и колони (използвайки клаузата Избор и Къде) за съответните задачи.
- Изгледите се използват, когато комбинираме редове и колони (използвайки Съюз и Присъединяване) от множество таблици.
- За да получите по-ясно представяне на агрегиращите редове (използвайки Group by и Have) в таблица с по-фини подробности.
- Изгледите се използват при преименуване или декодиране или на колона (с помощта на AS), или на редове (с помощта на JOIN, IF, CASE или Oracle’s DECODE).
- Чрез комбиниране на което и да е от горните с настройки за защита, можем да проверим дали потребителят има достъп само до оторизираното.
Заключение
В този урок разгледахме различните начини за създаване на изглед в MySQL.
1. MySQL Simple Създаване на изглед
2. MySQL Create View, използвайки GROUP BY и ORDER BY
3. MySQL Create View с помощта на JOIN
4. MySQL Create View с помощта на подзаявка
Можем да изберем една от тези опции в зависимост от изискванията на проекта.
Допълнително четене = >> MySQL CREATE TABLE
Честито обучение !!
Препоръчително четене
- MySQL ALTER TABLE - Как да добавя колона към таблица в MySQL
- Функции на MySQL CONCAT и GROUP_CONCAT с примери
- MySQL БРОЙ И БРОЙ РАЗЛИЧЕН С Примери
- MySQL Създаване на база данни - Как да създадете база данни в MySQL
- MySQL CREATE USER: Как да създам нов потребител в MySQL
- MySQL Урок за създаване на изглед с примери за кодове
- Клауза на MySQL GROUP BY - Урок с примери
- Урок за присъединяване на MySQL: Вътрешен, Външен, Кръстосан, Ляв, Десен и Аз