Полное руководство для начинающих по MySQL с открытым исходным кодом

Для всех, кто работает с данными (а это, по крайней мере, я слышал - все), SQL - один из тех навыков, которые действительно могут сдвинуть горы. Если на вашем рабочем месте используется SQL, его изучение может кардинально изменить вашу карьеру к лучшему.

Хотя он используется повсюду, он тоже может стоить дорого. Многие компании, в которых я работал или с которыми я работал, использовали одно из следующего:

  • Microsoft SQL Server
  • СУБД Oracle
  • IBM DB2

Ни один из них не является открытым исходным кодом, и все они имеют высокую цену. К счастью, если вы хотите (или нуждаетесь) в изучении тонкостей SQL - доступно множество бесплатных опций с открытым исходным кодом.

Один из них - MySQL. MySQL - это установка с открытым исходным кодом, которая отражает многие предложения SQL, которые использует большинство компаний. Итак, планируете ли вы и переключаете ли вы повседневные задачи, команды или даже работу - MySQL - идеальное место для начала.

В этой статье мы рассмотрим основы MySQL. Мы ничего не предполагаем и все объясняем по мере перехода от установки к запросам базы данных и преобразованию данных. Вкратце, мы покрываем:

> MySQL Installation
  - Running the Server
> Getting Started
  - MySQL Workbench
  - Schemas, Databases, and Tables
  - Uploading Data
> Querying Data
  - SELECT * FROM ...
  - WHERE
  - ORDER and GROUP

Установка MySQL

Во-первых, нам нужно установить MySQL. Установки для Windows и Mac можно найти здесь. Убедитесь, что вы скачали полную версию, а не веб-версию.

После запуска установщика нам нужно выбрать Разработчик по умолчанию и продолжить выполнение следующих нескольких шагов установщика.

После завершения установки останется еще несколько шагов по настройке. Это должно быть просто (оставьте комментарий здесь или мне в Twitter, если нет). Также не забудьте установить пароль пользователя root.

Запуск сервера

После установки сервер MySQL должен быть установлен на порт 3306. Он должен запускаться автоматически, но если нет, мы создаем его экземпляр, открыв окно командной строки (CMD, Bash и т. Д.) И набрав mysqld.

Если эта команда не распознается, перейдите в каталог MySQL Server /bin перед запуском mysqld. На моей машине с Windows это:

C:\Program Files\MySQL Server 8.0\bin

Начиная

MySQL Workbench

После установки MySQL мы можем открыть рабочую среду MySQL.

Workbench - это швейцарский армейский нож MySQL. Он охватывает все, и для объяснения всего пакета потребуется очень много времени, поэтому в интересах точности и нелепого уровня опыта, необходимого для объяснения всего рабочего места, мы будем придерживаться основ.

Мы можем щелкнуть плитку локального экземпляра MySQL80 на переднем экране. Это устанавливает соединение с этим конкретным экземпляром MySQL и открывает графический интерфейс, который позволяет нам исследовать этот экземпляр.

Слева мы найдем древовидную структуру баз данных и таблиц на нашем экземпляре сервера.

Схемы, базы данных и таблицы

Эта древовидная структура представляет собой иерархию объектов в SQL.

На вершине этой иерархии находится наш экземпляр сервера. Внутри сервера находятся схемы (синонимы баз данных - здесь мы будем использовать оба термина как синонимы). Внутри схем находятся сами таблицы SQL.

Наши данные хранятся в этих таблицах. Итак, из Workbench мы можем продолжить и создать нашу первую схему и таблицы.

Создание схемы

В нашей иерархии серверов в левом окне вы заметите, что у нас уже есть несколько схем на нашем сервере. Они настроены по умолчанию, но чаще всего нам нужно создать свои собственные.

Для этого у нас есть два варианта. Первый - наведи и щелкни:

1. Нажмите значок Создать схему (база данных) на верхней панели.

2. Дайте новой схеме запоминающееся имя (по крайней мере, лучше моего) и нажмите Применить.

3. Затем мы применяем скрипт создания схемы (здесь нет необходимости изменять настройки по умолчанию)

4. И у нас есть новая схема! Просто нажмите Готово. Теперь мы сможем увидеть создание схемы в нашем окне Вывод:

Альтернативный вариант - создать схему программно. То есть напишите код SQL вместо того, чтобы указывать и щелкать. Мы можем сделать это:

1. Открытие нового окна запроса путем нажатия Создать новую вкладку SQL на верхней панели инструментов.

2. Ввод CREATE SCHEMA `<schema-name>`; в новом окне запроса

3. Нажатие на значок молнии (Выполнить весь / выбранный код)

4. И у нас снова есть наша новая схема! Мы снова можем увидеть создание схемы в нашем окне Вывод:

Отлично, это два способа создания схем MySQL! А теперь перейдем к таблицам.

Создание таблиц

Таблицы в SQL могут быть немного сложнее. В то время как со схемой мы просто указываем имя схемы и мало / ничего больше - таблице нужна структура и типы данных.

В этом примере мы переходим к показанным фиктивным данным. У нас есть три столбца; id, имя и возраст.

Каждому из этих столбцов необходимо присвоить тип данных.

Внимание! Эта часть многословна - переходите к созданию таблицы.

имя

В SQL мы вызываем текст VARCHAR, и при определении типов данных VARCHAR нам также необходимо передать максимальную длину (в символах) записей в это поле.

Если бы мы хотели определить что-либо как текст с возможной длиной от 1 до 8000 символов, мы бы написали VARCHAR (1–8000). Мы можем увеличить значение, превышающее 8000, просто набрав VARCHAR (MAX).

Однако мы не должны использовать VARCHAR (MAX) там, где это не нужно - просто потому, что это может сбить с толку тех, кто читает ваш код, и считается плохой практикой.

Вместо этого, в случае нашего столбца имени - мы хотим назначить диапазон, который, как мы уверены, ни одно имя не превысит. Тип данных VARCHAR (2-20) в нашем случае, скорее всего, удовлетворит все возможные имена.

возраст

SQL предлагает множество различных числовых типов данных - NUMERIC, FLOAT, MONEY, DECIMAL и многие другие. Один из этих типов данных - INT, который мы будем использовать здесь.

INT - это сокращение от целого числа, которое относится к круглому числу (1, 2 и 3, а не 3,142, 1,5 или любому другому числу, которое не является круглым). INT покрывает любое круглое число от -2,1B до 2,1B [1].

Для меньших или больших значений мы можем использовать различные другие целочисленные вариации от TINYINT (идеально для возраста) до BIGINT.

TINYINT идеально подходит для использования в качестве типа данных age. Мы не ожидаем увидеть отрицательный возраст, поэтому мы можем использовать любое округленное значение от 0 до 255, что намного старше, чем мы могли бы ожидать от клиентов.

При определении типа данных TINYINT мы должны передать ему число. Это число - максимальное количество цифр / символов, которое мы можем отобразить. Итак, если мы хотим отобразить 0–255, максимальное количество цифр будет равно трем (255).

В качестве альтернативы, если мы хотим отобразить -128, наше максимальное количество цифр равно четырем (-128). Для возраста нам нужно всего три цифры, что дает нам TINYINT(3).

id

Наконец, мы подошли к нашему столбцу идентификаторов. Мы используем это, чтобы предоставить уникальный идентификатор каждой из наших записей.

Часто это будет использоваться для сопоставления соответствующих записей из разных таблиц. Например, у нас может быть таблица продаж, содержащая список всех произведенных продаж. Он может содержать столбец customer_id, который сопоставляет данные о клиенте из таблицы клиентов с этой таблицей продаж.

В нашем случае наши идентификаторы являются числовыми, поэтому мы можем использовать SMALLINT, MEDIUMINT или INT. Однако стоит отметить, что в качестве значения идентификатора мы можем так же легко использовать VARCHAR - и во многих случаях это может быть более подходящим.

Итак, мы можем использовать INT или VARCHAR. В нашем случае мы хотим автоматически назначать идентификатор, который нужно будет увеличивать на 1 с каждой новой записью. Мы можем сообщить об этом в SQL, используя AUTO_INCREMENT, однако для этого требуется, чтобы мы использовали тип данных INT.

В целом это даст нам что-то вроде SMALLINT(6) (если мы не ожидаем более 999 999 записей).

Создание таблицы

Опять же, есть два метода создания нашей таблицы. Наведи и щелкни, или программно. Наведи и щелкни:

  1. На левой панели разверните новую базу данных, щелкните правой кнопкой мыши Таблицы и выберите Создать таблицу.

2. Введите имена столбцов и типы данных. Мы выбираем флаги PK, NN и AI для id, поскольку они означают P rimary K ey, N ot N ull и A uto I ncrement соответственно.

3. На следующем экране мы увидим код SQL, используемый для создания нашей таблицы - мы можем продолжить и Применить это.

И готово! Альтернативный подход заключается в программном кодировании. Для этого мы открываем окно запроса, вводим код SQL из шага 3 выше и выполняем его.

Загрузка данных

Мы создали таблицу, но в ней нет данных! Нам нужно загрузить его, что мы можем сделать из разных источников. В этом примере мы будем использовать CSV, который выглядит так:

Чтобы загрузить данные в SQL, мы возвращаемся в MySQL Workbench и:

1. Щелкните правой кнопкой мыши Таблицы в навигаторе и выберите Мастер импорта табличных данных.

2. Найдите и выберите файл для загрузки, нажмите "Далее".

3. Выберите, следует ли создать новую таблицу или добавить данные в существующую таблицу. Мы уже создали таблицу, поэтому выбираем Использовать существующую таблицу.

4. Затем нажимаем Далее, пока не дойдем до конца процесса импорта. Вернувшись в окно запроса, мы можем ввести SELECT * FROM new_table, чтобы подтвердить, что загрузка прошла успешно:

И, наконец, мы можем добавить больше данных с помощью команды INSERT INTO:

Обратите внимание, что мы не указали значение id. Это связано с тем, что мы установили для id автоматическое приращение, что означает, что SQL автоматически присваивает новой строке значение, равное +1 предыдущему.

Запрос данных

ВЫБРАТЬ ИЗ …

Самый узнаваемый фрагмент кода SQL - SELECT * FROM <table-name> позволяет отображать все столбцы и строки в таблице.

В MySQL к запросу добавляется дополнительный скрытый параметр. Это LIMIT 1000. LIMIT позволяет нам возвращать заданное количество строк. Итак, хотя у нас есть четыре записи в нашей таблице, ввод SELECT * FROM `new_table` LIMIT 2 вернет две:

Если это не сработает, попробуйте сначала дважды щелкнуть схему в окне "Навигатор", чтобы выбрать ее, а затем выполнить снова.

Кроме того, мы можем изменить значение LIMIT по умолчанию, щелкнув раскрывающееся меню в правом верхнем углу скриншота выше (в окне запроса).

КУДА

Если мы хотим просмотреть данные, которые удовлетворяют заданному условию (или набору условий), мы можем использовать предложение WHERE.

ГДЕ добавляется после нашего SELECT * FROM ... и позволяет нам отображать только строки, ГДЕ заданное условие истинно. В более крупном наборе данных мы можем захотеть найти всех клиентов с заданным именем:

SELECT * FROM new_table WHERE `name` = 'paul';

Или мы можем отфильтровать всех клиентов старше 30 лет:

ЗАКАЗ и ГРУППА

ORDER BY и GROUP BY - еще два важных метода для SQL-запросов. Для начала добавим в нашу таблицу еще несколько записей.

name,age
Laura,27
Illaria,34
Luke,39
Tristan,39
Yess,27

(Сохраните их в файл CSV и импортируйте, как мы делали раньше - используя существующую таблицу)

Мы можем ЗАКАЗАТЬ определенный столбец, например возраст, следующим образом:

Здесь все наши значения упорядочены по столбцу возраста в порядке возрастания (от меньшего к большему). По умолчанию используется ASC возрастающий порядок, но мы можем переключиться на убывающий, добавив DESC в конец нашего запроса:

Наше другое предложение позволяет нам GROUP BY заданный столбец. Однако, используя это, мы не сможем выбрать SELECT *, как мы это делали раньше. Причина в том, что если мы GROUP BY столбец, у нас нет логического способа отобразить другие столбцы в этой группировке (например, имена).

Итак, чтобы избежать этого, мы можем применить агрегируемые операции к столбцам (например, COUNT или SUM) или просто исключить их:

Мы также можем использовать ORDER BY и GROUP BY в одном запросе - в этом случае мы всегда помещаем GROUP BY перед ЗАКАЗАТЬ ПО.

Размещение ORDER BY перед GROUP BY приведет к синтаксической ошибке. К тому же это не логично. Если мы сначала ЗАКАЖИМ, мы потеряем этот заказ, как только мы ГРУППИРУЕМ.

Это все, что вам нужно знать для начала работы с SQL и MySQL Workbench. Мы рассмотрели многое, в том числе:

  • Установка и настройка MySQL
  • Как использовать MySQL Workbench
  • Что такое схемы / базы данных и таблицы - и как их использовать
  • Типы данных VARCHAR и INT
  • Загрузка данных с помощью мастера импорта табличных данных
  • ВЫБРАТЬ * ИЗ…
  • Фильтрация данных с помощью WHERE
  • Организация и преобразование наших данных с помощью ORDER BY, GROUP BY и COUNT

Чтобы привыкнуть к SQL, может потребоваться некоторое время, но, к счастью, он достаточно удобен для пользователя и по сравнению со многими существующими технологиями не займет много времени, чтобы стать компетентным.

Простота использования в сочетании с его распространенностью почти во всех отраслях и компаниях мира делает его бесценным инструментом для ознакомления.

Надеюсь, вам понравилась эта статья! Если у вас есть вопросы, дайте мне знать через Twitter или в комментариях ниже. Если вы хотите больше подобного контента, я тоже публикую на YouTube.

Спасибо за прочтение!

использованная литература

[1] Целочисленные типы, Документация по MySQL.

🤖 Скидка 70% на курс НЛП с трансформаторами

* Все изображения принадлежат автору, если не указано иное