- •1. Розвиток і загальна характеристика мови
- •2. Особливості та переваги мови sql
- •3. Групи команд мови sql
- •4. Мова sql — типи даних та функції
- •4.1 Типи даних sql
- •4.1.1 Символьні дані
- •4.1.2 Бітовий тип даних
- •4.2 Операції та агрегатні функції.
- •4.2.1. Реляційні операції
- •4.1.3 Числові типи даних
- •4.1.4 Тип даних «дата/час»
- •4.2.2. Булеві операції
- •4.2.3. Агрегатні функції
- •5. Мова sql - вибірка даних
- •5.1 Оператор select
- •5.1.1 Фраза from
- •5.1.2 Фраза where
- •5.1.3 Фраза group by
- •5.1.4 Фраза having
- •5.1.5 Фраза order by
- •5.2 Операція join — об’єднання таблиць
- •5.3 Вкладені підзапити
- •5.4 Операція union
- •5.5 Оператор select…into
- •Маніпулювання даними Оператор insert into
- •Insert into Students ( num, Surname, Name, Age, Speciality ) values (6, 'Куцик', 'Олександр', 18, 'Математика');
- •2 Оператор update
- •Оператор delete
- •Створення та знищення об’єктів бд
- •Створення бази даних
- •4.9.1 Оператор create table
- •4.9.2 Оператор alter table
- •Оператор drop
5.1.2 Фраза where
Фраза WHERE є необов’язковою. Дана фраза визначає умову вибірки результуючих рядків. Якщо фраза WHERE не включена у запит, то результатом будуть усі результуючі рядки. Якщо в запиті використовуються декілька таблиць і фраза WHERE відсутня, то результатом буде скалярний добуток таблиць.
Синтаксис:
[WHERE <умова>]
де <умова> – умова або умови вибору значень із поля чи полів які включають операції відношення, логічні операції, функції тощо.
Приклад 6.
Вибрати прізвища студентів, яким є дев’ятнадцять років. Для цього використаємо фразу WHERE.
Запит матиме вигляд:
SELECT Surname, Age FROM Students WHERE Age=19;
Результат – табл. 6
Таблиця 6
Surname |
Age |
Крупик |
19 |
Прапій |
19 |
Приклад 7.
Вибрати студентів, що поступили на інформатику і яким менше 19 років.
Запит матиме вигляд:
SELECT Surname, Age, Speciality FROM Students WHERE Speciality='Інформатика' AND Age<19;
Результат - табл. 7
Таблиця 7
Surname |
Age |
Speciality |
Працків |
18 |
Інформатика |
Ятрів |
17 |
Інформатика |
Приклад 8.
Вивести прізвища всіх студентів для яких не задана спеціальність.
Запит матиме вигляд:
SELECT Surname, Age, Speciality FROM Students WHERE Speciality is null;
Результат – табл.8
Таблиця 8
Surname |
Age |
Speciality |
Ціпій |
20 |
|
Якщо потрібно вивести прізвища студентів із визначеними спеціальностями, то запит матиме вигляд:
SELECT Surname, Age, Speciality FROM Students WHERE Speciality is not null;
Приклади використання функцій between і in у запитах.
Select * from Students where Age between 17 and 19;
Select * from Students where Age in (17,19);
5.1.3 Фраза group by
Фраза GROUP BY є необов’язковою. Використовується при формуванні підсумкових запитів і об’єднує записи з однаковими значеннями у вказаному списку полів в один запис. Дозволяє застосовувати агрегатні функції до кожної групи, яка визначається загальним значенням поля або полів, вказаних в цій фразі.
Синтаксис:
GROUP BY
Параметр <таблиця> можна не використовувати у тих випадках, коли користувач працює з однією таблицею.
Параметр <назва поля> – поле, по якому відбувається групування. Йому може передувати ім’я таблиці, якщо вибір виконується більше ніж з однієї таблиці.
Приклад 9.
Підрахувати кількість студентів на кожній із спеціальностей і вивести назву спеціальності і кількість студентів на ній. Для зручності скористаємось реченням GROUP BY.
Запит матиме вигляд:
SELECT Speciality, COUNT(Speciality) FROM Students GROUP BY Speciality;
Тут функція Count повертає кількість записів у групі.
Результат - табл. 9
Таблиця 9
Speciality |
COUNT(Speciality) |
Інформатика |
4 |
Математика |
1 |
5.1.4 Фраза having
Фраза HAVING є необов’язковою. Після того, як записи будуть згруповані за допомогою GROUP BY, фраза HAVING відбере ті значення з отриманих записів, що задовольнять умовам вибірки, які вказані у HAVING.
Синтаксис:
[HAVING <умова>]
Параметр <умова> – умова або умови відбору значень із отриманих записів.
Приклад 10.
Видати назви спеціальностей на які поступило більше трьох людей та точну їх кількість. Для цього у GROUP BY застосуємо HAVING.
Запит матиме вигляд:
SELECT Speciality, COUNT(Speciality) FROM Students GROUP BY Speciality HAVING COUNT(Speciality)>3;
Результат - табл. 10
Таблиця 10
Speciality |
COUNT(Speciality) |
Інформатика |
4 |
