Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Приклади використання оператора SELECT.




ТЕМА 5. МОВИ ЗАПИТІВ

Лекція 14

Вибірка даних

 

Оператор вибірки SELECT.

Усі запити на одержання даних з однієї або декількох таблиць виконуються за допомогою єдиного речення SELECT (вибрати). У загальному випадку результатом реалізації речення SELECT є інша таблиця. До цієї нової (робочої) таблиці може бути знову застосована операція SELECT і т.д., тобто такі операції можуть бути вкладені одна в другу. Синтаксис оператора SELECT має наступний вигляд:

SELECT [ ALL | DІSTІNCT ](<Список полів>|*)

FROM <Список таблиць>

[ WHERE <Предикат-умова чи вибірки з'єднання>]

[ GROUP BY <Список полів угрупування>]

[ HAVІNG <Предикат-умова для групи>]

[ ORDER BY <Список полів, по яких упорядкувати вивід>]

Ключове слово ALL означає, що в результуючий набір рядків включаються всі рядки, що задовольняють умовам запиту. Виходить, у результуючий набір можуть потрапити однакові рядки. І це порушення принципів теорії відношень (на відміну від реляційної алгебри, де за замовчуванням передбачається відсутність дублікатів у кожному результуючому відношенні). Ключове слово DІSTІNCT означає, що в результат не включаються дублікати рядків.

Символ * (зірочка) означає, що в результат включаються всі стовпці з вихідних таблиць.

У розділі FROM (з) задається перелік вихідних відношень (таблиць) запиту.

У розділі WHERE (де) задаються умови добору рядків результату або умови з'єднання кортежів вихідних таблиць, подібно операції умовного з'єднання в реляційної алгебрі.

У розділі GROUP BY (групуючи по) задається список полів угруповання.

У розділі HAVІNG задаються предикати-умови, що накладаються на кожну групу.

У частині ORDER BY (маючи) задається список полів упорядкування результату, тобто список полів, що визначає порядок сортування в результуючому відношенні. Наприклад, якщо першим полем списку буде зазначене Прізвище, а другим Номер групи, то в результуючому відношенні спочатку будуть зібрані в абетковому порядку прізвища студентів, і якщо знайдуться однофамільці, то вони будуть розташовані в порядку зростання номерів груп.

Розглянемо детально перші три рядки оператора SELECT:

SELECT - ключове слово, яке повідомляє СКБД, що ця команда - запит. Усі запити починаються цим словом, з наступним пробілом. За ним може слідувати спосіб вибірки - з вилученням дублікатів (DІSTІNCT) чи без видалення (ALL, мається на увазі за замовчуванням). Потім йде список перерахованих через кому стовпців, що вибираються запитом з таблиць, або символ * (зірочка) для вибору всіх стовпців. Будь-які стовпці, не перераховані тут, не будуть включені в результуюче відношення. Це не означає, що вони будуть вилучені чи їхня інформація буде стерта з таблиць, тому що запит не впливає на інформацію в таблицях - він тільки показує дані.

FROM - ключове слово, подібно SELECT, що повинне бути представлене в кожному запиті. Воно супроводжується пробілом і потім вказується ім’я таблиці - джерело інформації.

WHERE - ключове слово, за яким слідує предикат - умова, що накладається на запис у таблиці, якому він повинен задовольняти, щоб потрапити у вибірку.

 

Приклади використання оператора SELECT.

Запит: вивести список усіх курсів і груп (ТаблКурс).
SELECT Курс, Група FROM ТаблКурс;
Курс Група
   
   

Результат:

 

Стовпці виводяться, тому що вони зазначені в запиті.
SELECT * FROM ТаблКурс;
Група Курс
   
   

Результат:

 

Стовпці виводяться, тому що вони зазначені у вихідній таблиці.

 

Для виключення з результатів запиту значень які повторюються (надлишкових даних) використовується ключове слово DІSTІNCT.

 

Запит: вивести список усіх груп (без повторень), де повинні пройти іспити.
SELECT DISTINCT Группа FROM ТаблДисципліна;
Група
 
 

Результат:

 

 

При використанні DІSTІNCT необхідно бути уважним. Наприклад, якщо в таблиці студентів є однофамільці, то використання DІSTІNCT може привести до того, що про існування однофамільців користувач знати не буде.

З наповненням БД таблиці стають дуже великими. Звичайно користувача цікавлять тільки визначені записи, тому SQL дозволяє встановлювати критерії вибору записів

Речення WHERE команди SELECT дозволяє ставити умови, що можуть бути вірним чи невірними для будь-якого запису таблиці. Команда витягає тільки ті записи з таблиці, для яких таке твердження вірне.

 

Запит: вибрати прізвища студентів, що при здачі іспитів по дисциплінах одержали двійки.
SELECT ФИО, Дисципліна FROM ТаблСтудент WHERE Оцінка =2; Результат:
ПІБ Дисципліна
Міронов А. В. Бази даних
Стєпанова К. Е. Бази даних
Стєпанова К. Е. Інформатика

 

 

Коли речення WHERE має місце, СКБД переглядає всю таблицю по одному запису, щоб визначити, чи є предикат вірним. Речення WHERE сумісне з уже розглянутими фразами, використовуваними в SELECT, тобто можна використовувати найменування полів, усувати дублікати, чи переупорядковувати поля. У реченні можуть використовуватися реляційні оператори:

= дорівнює чому-небудь; <> не дорівнює.

> більше чим; >= більше чим чи дорівнює;

< менше ніж; <= менше ніж чи дорівнює;

У SQL також використовуються булевські оператори AND, OR і NOT.

 

Запит: вивести список студентів, що здали екзамен з дисципліні "Бази даних" на 5.
SELECT ТаблСтудент.ПІБ FROM ТаблСтудент WHERE (((ТаблСтудент.Дисципліна)='Бази даних') AND ((ТаблСтудент.Оцінка)=5));
ПІБ
Владіміров В. А.
Крилова Т. С.
Петров Ф. І.

Результат:

Цей запит містить конкретні умови вибору. Якщо буде потрібно повторити такий запит з іншими значеннями в умовах вибору, то необхідно буде змінити сам запит. Щоб не робити цього використовуються запити з параметрами.

Запит: вивести список студентів, що здали екзамен з будь якої дисципліні на яку-небудь оцінку.
SELECT ТаблСтудент.ПІБ FROM ТаблСтудент WHERE (((ТаблСтудент. Дисципліна) = [Введіть назву дисципліни]) AND ((ТаблСтудент.Оцінка) = [Введіть оцінку])); Результат:     Результат:
ПІБ
Трофімов П. А.

 

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

У реченні SELECT на додаток до реляційних і булевських операторів можуть бути використані спеціальні оператори ІN, BETWEEN, LІKE, і ІS NULL.

Оператор ІN визначає набір значень, у який дане значення повинне бути включене.

Запит: вивести список студентів, що одержали на іспитах оцінки 3 чи 5
SELECT DISTINCT ПІБ FROM ТаблСтудент WHERE Оцінка IN (3,5); Результат:
ПІБ
Владіміров В. А.
Іванова Е. А.
Крилова Т. С.
Міронов А. В.
Петров Ф. І.
Стєпанова К. Е.
Уткіна Н. В.

 

ІN визначає набір значень за допомогою списку, укладеного в круглі дужки з поділом комами. Він перевіряє різні значення зазначеного поля, намагаючись знайти збіг зі значеннями з набору. Якщо це случається, то предикат вірний. Якщо набір містить символьні значення, то вони укладаються в одиночні лапки.

Оператор BETWEEN трохи схожий на ІN, але, на відміну від визначення з набору, BETWEEN визначає діапазон значень, що повинні уміщатися шукані значення. Структура оператора BETWEEN наступна: уводиться початкове значення, ключове слово AND і кінцеве значення. На відміну від ІN, BETWEEN розрізняє порядок, і, отже, перше з них у реченні повинне бути по алфавітному чи числовому порядку.

Запит: вивести список студентів, що одержали на іспитах оцінки від 3 до 5
SELECT DISTINCT ПІБ FROM ТаблСтудент WHERE Оцінка BETWEEN 3 AND 5; Спочатку виведені прізвища студентів, що одержали трійки, потім четвірки і наприкінці - п'ятірки Результат:
ПІБ
Владіміров В. А.
Іванова Е. А.
Крилова Т. С.
Міронов А. В.
Петров Ф. І.
Сідоров К. А.
Стєпанова К. Е.
Трофімов П. А.
Уткіна Н. В.

 

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

Наприклад, таблиця ТаблСтудент може містити інформацію про студента, дисципліну, однак, оскільки оцінка ще не виставлена, у поле Оцінка буде знаходиться значення NULL доти, доки оцінка не стане відома.

Запит: вивести список студентів, що не здавали іспити
SELECT * FROM ТаблСтудент WHERE Оцінка IS NULL; Результат:
ПІБ Дисципліна Оцінка
Сідоров К. А. Англійська мова  
Міронов А. В. Інформатика  

 

Разом з розглянутими операторами, можуть бути використані і традиційні функції AND, OR, NOT.

Зокрема, для одержання предикатів, зміст яких протилежний розглянутим реляційним операторам, використовують заперечення NOT.

 

Запит: вивести список студентів, що здавали іспити
SELECT DISTINCT ПІБ FROM ТаблСтудент WHERE Оцінка IS NOT NULL; Результат:
ПІБ
Владіміров В. А.
Іванова Е. А.
Крилова Т. С.
Міронов А. В.
Петров Ф. І.
Сідоров К. А.
Стєпанова К. Е.
Трофімов П. А.
Уткіна Н. В.

 

Оператор LІKE може застосовуватися тільки до полів типу CHAR або VARCHAR, у яких він шукає підрядки, тобто він шукає символи і перевіряє, чи збігаються вони з умовою. Як умову оператор використовує групові символи - спеціальні символи, що відповідають чому-небудь. Існує два типи групових символів, які використовуються з LІKE:

· символ підкреслення заміщає будь-який одиночний символ, наприклад, 'М_Л' буде відповідати словам 'МОЛ' чи 'МАЛ', але не буде відповідати 'МЕТАЛ';

· знак зірочка (у деяких версіях %) заміщає послідовність любого числа символів, у тому числі нульової довжини. Наприклад, '*М*Л' буде відповідати словам 'МАЛ' чи 'ПМОЛ', але не відповідає 'МОЛОКО'.

 

Запит: вивести прізвища студентів, що починаються з букви С
SELECT ТаблГрупа.ПІБ FROM ТаблГрупа WHERE ((ТаблГрупа.ПІБ) Like 'С*'); Результат:
ПІБ
Сідоров К. А.
Стєпанова К. Е.

 

 

Для упорядкування виводу стовпців таблиць SQL використовує команду ORDER BY, дозволяючи сортувати вивід запиту відповідно до значень у тій чи іншій кількості обраних стовпців. Якщо вказується кілька полів, то стовпці виводу упорядковуються один усередині іншого, при цьому можна визначати зростання (ASC) чи убування (DESC) для кожного стовпця. За замовчуванням установлено зростання.

Запит: вивести список студентів за абеткою
SELECT * FROM ТаблГрупа ORDER BY ПІБ ASC;   Результат:
ПІБ Група
Владіміров В. А.  
Іванова Е. А.  
Крилова Т. С.  
Міронов А. В.  
Петров Ф. І.  
Сідоров К. А.  
Стєпанова К. Е.  
Трофімов П. А.  
Уткіна Н. В.  

 

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...