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, а читається сіквел. Ось такий історичний парадокс.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ