Стаття із серії про створення Java-проекту (посилання на інші матеріали – наприкінці). Її мета — аналіз ключових технологій, результат — написання телеграм-бота.
Доброго здоров'я, дорогі читачі. Сьогодні мало говоритимемо і більше писатим, бо руки запам'ятовують набагато краще, ніж очі. У вас могло постати питання: чому ми використовуємо MySQL? Є, наприклад, той же PostgreSQL та інші рішення. Тут усе просто. По-перше, вона безкоштовна. По-друге, вона має зручний UI-інтерфейс (про нього ми поговоримо в окремій статті). По-третє, вона мені знайома та приємна. До всього перерахованого MySQL ще й дуже поширена.
Хто зробив – молодець! Не важливо, на якому ви рівні JavaRush - важливо вміти встановити і налаштувати по мануалах необхідні інструменти для роботи. А я вас запевняю, що їх буде багато. Хтось намагався, але не вийшло — теж не страшно. Не завжди це буває з першого разу: іноді потрібно зробити перерву та спробувати зі свіжими силами ще раз. Хто встановив MySQL сам — напишіть «+» у коментарях, щоб я знав, що це робить. Сам це робитиму теж. Так як у мене більше немає ноуту на Windows, показуватиму на макбуку. Не думаю, що сильно відрізнятиметься процес установки. Для тих, хто хоче встановити сам, використовуючи англійський мануал, прошу сюди .
Завантажуємо та запускаємо. У мене, правда, не одразу все пішло правильно. Виявилося, що Apple не пропускає встановлення останньої версії:
Можна, звичайно, відключити цю справу, але макбук робітник, і лізти в його налаштування не буду. Тому методом спроб і помилок знайшов версію, яку можна встановити - це 5.7.21 . Щоб знайти інші версії, перейшов до Archive вкладку і вибрав потрібну версію:
Далі запускаємо завантажений файл. Натискаємо далі, далі, далі, а ось наприкінці будьте уважні! Там буде ім'я та пароль для входу до бази даних. У мене це виглядало так:
Тут сказано, що буде користувач з ім'ямroot та паролем Vac/zto=.24q . На цьому встановлення завершено.
Переходимо в неї і бачимо, що сервер потрібно включити. Для цього просто натискаємо Start MySQL Server та все. Так, можна поставити галочку, щоб сервер піднімався у фоновому режимі при кожному старті машини.
Важливо, що всі запити в терміналі я починатиму з символу $ , щоб було зрозуміло. Далі потрібно безпосередньо підключитися до сервера MySQL через командний рядок. Для цього відкриваємо terminal і пишемо: $ mysql І тут два варіанти:
Там пишемо пароль, і буде нам щастя ось у такому вигляді:
Якраз останній рядок каже, що ми зайшли в термінал MySQL сервера. Але цей пароль для root виявився разовим і його потрібно змінити на інший. З міркувань безпеки, зрозуміло. Якщо не поміняти і спробувати створити нову базу даних у сервері, отримаємо таку відповідь: ERROR 1820 (HY000): Ви повинні змінити вашу думку за допомогою ALTER USER statement before executing this statement .
Примушують, так би мовити. Ну та гаразд, що нам, складно чи що? Пароль зробимо простішим (це лише для локальної роботи, для реальної роботи пароль має бути складним, зрозуміло). Скажімо, root∫, як і ім'я користувача. Щоб змінити пароль, потрібно ввести рядок: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; І буде така відповідь:
Щоб переконатися, що все працює правильно, спробуємо створити нову базу даних, використовуючи наступний синтаксис : $ CREATE DATABASE test_db; Щоб переконатися, що така база даних створена на сервері, напишемо команду $ SHOW DATABASES; І як результат отримаємо наступне:
Ось і все :) Сказати, що це було просто та швидко, не можна. Тому хтось зробив це сам — окремий респект. Хто не зробив - не парьтесь, мануали лежать на всі види установки:
Там все описано цілком осудно. Єдине, що там все англійською. Тепер пишемо свої перші рядки у SQL.
Загалом слово DROPвідповідає за видалення чогось. У цьому випадку ми видалабо базу даних. Але це також можна використовувати для інших цілей (наприклад, видалення таблиці). І тепер, щоб повірити мені перевірити результат, подивимося, скільки залишилося баз даних: $ SHOW DATABASES;
Як бачимо, бази даних з ім'ям test_db немає. ЧТД :D
Наступний етап – створення таблиці. Який? Ну, спочатку створимо таблицю з країнами. Чому так? Тому що для міст потрібен зовнішній ключ країни, в якій він знаходиться. А його можна отримати після того, як ці країни взагалі почнуть перебувати в БД (тут і далі скорочено від бази даних). Як ми пам'ятаємо із попередньої статті, у таблиці, де описані країни, ми маємо два поля — ID і name, де ID — це унікальний ідентифікатор, а name — це ім'я країни. Тому створити таку базу даних простіше простого. Пишемо: $ CREATE TABLE country (id INT, name VARCHAR(30));
Як бачимо, все пройшло успішно. За аналогією з SHOW DATABASES, можемо переглянути список таблиць: $ SHOW TABLES;
Ось вона наша таблиця. Тепер навчимося видаляти таблиці. Для цього напишемо: $ DROP TABLE country;
Важливо відзначити, щоб після видалення таблиці або бази даних відновити її не вдасться!
Як ви бачите, всю інформацію про таблицю записано тут. Щоб додати щось до таблиці, необхідно використовувати команду INSERT INTO table_name VALUES() . Додамо три записи для трьох країн: $ INSERT INTO country VALUES (1, 'Ukraine'); $ INSERT INTO country VALUES (2, 'Russia'); $ INSERT INTO country VALUES (3, 'Belorus');
Щоб подивитися на те, що збережено в БД, будемо використовувати найпростіший запит на отримання даних. Для цього ми хочемо отримати дані всіх полів із таблиці country. Уважно запам'ятайте попередню пропозицію, тому що запит SQL буде такий: $ SELECT * FROM country; Де означає, що потрібно взяти всі поля.
Ось яка краса вийшла у нас. Якщо нам захочеться отримати лише конкретне поле — не проблема: замість зірки пишемо через кому імена полів, які мають бути. Спробуйте самі ;) Створабо ми вже таблицю, але мало інформації у нас по ній. Чисельність населення явно не завадила б, так? А як це зробити?
Як видно з малюнка, ми успішно додали нове поле для таблиці та другою командою перевірабо, що поле знаходиться у схемі. Другий крок – оновити записи в таблиці та присвоїти значення. Чисельність візьмемо з Вікіпедії. Не те щоб я їм довіряю, але це найшвидший і найпростіший спосіб. Для цього скористається ще однією командою DML. Але для початку проговоримо, що ми хочемо зробити: ми хочемо оновити таблицю country, зробити population поле рівним 41806221 у записі, де id = 1. А ось як виглядає ця конструкція: UPDATE table_name SET table_row1 = value WHERE table_row2 = value2; Грунтуючись на ній, запишемо: $ UPDATE country SET population = 41806221 WHERE id = 1;
Тут ми вперше використали ключове слово WHERE. Це потрібно, щоб додати значення для фільтрації. Наприклад, цього разу ми сказали, що оновлювати потрібно тільки для поля (полів), у яких id дорівнює одиниці (поки ми SQL не сказали, що це первинний ключ — їх може бути кілька). Ми також могли вказати умову типу WHERE id > 2. Якби ми зовсім не вказали фільтрацію, це значення записалося б у всі записи таблиці. Для Росії, Білорусі та інших країн оновіть самі ;) А тепер спробуємо отримати дані з таблиці для поля name та population, за умови, що id буде більше 1. $ SELECT name, population FROM country WHERE id >1;
Таким чином, ми отримали тільки ті поля, які самі захотіли. Через INSERT INTO можна вказати, які поля ми хочемо додати, а які залишити порожніми. Для цього напишемо: $INSERT INTO country (name, population) VALUES('Georgia', 1234566); Щоб перевірити, що вийшло, переглянемо список усіх полів: $ SELECT * FROM country;
Без id запис поганий, та й населення, ясна річ, із голови взято, тому потрібно видалити її. Скористайтеся командою DELETE FROM table_name : $ DELETE FROM country WHERE name = 'Georgia';
Таким чином, ми вивчабо і видалення поля з таблиці.
- Перевірка домашнього завдання
- Встановлюємо MySQL на MacOS
- Входимо до командного рядка MySQL
- Пишемо свої перші рядки в SQL
- Домашнє завдання
- Підсумки
Доброго здоров'я, дорогі читачі. Сьогодні мало говоритимемо і більше писатим, бо руки запам'ятовують набагато краще, ніж очі. У вас могло постати питання: чому ми використовуємо MySQL? Є, наприклад, той же PostgreSQL та інші рішення. Тут усе просто. По-перше, вона безкоштовна. По-друге, вона має зручний UI-інтерфейс (про нього ми поговоримо в окремій статті). По-третє, вона мені знайома та приємна. До всього перерахованого MySQL ще й дуже поширена.
Перевірка домашнього завдання
Минулого разу я давав завдання встановити собі на машину MySQL і зайти в нього. Через консоль, або якимось іншим способом. Усі зробабо?
Хто зробив – молодець! Не важливо, на якому ви рівні JavaRush - важливо вміти встановити і налаштувати по мануалах необхідні інструменти для роботи. А я вас запевняю, що їх буде багато. Хтось намагався, але не вийшло — теж не страшно. Не завжди це буває з першого разу: іноді потрібно зробити перерву та спробувати зі свіжими силами ще раз. Хто встановив MySQL сам — напишіть «+» у коментарях, щоб я знав, що це робить. Сам це робитиму теж. Так як у мене більше немає ноуту на Windows, показуватиму на макбуку. Не думаю, що сильно відрізнятиметься процес установки. Для тих, хто хоче встановити сам, використовуючи англійський мануал, прошу сюди .
Встановлюємо MySQL на MacOS
Насамперед переходимо за наступним посиланням , вибираємо операційну систему, чи то Windows, Ubuntu або MacOS, як показано нижче:
Завантажуємо та запускаємо. У мене, правда, не одразу все пішло правильно. Виявилося, що Apple не пропускає встановлення останньої версії:
Можна, звичайно, відключити цю справу, але макбук робітник, і лізти в його налаштування не буду. Тому методом спроб і помилок знайшов версію, яку можна встановити - це 5.7.21 . Щоб знайти інші версії, перейшов до Archive вкладку і вибрав потрібну версію:
Далі запускаємо завантажений файл. Натискаємо далі, далі, далі, а ось наприкінці будьте уважні! Там буде ім'я та пароль для входу до бази даних. У мене це виглядало так:
Тут сказано, що буде користувач з ім'ямroot та паролем Vac/zto=.24q . На цьому встановлення завершено.
Входимо до командного рядка MySQL
Щоб увійти, потрібно переконатися, що сервер MySQL включений. Для цього заходимо в System Preferences , знаходимо там значок MySQL:
Переходимо в неї і бачимо, що сервер потрібно включити. Для цього просто натискаємо Start MySQL Server та все. Так, можна поставити галочку, щоб сервер піднімався у фоновому режимі при кожному старті машини.
Важливо, що всі запити в терміналі я починатиму з символу $ , щоб було зрозуміло. Далі потрібно безпосередньо підключитися до сервера MySQL через командний рядок. Для цього відкриваємо terminal і пишемо: $ mysql І тут два варіанти:
- Якщо відповідь буде «ERROR 1045 (28000): Access denied for user 'roman_beskrovnyi'@'localhost' (using password: NO» , то це означає, що сервер встановлений і відгукується. Просто потрібно передати йому правильну команду.
- Якщо буде відповідь command not found: mysql , не страшно просто немає посилання на сервер. Для цього потрібно буде зробити аліас зі змінною mysql, тому пишемо наступний рядок:
$ alias mysql=/usr/local/mysql/bin/mysql
Це допоможе лише для цієї сесії терміналу. Але нам більше й не потрібно працювати весь час через термінал ми точно не будемо.
- MySQL не встановлений, не морочте комп'ютер голову.
Там пишемо пароль, і буде нам щастя ось у такому вигляді:
Якраз останній рядок каже, що ми зайшли в термінал MySQL сервера. Але цей пароль для root виявився разовим і його потрібно змінити на інший. З міркувань безпеки, зрозуміло. Якщо не поміняти і спробувати створити нову базу даних у сервері, отримаємо таку відповідь: ERROR 1820 (HY000): Ви повинні змінити вашу думку за допомогою ALTER USER statement before executing this statement .
Примушують, так би мовити. Ну та гаразд, що нам, складно чи що? Пароль зробимо простішим (це лише для локальної роботи, для реальної роботи пароль має бути складним, зрозуміло). Скажімо, root∫, як і ім'я користувача. Щоб змінити пароль, потрібно ввести рядок: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; І буде така відповідь:
Щоб переконатися, що все працює правильно, спробуємо створити нову базу даних, використовуючи наступний синтаксис : $ CREATE DATABASE test_db; Щоб переконатися, що така база даних створена на сервері, напишемо команду $ SHOW DATABASES; І як результат отримаємо наступне:
Ось і все :) Сказати, що це було просто та швидко, не можна. Тому хтось зробив це сам — окремий респект. Хто не зробив - не парьтесь, мануали лежать на всі види установки:
Там все описано цілком осудно. Єдине, що там все англійською. Тепер пишемо свої перші рядки у SQL.
Пишемо свої перші рядки в SQL
Як ви вже могли помітити вище, нам відомі дві команди:- CREATE DATABASE – створює базу даних на сервері;
- SHOW DATABASES – показує всі створені та доступні бази даних на сервері.
Загалом слово DROPвідповідає за видалення чогось. У цьому випадку ми видалабо базу даних. Але це також можна використовувати для інших цілей (наприклад, видалення таблиці). І тепер, щоб
Як бачимо, бази даних з ім'ям test_db немає. ЧТД :D
Створюємо свою базу даних та таблицю
Створюємо базу даних cities: $ CREATE DATABASE cities; Щоб працювати у певній базі даних, потрібно увійти до неї. Для цього використовується команда USE database_name , після цього всі команди для роботи з таблицями будуть проводитися саме в цій базі даних. $ USE cities; Як видно з відповіді - Database changed , перехід у цю базу даних пройшов успішно.
Наступний етап – створення таблиці. Який? Ну, спочатку створимо таблицю з країнами. Чому так? Тому що для міст потрібен зовнішній ключ країни, в якій він знаходиться. А його можна отримати після того, як ці країни взагалі почнуть перебувати в БД (тут і далі скорочено від бази даних). Як ми пам'ятаємо із попередньої статті, у таблиці, де описані країни, ми маємо два поля — ID і name, де ID — це унікальний ідентифікатор, а name — це ім'я країни. Тому створити таку базу даних простіше простого. Пишемо: $ CREATE TABLE country (id INT, name VARCHAR(30));
Як бачимо, все пройшло успішно. За аналогією з SHOW DATABASES, можемо переглянути список таблиць: $ SHOW TABLES;
Ось вона наша таблиця. Тепер навчимося видаляти таблиці. Для цього напишемо: $ DROP TABLE country;
Важливо відзначити, щоб після видалення таблиці або бази даних відновити її не вдасться!
Працюємо з таблицею
Відновимо таблицю, яку ми створабо. Для цього потрібно просто повторити те, що робабо. Щоб подивитися на структуру таблиці, потрібно використовувати наступну команду - DESC table_name $ DESC country;
Як ви бачите, всю інформацію про таблицю записано тут. Щоб додати щось до таблиці, необхідно використовувати команду INSERT INTO table_name VALUES() . Додамо три записи для трьох країн: $ INSERT INTO country VALUES (1, 'Ukraine'); $ INSERT INTO country VALUES (2, 'Russia'); $ INSERT INTO country VALUES (3, 'Belorus');
Щоб подивитися на те, що збережено в БД, будемо використовувати найпростіший запит на отримання даних. Для цього ми хочемо отримати дані всіх полів із таблиці country. Уважно запам'ятайте попередню пропозицію, тому що запит SQL буде такий: $ SELECT * FROM country; Де означає, що потрібно взяти всі поля.
Ось яка краса вийшла у нас. Якщо нам захочеться отримати лише конкретне поле — не проблема: замість зірки пишемо через кому імена полів, які мають бути. Спробуйте самі ;) Створабо ми вже таблицю, але мало інформації у нас по ній. Чисельність населення явно не завадила б, так? А як це зробити?
- Додати до схем таблиці нове поле — населення (population).
- Оновити наявні записи.
Як видно з малюнка, ми успішно додали нове поле для таблиці та другою командою перевірабо, що поле знаходиться у схемі. Другий крок – оновити записи в таблиці та присвоїти значення. Чисельність візьмемо з Вікіпедії. Не те щоб я їм довіряю, але це найшвидший і найпростіший спосіб. Для цього скористається ще однією командою DML. Але для початку проговоримо, що ми хочемо зробити: ми хочемо оновити таблицю country, зробити population поле рівним 41806221 у записі, де id = 1. А ось як виглядає ця конструкція: UPDATE table_name SET table_row1 = value WHERE table_row2 = value2; Грунтуючись на ній, запишемо: $ UPDATE country SET population = 41806221 WHERE id = 1;
Тут ми вперше використали ключове слово WHERE. Це потрібно, щоб додати значення для фільтрації. Наприклад, цього разу ми сказали, що оновлювати потрібно тільки для поля (полів), у яких id дорівнює одиниці (поки ми SQL не сказали, що це первинний ключ — їх може бути кілька). Ми також могли вказати умову типу WHERE id > 2. Якби ми зовсім не вказали фільтрацію, це значення записалося б у всі записи таблиці. Для Росії, Білорусі та інших країн оновіть самі ;) А тепер спробуємо отримати дані з таблиці для поля name та population, за умови, що id буде більше 1. $ SELECT name, population FROM country WHERE id >1;
Таким чином, ми отримали тільки ті поля, які самі захотіли. Через INSERT INTO можна вказати, які поля ми хочемо додати, а які залишити порожніми. Для цього напишемо: $INSERT INTO country (name, population) VALUES('Georgia', 1234566); Щоб перевірити, що вийшло, переглянемо список усіх полів: $ SELECT * FROM country;
Без id запис поганий, та й населення, ясна річ, із голови взято, тому потрібно видалити її. Скористайтеся командою DELETE FROM table_name : $ DELETE FROM country WHERE name = 'Georgia';
Таким чином, ми вивчабо і видалення поля з таблиці.
Домашнє завдання
Домашнє завдання буде наступним:- Потрібно додати у схему таблиці country первинний ключ (PRIMARY KEY) із поля ID.
- Додати до таблиці country ще одну країну – Молдову.
- За схемою попередньої статті створити таблицю city, де будуть всі описані поля. Імена полів будуть наступними: id, name, country_id, population.
- Додати первинний ключ у таблиці city.
- Додати зовнішній ключ до таблиці city.
Підведемо підсумки
У рамках цієї статті ми зробабо багато чого. По-перше, встановабо та запустабо сервер БД MySQL. По-друге, вивчабо цілий перелік ключових слів та запитів, за допомогою яких вміємо тепер створювати/видаляти бази даних, таблиці. Навчабося додавати дані до таблиць, оновлювати та видаляти їх. Ось усі команди, які ми використовували, разом із їх описом:- CREATE DATABASE database_name; - Створити нову БД
- SHOW DATABASES; - Подивитися список БД
- DROP DATABASE database_name; - Видалити БД
- USE database_name; - Працювати в БД
- CREATE TABLE table_name (id INT, ...); - Створити таблицю
- SHOW TABLES; - Подивитися список таблиць
- DESC TABLE table_name; - Подивитися схему таблиці
- DROP TABLE table_name; - Видалити таблицю
- INSERT INTO table_name VALUES(); — додати поле до таблиці
- SELECT * FROM table_name WHERE table_row = value; — отримати поля у таблиці за умови після WHERE
- SELECT * FROM table_name; - Отримати всі поля в таблиці
- ALTER TABLE table_name ADD COLUMN column_name COLUMN_TYPE; - додати поле нове поле до схеми таблиці
- UPDATE talbe_name SET talbe_row1 = value1 WHERE table_row2 = value2; — оновити записи в таблиці: встановити значення одного поля за умови іншого поля
- DELETE FROM table_name WHERE table_row1 = value1; - Видалити поле (або поля) з таблиці за певної умови.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ