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. Розширений вигляд 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 року.
3. Коментарі в SQL запитах
І ще один важливий момент — це коментарі в SQL-запитах. Коментарі — це дуже корисна річ. По-перше, у них можна писати пояснення та/або свої ідеї. По-друге, за допомогою коментарів можна вимкнути непрацюючий код. Або закоментувати старий варіант коду.
У SQL, як і в Java, є однорядкові та багаторядкові коментарі. Ба більше, багаторядковий коментар виглядає так само як і в Java. Його вигляд:
/*
текст коментаря
текст коментаря
текст коментаря
*/
Звісно, його можна використовувати і в один рядок також. Приклад:
/*текст коментаря*/
Також є вигляд коментаря «від початку до кінця рядка», аналогічний джавовому «//». Втім, в SQL потрібно написати два символи мінус та пробіл. Загальний вигляд такого коментаря:
-- текст коментаря
Приклад:
SELECT * FROM employee -- WHERE YEAR(join_date) = 2015
У прикладі вище ми закоментували умову запиту, тому MySQL виконає лише запит:
SELECT * FROM employee
4. Вимова SQL
Якщо ти спілкуватимешся з іноземними замовниками або проходитимеш онлайн-співбесіду в американській компанії, то тебе можуть запитати про досвід роботи з мовою сіквел. Ти чесно скажеш, що з нею не працював і одразу завалиш співбесіду.
А вся справа в тому, що мова SQL спочатку називалася SEQUEL, що вимовляється як сіквел (ˈsēkwəl), тому дуже часто в США та інших англомовних джерелах ви чутимете не «еск'юель», а «сіквел». Пишеться SQL, а читається сіквел. Ось такий історичний парадокс.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ