Мова створення реляційних запитів - SQL. Оператор Select. Запити на читання даних

Лекція № 14 (2 години)

Тема «Мова створення реляційних запитів - SQL. Оператор Select. Запити на читання даних»

Мета: призначення та функціональні можливості мови SQL, засвоєння головних операторів SQL.

Література

«Бази даних. Проектування, реалізація та супровід. Теорія та практика» -Т. Конолі, К. Бегг, А. Строчан Москва, СПб., Київ. 2000 р.

«Бази даних: основи, проектування, використання» - Малихіна М. П. СПб. 2004р.

«Організація баз даних та знань» - Пасічник В. В., Резніченко В. А., Київ, 2006 р.

«Системы баз данных. Полный курс» - Г. Гарсия Молина, Москва: Вильямс, 2003р.

«Бази даних. Моделі, розробка, реалізація» - Карпов Т., СПб. 2001 р.

Хід заняття

І. Організаційний момент

а) готовність групи до заняття;

б) перевірка присутніх.

ІІ. Актуалізація опорних знань студентів

а) повідомлення теми та мети заняття;

б) повідомлення девізу, під яким будете працювати;

в) відповіді на запитання.

ІІІ. Виклад нового матеріалу

План

  1. Мова SQL. Функціональні можливості SQL.
  2. Оператори мови SQL
  3. Інструкція оператора Select.
  4. Приклади з використанням операторів мови SQL.

ІV. Узагальнення та систематизація знань.

V. Підведення підсумків заняття.

VІ. Домашнє завдання: вивчити матеріал лекції, знати відповіді на такі питання лекції:

Для чого призначена мова SQL?

Що таке «Запит»?

Якими функціональними можливостями володіє мова SQL?

На які категорії можна поділити команди мови SQL?

Для чого використовується мова маніпулювання даними? Який оператор цієї мови Ви можете навести як приклад?

До якої категорії команд мови SQL можна віднести оператор Create table?

Які головні оператори мови маніпулювання даними Ви знаєте?

Які оператори є обов’язковими при виконанні будь-якого запиту?

Які оператори є необов’язковими при виконанні будь-якого запиту?

Які існують головні типи умов пошуку?

Для чого призначене ключове слово Like?

Для чого призначені логічні оператори And, Or або Not?

В цьому розділі ми познайомимося з мовою структурованих запитів SQL (Structure Query Language).

SQL є інструментом для відбору та обробки інформації, яка міститься в базі даних. Унікальність цієї мови полягає в тому, що вона є єдиною стандартною мовою баз даних. Мову SQL підтримують більш ніж 100 СКБД, які працюють на мейн-фреймах та звичайних персональних комп’ютерах. Та саме головне: недивлячись на те, що кожна СКБД привносить свої доповнення, стандартну SQL підтримують всі працюючі бази даних.

Яким чином працює SQL? Коли користувачу необхідно отримати інформацію з бази даних, він просить цю інформацію в СКБД за допомогою SQL. СКБД опрацьовує запит, знаходить (або не знаходить) необхідні дані та повертає результат користувачу.

Запит – команда, яку надає користувач базі даних, та яка повідомлює їй щоб вона вивела визначену інформацію з таблиць в пам’ять. Ця інформація звичайно посилається безпосередньо на екран комп’ютеру або терміналу, яким корстується користувач.

Функціональні можливості SQL

SQL використовується для реалізації всіх функціональних можливостей, які надаються СКБД. До них належать:

  1. Організація даних. SQL надає користувачу можливість змінювати структуру зображення даних, а також встановлювати відношення між елементами бази даних.
  2. Обрання даних. SQL надає користувачу або додатку можливість вилучати з бази даних інформацію, яка міститься в ній та користуватися нею.
  3. Обробка даних. SQL надає користувачу або додатку можливість змінювати базу даних, тобто додавати до неї нові дані, а також знищувати або модифікувати існуючі дані.
  4. Керування доступом. За допомогою SQL можна обмежити можливості користувача по обранню та зміні даних та захистити їх від несанкціонованого доступу.
  5. Сумісне використання даних. SQL дозволяє координувати сумісне використання даних користувачами, які працюють паралельно, для того щоб вони не заважали одне одному.
  6. Цілістність даних. SQL дозволяє забезпечити цілістність бази даних, захищаючи її від руйнування з-за неузгоджуваних змін або відмови системи.

SQL не є комп’ютерною мовою. SQL є невід’ємною частиною СКБД та працює лише з реляційними базами даних.

Оператори мови SQL

Команди мови SQL можна поділити на три категорії:

  • DDL - Data Definition Language (мова визначення даних) – складається з команд, які створюють об’єкти (таблиці, індекси, представлення, та т. д.) в базі даних. Приклад – оператор CREATE TABLE.
  • DML - Data Manipulation Language (мова маніпулювання даними) – це набір команд, які визначають які значення зображені в таблицях в будь-яку мить часу. Приклад – SELECT.
  • DCL - Data Control Language (мова керування даними) – складається з засобів, які визначають, дозволити користувачу виконувати визначені дії або ні. Приклад – оператор GRANT або REVOKE.

Головні оператори DML:

  1. Select – обрання даних з бази даних;
  2. Insert – додавання даних до таблиці;
  3. Update – оновлення (зміна) даних в таблиці;
  4. Delete – знищення даних з таблиці.

Інструкція Select

SELECT [Distinct| All] список полів

FROM ім’я таблиці або список імен таблиць [alias] [, ...]

[WHERE умова обрання або з’єднання]

[GROUP BY групування даних за полями]

[HAVING умова для групи]

[ORDER BY список полів, за якими треба підпорядкувати виведення]

Тут список таблиць є іменем існуючих в базі даних таблиць або представлень, до яких треба отримати доступ. Необов’язковий параметр alias – скорочення, яке встановлюється для імені таблиці ім’я таблиці.

Обробка елементів оператору Select здійснюється у наступній послідовності:

  1. FROM – визначається ім’я використовуємої таблиці або декількох таблиць. FROM завжди йде слідом за SELECT, порядок таблиць немає значення.
  2. WHERE – виконується фільтрація рядків об’єкта у відповідності з поставленими умовами.
  3. GROUP BY – утворюються групи рядків, які мають однакові значення у вказаному стовпці.
  4. HAVING – фільтруються групи рядків об’єкта у відповідності з поставленою умовою.
  5. SELECT – встановлюється, які стовпці повинні бути присутніми в вихідних даних.
  6. ORDER BY – визначається порядок разташування результатів виконання оператора.

Порядок речень та фраз в Select не можна змінити. Лише два речення оператора - Select та From - є обов’язковими, всі інші речення та фрази можуть не використовуватися.

Операція виконання оператора Select є зачиненою: результат запита до таблиці уявляє собою іншу таблицю.

Зауваження: SQL є регістронезалежною мовою, тобто немає різниці між великими та маленькими літерами.

Для побудови прикладів SQL-операторів будуть використовуватися такі таблиці:

  1. Відділення (Номер відділення, Місто, Вулиця, Район, Поштовий індекс, Телефон);
  2. Співробітники (Номер співробітника, Прізвище, Ім’я, По-батькові, Адреса, Телефон, Посада, Стать, Дата народження, _П, Номер відділення);
  3. Об’єкт нерухомості (Номер об’єкта, Місто, Вулиця, Район, Тип, Кімнати, Орендна плата, Номер володаря);
  4. Володар (Номер володаря, Прізвище, Ім’я, По-батькові, Адреса, Телефон);
  5. Орендатор (Номер орендатора, Прізвище, Ім’я, По-батькові, Адреса, Телефон, Тип, Максимальна орендна плата, Номер відділення);
  6. Огляд (Номер огляду, Номер орендатора, Номер объекта, Дата огляду, Коментарі).

Обрання рядків

Приклад 1.Обрання всіх рядків та стовпців.

Скласти список відомостей про кожного зі співробітників.

Так як в наведеному запиті не вказано жодного обмеження, то розміщувати в оператор речення Where немає потреби. Крім того, необхідно обрати всі існуючі в таблиці стовпці.

Select [Номер співробітника], Прізвище, Ім’я, По-батькові,

Адреса, Телефон, Посада, Стать, [Дата народження], ЗП, [Номер відділення]

From Співробітники;

Так як обрання всіх існуючих в таблиці стовпців виконується часто, в SQL визначений спрощений варіант запису значення «всі стовпці» - замість імен стовпців вказується *:

Select *

From Співробітники;

Приклад 2. Обрання деяких рядків та стовпців.

Створити звіт про заробітну плату всіх співробітників з вказівкою лише їх номерів, ПІБ, а також відомостей про заробітну плату.

Select [Номер співробітника], Прізвище, Ім’я, По-батькові, ЗП

From Співробітники;

Приклад 3. Використання ключового слова Distinct

Створити список номерів всіх здаваємих в оренду об’єктів нерухомості, які були оглянуті клієнтами.

Select [Номер об’єкту]

From Огляд;

Якщо б таблиця «Огляд» містила б декілька дублюючих значень об’єкту нерухомості, то для їх знищення використовується ключове слово Distinct.

Select Distinct [Номер об’єкту]

From Огляд;

Приклад 4. Поля, які обчислюються

Створити звіт про заробітну плату за місяць всіх співробітників з вказівкою лише їх номерів, ПІБ та заробітної плати.

Select [Номер співробітника], Прізвище, Ім’я, По-батькові, ЗП /12

From Співробітники;

В таблиці, яка була отримана в підсумку виконання запиту, п’ятий стовпець має назву col5. В одних діалектах мови SQL імена таким стовпцям призначаються у відповідності з порядком їх розташування в таблиці (наприклад, col5), в інших діалектах у такого стовпця ім’я може бути зовсім відсутнім.

Стандарт ISO дозволяє явним чином задавати імена стовпців підсумкової таблиці, для чого застосовується фраза AS. При її використанні наведений трохи вище оператор Select прийме такий вигляд:

Select [Номер співробітника], Прізвище, Ім’я, По-батькові, З_П /12 AS [ЗП за місяць]

From Співробітники;

Обрання рядків з використанням оператора WHERE

В наведених вище прикладах в підсумку виконання оператора Select були обрані всі рядки таблиці. Але дуже часто треба тим чи іншим чином обмежити набір рядків, які розташовуються в підсумковій таблиці запита. Це досягається за допомогою оператора Where.

Формат: Where критерій пошуку

Він складається з ключового слова Where, за яким йде перелік умов пошуку, які визначають ті рядки, які повинні бути обрані при виконані запита. Припустимо до 40 виразів, пов’язаних логічними операторами And або Or.

Існує п’ять головних типів умов пошуку:

  1. порівняння – порівнюються результати обчислення одного виразу з результатами обчислення іншого виразу;
  2. діапазон – перевіряється, потрапляє або ні результат обчислення виразу в заданий діапазон значень;
  3. належність до множини – перевіряється, належить або ні результат обчислення виразу до заданої множини значень;
  4. відповідність шаблону – перевіряється, відповідає або ні деяке рядкове значення заданому шаблону;
  5. значення Null – перевіряється, містить або ні даний стовпець визначення Null (невідоме або пусте значення). Використовується як для числових, символьних так й датових полів.

В SQL можна використовувати такі оператори порівняння:

== - рівність;

< - менше;

> - більше;

<= - менше або рівно;

>= - більше або рівно;

<> - нерівність (стандарт ISO);

!= - нерівність (використовується в деяких діалектах).

Найбільш складні предикати можуть бути побудовані за допомогою логічних операторів And, Or або Not, а також за допомогою дужок, використовуємих для визначення порядку обчислення виразу.

Обчислення виразу в умовах пошуку виконується за такими правилами:

  • вираз обчислюється з лівого боку на правий;
  • першими обчислются підвирази в дужках;
  • оператори Not виконуються до виконання операторів And та Or;
  • оператори And виконуються до виконання операторів Or.

Приклад 5. Порівняння умов пошуку.

Перелічити весь персонал з розміром заробітної плати бльш ніж 3500 грн.

Select [Номер співробітника],Прізвище,Ім’я,По-батькові,Посада, ЗП

From Співробітники

Where ЗП>3500;

Приклад 6. Складні умови пошуку.

Перелічити адреси всіх відділень компанії в Одесі або Києві.

Select [Номер відділення],Місто,Вулиця,Район,[Поштовий індекс]

From Відділення

Where Місто=‘Одеса’ or Місто=‘Київ’;

Приклад 7. Використання діапазону Between в умовах пошуку.

Перелічити весь персонал з заробітною платою від 3000 до 3200 грн.

Select [Номер співробітника],Прізвище,Ім’я,По-батькові,Посада, ЗП

From Співробітники

Where ЗП Between 3000 and 3200;

Цей запит можна записати ще таким чином:

Select [Номер співробітника],Прізвище,Ім’я,По-батькові,Посада, ЗП

From Співробітники

Where ЗП>=3000 and ЗП<=3200;

Приклад 8. Умови пошуку з перевіркою входження в множину (In / Not In).

Скласти перелік всіх бухгалтерів та менеджерів компанії.

Select [Номер співробітника],Прізвище,Ім’я,По-батькові,Посада

From Співробітники

Where Посада In ( ‘Бухгалтер’, ‘Менеджер’);

Існує ще заперечна версія цієї перевірки (Not In), яка використвується для відбору будь-яких значень, окрім тих, які вказані в переліку. Запит можна записати таким чином:

Select [Номер співробітника],Прізвище,Ім’я,По-батькові,Посада

From Співробітники

Where Посада=‘Бухгалтер’ Or Посада=‘Менеджер’;

Але використання ключового слова In уявляє собою найбільш ефективний спосіб запису умов пошуку, особливо якщо набір припустимих значень є дуже великим.

Приклад 9. Умови пошуку з вказівкою шаблонів (Like / Not Like).

Знайти всіх співробітників, які проживають в місті Одеса.

При виконанні цього запита треба організувати пошук рядка «Одеса», який може розташовуватися в будь-якому місці значень стовпця «Адреса» таблиці «Співробітники». В SQL існують два спеціальних символи шаблону, які використовуються при перевірці символьних значень:

  1. % - символ проценту являє будь-яку послідовність з нуля або більшої кількості символів;
  2. _ - символ підкреслювання являє будь-який один символ.

Всі інші символи в шаблоні уявляють лише себе. Наприклад:

  • Адреса Like «К%» – цей шаблон означає, що першим символом значення обов’язково повинен бути символ К, а всі інші символи не уявляють зацікавлення та не перевіряються;
    • Адреса Like «К_ _ _» – цей шаблон означає, що значення повине мати довжину, яка дорівнює чотирьом символам, до того ж першим символом обов’язково повинен бути символ К;
    • Адреса Like «%а» – цей шаблон визначає будь-яку послідовність символів довжиною не менш одного символу, до того ж останнім символом обов’язково повинен бути символ а;
    • Адреса Like «%Київ%» – цей шаблон означає, що нас цікавить будь-яка послідовність символів, яка містить підрядок Київ;
    • Адреса Not Like «К%» – цей шаблон вказує на те, що треба знайти будь-які рядки, які не починаються з символу К.

Select [Номер співробітника],Прізвище,Ім’я,По-батькові,Посада

From Співробітники

Where Адреса Like ‘%Одеса%’;

Приклад 10. Використання значення Null в умовах пошуку.

Скласти перелік всіх відвідувань здаваємого в оренду объекта нерухомості з номером 36, за якими не было зроблено коментарів.

Select [Номер огляду], [Дата огляду]

From Огляд

Where [Номер об’єкта]= 36 and Коментар is null;

Мова створення реляційних запитів - SQL. Оператор Select. Запити на читання даних