Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
23.02.2016
Размер:
229.38 Кб
Скачать

Робота з двома операторами select

В умові пошуку (після WHERE) можна використовувати інший SELECT оператор.

1) WHERE вираз [NOT] IN (SELECT що_відбирається FROM...)

IN-використовується для відбору в головному запиті тих рядків, які істять значення що=одному з отриманих у внутрішньому SELECTі.

Вираз=одному з отриманих значень

Приклад

Відібрати групи, в яких не було оцінок 2

SELECT shifr

FROM GRUPA

WHERE nom_gr NOT IN

(SELECT GRUPA nom_gr FROM OZENKA, STUDENT, GRUPA WHERE OZENKA. Oz=2 AND 2 ???? )

2) WHERE [NOT] EXISTS

(SELECT* FROM… )

EXISTS- використовується для відбору в головному запиті тих рядків, для яких внутрішній SELECT повертає хоча б одне значення.

NOT EXISTS-якщо внутрішний SELECT не повертає жодного значення.

Приклад:

Відібрати студентів, які хоча б 1 раз отримали „5”

SELECT fio FROM STUDENT

WHERE EXISTS

(SELECT* FROM OZENKA

WHERE OZENKA Oz=5 AND ??7);

Є ряд задач, які можна розв’язати тільки двома окремими операторами SELECT:

-Перший запит відбирає дані і заносить в якусь нову таблицю (Т1);

-Другий запит обробляє інформацію в створеній таблиці (Т1).

Приклад

  1. Вибрати в нову таблицю дисципліни, по яким найбільша оцінка >35

1 запит: для кожної дисципліни знайти найбільшу оцінку

SELECT DISTINCTROW DIS. name, max (oz) As m_oz

INTO T1

FROM DIS, OZENKA

WHERE ???

GROUP BY name;

T1

name

M_oz

математика

28

фізика

4

інформатика

3

2 запит: відібрати з таблиці Т1 дисципліни

SELECT name

FROM Т1

WHERE M_oz>35;

  1. В якій групі найбільше студентів

1 запит: к-ть студентів в кожній групі

SELECT DISTINCTROW GRUPA. shifr, count (*) AS[K]

INTO TABL

FROM GRU, STUDENT

WHERE ???

GROUP BY shifr;

TABL

shifr

k

2 запит: SELECT shifr FROM TABL

WHERE К=( SELECT max (к) FROM TABL);

Контрольна робота

1 Вибрати назви дисциплін з яких жоден студент не отримував жодної оцінки

2 Визначити в якій групі найбільша стипендія =40 гр.

3 Вилучити з таблиці студентів тих, хто навчається на 3 курсі.

1 Вибрати дисципліни по яким була отримана хоч одна оцінка 4 після 15.09.01

2 Отримати факультети, де к-ть 5 не менше 35

3 Зменшити стипендію в 1,5 рази для груп Е-10 і ЕК-11.

Оператори insert, delete, update

Оператор INSERT INTO

INSERT добавляє одну чи кілька рядків в існуючу таблицю. Можливі 2 варіанти запису оператора:

  1. Запит на додання декількох записів:

INSERT INTO таблиця БД [(перелік полів таблиці)] SELECT [таблиця і поля, з якої відбираються дані].

В операторі SELECT потрібно вказати перелік полів, які будуть записано до таблиці.

Приклад

Додати для студента №8 оцінку 4 по дисципліні „Математика”

INSERT INTO OZENKA

SELECT 10 /12/99,nom_dis, 8,4 FROM DIS

WHERE name=”Математика”

  1. Запит на додання одного запису:

INSERT INTO OZENKA таблиця БД [(перелік полів таблиці)]

VALUES (значення полів таблиці в відповідності з структурою таблиці)

Приклад

Додати нового студента в таблицю STUDENT:

INSERT INTO STUDENT

VALUES (0, „Іванов І.І.,””Ф-098787”,13,17)

Примітка: Номер строчки таблиці можна вказати самостійно, але так щоб він був унікальним, або як в даному випадку вказати 0, тоді автоматично буде встановлено черговий унікальний номер запису.

INSERT INTO

1 додає один рядок

INSERT INTO OZENKA (data, nom_st, nom_dis,oz)

Values (10-31-01,2,8,3);

2 додає декілька рядків

Для всіх студентів додати оцінку 5 по дисципліні №3

INSERT INTO OZENKA (nom_st, nom_dis,oz)

SELECT nom_st,3,5

FROM STUDENT;