
- •6. 1. Опис мови sql
- •6. 2. Адміністрування баз даних
- •6. 3. Типи даних в sql
- •6. 4. Визначення даних засобами sql
- •6. 5. Відбір даних із таблиць засобами sql
- •6.5.1. Управління полями таблиці з допомогою оператора select
- •6.5.2. Використання простих критеріїв відбору записів із таблиць
- •6.5.3. Використання складених критеріїв відбору записів із таблиць
- •6.5.4. Агрегування даних. Sql-функції
- •6.5.5. Сортування записів
- •6.5.6. Зв’язування таблиць
- •6.5.7. Вкладені запити
- •6. 6. Використання математичних та рядкових функцій
6.5.1. Управління полями таблиці з допомогою оператора select
Управління полями полягає у виборі полів таблиці (таблиць), які повинні ввійти в результатний набір даних. Приклад відбору всіх полів у таблиці:
select * from stat
В результаті цього запиту із таблиці stat в результатний набір даних попадають всі поля і всі записи. При цьому порядок полів у наборі даних відповідає порядку фізичних полів у таблиці.
Приклад перегляду декількох таблиць одночасно:
select *
from stat
select *
from obsag
В результаті цього запиту із таблиць stat і obsag виводяться всі поля і всі записи таблиць.
Якщо необхідно вибрати дані лише з декількох полів таблиці, то після слова SELECT перелічуються через кому у потрібному порядку назви цих полів. Порядок полів у наборі відповідатиме порядку полів у списку. Якщо ім’я поля вказано у списку неодноразово, то в наборі даних буде декілька стовпців з однаковими іменами і даними. Наприклад:
select cod, osvita
from stat
В результаті виконання цього SQL-запиту здійснюється відбір із таблиці записів тільки двох полів: cod, osvita.
Крім фізичних полів таблиць, у набір даних можна включати розрахункові поля. Для отримання розрахункового поля в списку полів вказується не ім’я цього поля, а вираз, за яким розраховується його значення. Наприклад:
select cod, suma, suma - 20
from obsag
У полі summa – 20 виведеться значення поля summa, зменшене на 20.
Записи можуть мати одинакові значення деяких полів. Для того, щоб включити в набір даних тільки записи з унікальними значеннями, перед списком полів вказується описувач DISTINCT:
SELECТ DISTINCT <ім’я поля>, <ім’я поля >
FROM <ім’я таблиці>
Наприклад, необхідно вивести із таблиці obsag коди рекламних агентів, які виконали операції:
Select distinct cod
from obsag
6.5.2. Використання простих критеріїв відбору записів із таблиць
У попередніх прикладах в набір даних попадали всі записи із вказаних таблиць. На практиці набір даних обмежується записами, які задовольняють певним умовам (критеріям) відбору, які задаються з допомогою операнда WHERE.
Критерій відбору – це логічний вираз, в якому можна використовувати операції:
= – дорівнює;
> – більше;
< – менше;
>= – більше-рівне;
<= – менше-рівне;
<> або != – не рівне;
!> – не більше;
!< – не менше;
LIKE – порівняння по шаблону;
IS NULL – перевірка на нульове значення;
IN – перевірка на входження;
BETWEEN – перевірка на входження в діапазон.
Для операцій порівняння і порівняння по шаблону критерій відбору має наступний вигляд:
<Вираз1> <Операція порівняння> <Вираз2>
Використання операторів порівняння
Вираз може складатися з імен полів, функцій, констант, значень, знаків арифметичних операцій та круглих дужок. Найпростіші вирази складаються з імен полів або значення. Наприклад:
select cod
from obsag
where suma>= 1500
Цей оператор створює список працівників, які виконали операції на суму не меншу ніж 1500 грн. Наведемо приклад відбору записів за значеннями символьного поля:
select prizv
from stat
where osvita = ‘вища’
У цьому прикладі в операції порівняння враховується регістр символів. Слова „Вища” і „вища” не рівні між собою. Різниця в регістрі символів або наявність початкових і кінцевих пробілів прозводить до помилок при відборі записів. У такому випадку критерій відбору доцільно записати так:
where upper(trim(osvita)) = ‘вища’
Функція TRIM знищує початкові і кінцеві пробіли, а функція UPPER приводить символи рядка до верхнього регістру. В результаті значення поля „Вища” буде приведена до значення „ВИЩА”.
Використання LIKE
Для порівняння рядків замість операцій =, !=, <> можна використовувати операцію LIKE, яка виконує порівняння за частковим співпадінням. Часткове співпадіння значень доцільно перевіряти, наприклад, коли відома тільки початкова частина прізвища:
select prizv
from stat
where prizv like ‘Ac%’
В результаті отримаємо список прізвищ, які починаються на літери “Ac”.
У виразах операції LIKE допускається застосування шаблону, в якому можна використовувати всі алфавітно-цифрові символи (з врахуванням регістра). При цьому два символи мають спеціальне призначення:
% - заміняє будь-яку кількість символів, в тому числі й нульовий;
_ - заміняє один символ.
З допомогою шаблона можна виконати перевірку на часткове співпадіння не тільки початкових символів рядка, але й знайти входження заданого фрагмента в будь-яку частину рядкового значення. Наприклад:
select prizv
from stat
where prizv like '% р %'
Перед операцією LIKE можна використовувати описувач NOT, який змінює результат виконання операції на протилежне значення і перевіряє значення виразів на неспівпадіння.
Для перевірки нульового значення виразу служить операція IS NULL, яка має наступний формат:
<Вираз> IS [NOT] NULL
Наприклад,
select *
from stat
where is null
У цьому запиті відбираються всі поля записів таблиці stat, які мають нульові значення.
Використання IN
Перевірка на входження значення виразу в список виконується з допомогою операції IN наступного формату:
<Вираз> [NOT] IN <Список значень>
Цю операцію зручно виконувати, якщо вираз може приймати невелику кількість різних значень. Наприклад:
select cod, prizv
from stat
where osvita in (‘середня’, ‘вища’)
У результаті отримаємо вибірку кодів і прізвищ всіх працівників з середньою або вищою освітою.
Використання BETWEEN
Операція BETWEEN виконує перевірку входження значення в діапазон. Вона має такий формат:
<Вираз> [NOT] BETWEEN
<Мінімальне значення> AND <Максимальне значення>
При виконанні цієї операції в набір даних включаються записи, для яких значення виразу більше або рівне мінімальному, а також менше або рівне максимальному значенням. Описувач NOT змінює результат операції на протилежний.
Розглянемо приклад:
select *
from stat
where data_nar between ‘01/01/1960’ and ‘01/12/1980’
У результаті виконання такого запиту отримаємо набір записів, для яких дата народження (поле data_nar) знаходиться в діапазоні з 1 січня 1960 року до 1 грудня 1980 року.
Використання HAVING
Операція HAVING відіграє таку ж роль для груп, як і WHERE для рядків. Ця операція включається в оператор при наявності GROUP BY.