Статья из серии о создании 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): You must reset your password using 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 и зайти в него. Через консоль, или каким-то другим способом. Все сделали?
Устанавливаем MySQL на MacOS
Первым делом переходим по следующей ссылке, выбираем операционную систему, будь то Windows, Ubuntu или MacOS, как показано ниже:



Входим в командную строку MySQL
Чтобы войти, нужно удостовериться, что MySQL сервер включен. Для этого заходим в System Preferences, находим там значок 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 не установлен, не морочьте компьютеру голову.





Пишем свои первые строки в SQL
Как вы уже могли заметить выше, нам известны две команды:- CREATE DATABASE — создает базу данных на сервере;
- SHOW DATABASES — показывает все созданные и доступные базы данных на сервере.


Создаем свою базу данных и таблицу
Создаем базу данных cities: $ CREATE DATABASE cities; Чтобы работать в определенной базе данных, нужно войти в нее. Для этого используется команда USE database_name, после этого все команды для работы с таблицами будут проводиться именно в этой базе данных. $ USE cities; Как видно из ответа — Database changed, переход в эту базу данных прошел успешно.



Работаем с таблицей
Восстановим таблицу, которую мы создали. Для этого нужно просто повторить то, что уже делали. Чтобы посмотреть на структуру таблицы, нужно использовать следующую команду — DESC table_name: $ DESC country;


- Добавить в схемы таблицы новое поле — население (population).
- Обновить существующие записи.





Домашнее задание
Домашнее задание будет следующим:- Нужно добавить в схему таблицы 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; — удалить поле (или поля) из таблицы при определенном условии.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ