2.1 Знайомство з мовою SQL

Якщо в тебе є база даних (БД), а в ній – таблиця з якимись даними, то завдання, що найчастіше виникає – це знайти певні дані в цій таблиці. Саме для цього 40 років тому була придумана мова SQL.

SQL розшифровується як Structured Query Language .

Найпростіший SQL-запит має вигляд:

SELECT колонка1, колонка2, … колонкаN FROM таблиця

Допустимо, у тебе є таблиця employee зі списком співробітників вашого стартапу:

id name occupation salary age join_date
1 Іванов Іван Програміст 100,000 25 2012-06-30
2 Петроов Петроо Програміст 80,000 23 2013-08-12
3 Іванов Сергій Тестувальник 40,000 30 2014-01-01
4 Рабінович Мойша Директор 200,000 35 2015-05-12
5 Кирієнко Анастасія Офіс менеджер 40,000 25 2015-10-10
6 Васько Кіт 1,000 3 2018-01-01

Ти хочеш написати запит, який відобразить імена співробітниківі їх зарплати, тоді тобі потрібно написати запит:

SELECT name, salary FROM employee

Ти отримаєш результат запиту:

name salary
Іванов Іван 100,000
Петроов Петроо 80,000
Іванов Сергій 40,000
Рабінович Мойша 200,000
Кирієнко Анастасія 40,000
Васько 1,000

Якщо хочеш відобразити всі колонки своєї таблиці , то замість перерахування імен всіх колонок можна просто написати зірочку. Приклад:

SELECT * FROM employee

Ти отримаєш результат запиту:

id name occupation salary age join_date
1 Іванов Іван Програміст 100,000 25 2012-06-30
2 Петроов Петроо Програміст 80,000 23 2013-08-12
3 Іванов Сергій Тестувальник 40,000 30 2014-01-01
4 Рабінович Мойша Директор 200,000 35 2015-05-12
5 Кирієнко Анастасія Офіс менеджер 40,000 25 2015-10-10
6 Васько Кіт 1,000 3 2018-01-01

2.2 Розширений вид SQL-запиту

Мова SQL спроектували максимально user-friendly.

По-перше, регістр тексту запиту не має значення . Ти можеш написати SELECT, Select або select і все буде працювати. По-друге, перенесення рядків не враховується . СУБД все одно перетворить запит на один довгий рядок, тож можеш писати його як тобі буде завгодно.

Як ти вже, напевно, здогадуєшся, ключовими словами SELECT та FROM справа не обмежується. Інакше не було б стільки розмов навколо SQL. Розширений вигляд SQL запиту має вигляд:

SELECT колонки
FROM таблиця
WHERE умова
GROUP BY колонки
HAVING колонки
ORDER BY сортування

За допомогою ключового слова WHEREти можеш задати умову/фільтр для обраних рядків.

приклад 1 . Давай напишемо запит, який відбере співробітників із професією «Програміст»:

SELECT * FROM employee WHERE occupation = 'Програміст'

І отримаємо такий результат запиту:

id name occupation salary age join_date
1 Іванов Іван Програміст 100,000 25 2012-06-30
2 Петроов Петроо Програміст 80,000 23 2013-08-12

Як бачиш, в результаті виконання запиту відображаються лише рядки, де професія співробітника має назву «Програміст».

Ключові слова GROUP BYі ORDER BYми HAVINGрозглянемо в наступних лекціях. А в цій розберемо ще кілька прикладів зі словом WHERE.

Приклад 2 . Тепер давай напишемо запит, який покаже нам усіх співробітників із зарплатою більшою за 100К. Ось як він виглядатиме:

SELECT * FROM employee WHERE salary > 100000

Отримаємо такий результат запиту:

id name occupation salary age join_date
4 Рабінович Мойша Директор 200,000 35 2015-05-12

Приклад 3 . А тепер спробуємо щось складніше. Як відобразити всіх співробітників, які були найняті у 2015 році? А ось так:

SELECT * FROM employee WHERE YEAR(join_date) = 2015

Отримаємо такий результат запиту:

id name occupation salary age join_date
4 Рабінович Мойша Директор 200,000 35 2015-05-12
5 Кирієнко Анастасія Офіс менеджер 40,000 25 2015-10-10

У цьому запиті ми використовуємо спеціальну функцію YEAR(), яка дозволяє отримати рік із дати, а потім порівнюємо рік дати з числом 2015 року.

2.3 Коментарі в SQL запитах

І ще один важливий момент – це коментарі у SQL-запитах. Коментарі – це дуже корисна річ. По-перше, у них можна писати пояснення та/або свої ідеї. По-друге, за допомогою коментарів можна вимкнути непрацюючий код. Або закоментувати старий варіант коду.

У SQL, як і Java, є однорядкові і багаторядкові коментарі. Більше того, багаторядковий коментар виглядає зовсім як Java. Його вигляд:


/*
 	текст коментаря
 	текст коментаря
 	текст коментаря
*/
        

Звичайно, його можна використовувати і в один рядок також. Приклад:


/*текст коментаря*/
        

Також є вигляд коментаря «від початку до кінця рядка», аналогічний джавовому «//». Тільки в SQL потрібно написати два символи мінус і пробіл . Загальний вигляд такого коментаря:

-- текст коментаря

Приклад:


        SELECT * FROM employee -- WHERE YEAR(join_date) = 2015 
        

У прикладі вище ми закоментували умову запиту, тому MySQL виконає лише запит:

SELECT * FROM employee

2.4 Вимова SQL

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

А вся справа в тому, що мова SQL спочатку називалася SEQUEL, що вимовляється як сіквел (ˈsēkwəl), тому дуже часто в США та інших англомовних джерелах ви чутимете не «ескюель», а «сіквел». Пишеться SQL, а читається сіквел. Ось такий історичний парадокс.