Основы выполнения запросов MySQL и MariaDB на облачном сервере

Что такое MySQL и MariaDB?

MySQL и MariaDB – реляционные системы управления базами данных (или СУБД), основанные на языке запросов SQL. Эти инструменты используются на облачном сервере для управления данными различных программ.

Данное руководство расскажет, как запрашивать информацию из БД при помощи различных критериев поиска, также опишет несколько гибких способов извлечения необходимых данных.

Все действия данного руководства выполнены в MySQL на облачном сервере Ubuntu 12.04, но MySQL или MariaDB будут работать подобным образом на любом современном дистрибутиве Linux.

Поиск записей в MySQL и MariaDB

Для извлечения информации из базы данных используется следующий синтаксис:

SELECT selection_fields FROM data_source WHERE selection_criteria_is_met;

где:

  • selection_fields – поля select, или поля выбора;
  • data_source – источник данных;
  • selection_criteria – критерии выбора.

Выбор источника данных в MySQL и MariaDB

В данном руководстве для тестирования запросов используется БД по умолчанию под названием mysql:

USE mysql;
Database changed

Просмотрите таблицы в БД mysql, чтобы получить представление о том, из каких источников данных (data source) можно запросить информацию:

SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
. . .
. . .

В MySQL по умолчанию эта команда возвращает 24 результата (в ОС Ubuntu).

Теперь выберите таблицу под названием user. Чтобы получить представление о том, какие категории можно выбрать, просмотрите заголовки столбцов таблицы:

SHOW COLUMNS FROM user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field                  | Type                              | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host                   | char(60)                          | NO   | PRI |         |       |
| User                   | char(16)                          | NO   | PRI |         |       |
| Password               | char(41)                          | NO   |     |         |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N       |       |
. . .
. . .

Столбец Field содержит заголовки таблицы user.

Создание базового запроса в MySQL и MariaDB

Попробуйте извлечь базовую информацию о пользователях системы:

SELECT user,password,host FROM user;
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1       |
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)

В данном случае указано три поля select (или поля выбора) таблицы user. Обратите внимание: все поля разделены запятой.

Использование групповых символов в запросах

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

Язык запросов SQL делает процедуру поиска более гибкой. Чтобы получить все данные таблицы  user, можно использовать звездочку (*) в поле select:

SELECT * FROM user;

Результат такого запроса будет достаточно громоздким, поскольку команда вернет все значения каждого столбца для каждой строки в таблице.

Фильтрация запросов MySQL и MariaDB

Чтобы MySQL и MariaDB возвращали только результаты, которые отвечают определенным критериям, можно применить фильтр where.

Например, чтобы получить только данные пользователя debian-sys-maint, можно отсортировать запрос следующим образом:

SELECT user,password,host FROM user WHERE user = "debian-sys-maint";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

Таким же образом можно просмотреть, какие пользователи относятся к хосту localhost:

SELECT user,password,host FROM user WHERE host = "localhost";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
+------------------+-------------------------------------------+-----------+
2 rows in set (0.00 sec)

Чтобы отфильтровать запросы по нескольким критериям, разделите критерии с помощью and, как  показано ниже:

SELECT user,password,host FROM user WHERE host = "localhost" AND user = "root";
+------+-------------------------------------------+-----------+
| user | password                                  | host      |
+------+-------------------------------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
+------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

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

В фильтре where символ % используется в значении группового знака «все» (как символ *). Он соответствует нулю или больше символов.

Используя эту информацию, можно применять оператор сравнения like – еще один способ фильтрации с помощью where.

Оператор like сравнивает значения определенных полей с выражением в правой части. Например, чтобы вывести строки, содержащие имена пользователей, которые начинаются на d, можно выполнить следующий запрос:

SELECT user,password,host FROM user WHERE user LIKE "d%";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
1 row in set (0.00 sec)

С оператором like также можно использовать and и or. Например:

SELECT user,password,host FROM user WHERE user LIKE "d%" OR user LIKE "r%";
+------------------+-------------------------------------------+-----------+
| user             | password                                  | host      |
+------------------+-------------------------------------------+-----------+
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | localhost |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | 127.0.0.1 |
| root             | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | ::1       |
| debian-sys-maint | *9AE1BDEEBCD7F85D6304C3FB18146904CE3496F6 | localhost |
+------------------+-------------------------------------------+-----------+
4 rows in set (0.00 sec)

Итоги

Как видите, умение правильно составить запрос и работать с операторами и фильтрами MySQL и MariaDB – очень важный навык.

Конечно, данное руководство охватывает только базовые запросы. Но описанные фильтры и команды – отличное начало работы с извлечением данных в MySQL и MariaDB.

Чтобы получить дополнительные инструкции по использованию MySQL и MariaDB, читайте руководство “Управление базами данных MySQL и MariaDB на облачном сервере“.

Tags: , , , , ,

Добавить комментарий