Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт_з_практики.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.1 Mб
Скачать

7. Представлення Теоретичні відомості

Представлення (views — в’ювери) — це віртуальні таблиці. На відміну від звичайних таблиць, що містять дані, представлення містить запит, який видає дані динамічно, коли представлення використовується. Найкраще зрозуміти призначення представлень можна на прикладі. Припустимо, треба дізнатися з бази даних сту­денти скільки студентів платної форми навчання навчається на спеціальності “практична психологія”. Для цього достатньо виконати

наступний запит:

SELECT sp.Name as Name, count(*) as cnt FROM students AS st

LEFT JOIN speciality AS sp ON (sp.ID=st.speciality_ID)

WHERE st.paid=1 and sp.Name LIKE ’%Практична психологія%!group by sp.Name

Якщо згодом потрібно буде дізнатися кількість платників на іншо­му факультеті, то достатньо буде змінити останню умову LIKE в цьому запиті. Будь-якій іншій людині, якій потрібні такі дані, слід написати такий запит, а для цього треба добре знати структуру бази Univerі вміти використовувати оператори об’єднання таблиць. Тепер уявіть, якщо б ви мали можливість оформити загальний запит (без умови LIKE) в окрему таблицю Spec_paid(платники по спеціальностях), то за­пит про кількість платників на спеціальності “практична психологія”

виглядав би так:

Select * from spec_paid

WHERE Name LIKE ’%Практична психологія%’

Саме в таких ситуаціях і використовуються представлення.Spec_ paidє представленням і тому воно не має реальних стовпців чи даних,інакше це була б таблиця, яку потрібно було щоразу обновлювати при внесенні нового студента платної форми навчання. На відміну від звичайної таблиці Specpaidмістить не дані, а запит, який виконується при звертанні до Specpaid.

Синтаксис

CREATE [OR REPLACE]

[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

[DEFINER = { користувачіCURRENT USER }]

[SQL SECURITY { DEFINER | INVOKER }]

VIEW назва_представлення[(список стовпців)]

AS конструкція_Seleсt

[WITH [CASCADED | LOCAL] CHECK OPTION]

Практичні завдання

Примітка. Завдання виконувати в базі даних univer.

  1. Створити представлення, яке дозволить дізнатися про кількість студентів платної форми навчання в залежності від вибраної спеціальності:

Переходимо до БД univer та створюємо представлення. Для цього заходимо в пунк меню SQL та вписуємо наступне:

CREATE VIEW spec_paid AS

SELECT sp.Name as Name, count(*) as cnt FROM students AS st

LEFT JOIN speciality AS sp ON (sp.ID=st.speciality_ID)

WHERE st.paid=1 group by sp.Name;

  1. Використовуючи створене представлення, дізнатися про кількість студентів платної форми навчання для довільної спеціальності.

Після того як ми створили представлення, переходимо в новостворене представлення - spec_paid і вводимо запит щоб дізнатися про кількість студентів платної форми навчання.

SELECT *

FROM spec_paid

WHERE name = 'Програмні системи'

LIMIT 0, 30

  1. Створити представлення stud для таблиці students, яке відображає студентів одного факультету.

Щоб створити це представлення, переходимо назад до БД univer та в SQL запиті пишемо:

create view stud as

select st.id as Number, st.name as Name, st.course as Course, fa.name as Faculty from students as st

left outer join faculty as fa on (fa.id=st.faculty_id)

where st.faculty_id=3;

  1. Використовуючи представлення stud, дізнатися скільки студентів навчається на четвертому курсі.

Перейти в новостворене представлення stud, та ввести запит щоб дізнатися скільки студентів навчається на 4-тому курсі.

SELECT *

FROM stud

WHERE course='4'

LIMIT 0, 30