От автора: вы тут запись мою не видели? Выпала из базы, теперь не знаю, что и делать! Наверное, сегодня возьмемся за поиск в MySQL. А я как раз вспомню, как более эффективно просеивать данные в СУБД и заодно свою строку постараюсь найти.
Зачем просеивать?
Просеивание в MySQL – одна из самых часто выполняемых задач. Для этого в системах управления БД, поддерживающих SQL, используется команда SELECT. В предыдущих материалах мы уже сталкивались с ней, применяя ее для нахождения и вывода строк, отвечающих «простеньким» критериям сортировки. На самом деле данная команда является одной из главных, и ее возможности в сфере поиска записей почти безграничны.
При этом написание правильных запросов на выборку данных в MySQL очень часто похоже на составление заклинаний. Особенно такое впечатление складывается у новичков, которые только ступили на путь изучения СУБД. Но сегодня мы постараемся развеять это «сюрреалистическое» наваждение, и научимся составлять правильные запросы для поиска по MySQL базе.
Как уже у нас заведено, начнем с обзора возможностей phpMYAdmin. Посмотрим, каким встроенным функционалом для сортировки данных обладает эта программа.
Просеиваем строки через phpMyAdmin
Зайдите в программу, выберите любую БД и таблицу в ней. Я бы советовал вам использовать таблицу поменьше, в которой всего несколько срок. В них лучше видны результаты сортировки.
Выбрав слева в меню базу и таблицу, перейдите сверху в раздел «Обзор». После этого СУБД выведет все строки, которые содержатся в данной структуре. Для этого программа направила на выполнение серверу БД запрос на выборку. Его код отображается выше результатов выборки.
Ниже находится весь встроенный функционал программы для поиска по MySQL базе. Чтобы установить способ «просеивания» по первичному ключу (по убыванию или возрастанию), используется переключатель «Сортировать по индексу».
Кроме этого можно «просеять» все строки, изменив порядок вывода данных по значению каждого из столбцов (убыванию и возрастанию). Для этого нужно нажать на имя столбца вверху списка. При этом для строковых значений порядок вывода будет изменяться в алфавитном порядке.
Но весь этот функционал пригодится вам только для осуществления поиска в небольших таблицах. Для более внушительных объемов данных придется использовать SQL.
Мощные средства SQL
Как уже упоминалось, для поиска в MySQL используется команда SELECT. Ее синтаксис я приводить не буду, поскольку его размер может испугать даже самого опытного разработчика. Поэтому только на скриншоте, чтобы вы не упали в обморок :).
Будет «постигать» данную команду на примерах ее использования, которые могут пригодиться вам для построения более сложных запросов. Стартуем! Я все-таки опять «поиграюсь» со своими «зверушками», и все запросы буду адресовать таблице animal:
Находим строку по номеру id:
1 |
SELECT * FROM `animal` WHERE id=1; |
В этом запросе мы используем оператор WHERE, после которого задаем критерий поиска. Выводим определенные столбцы искомой строки:
1 |
SELECT name FROM `animal` WHERE id=1; |
В данном примере мы вывели не полностью искомую строку, а только значение столбца name. Поиск по строковому значению:
1 |
SELECT * FROM `animal` WHERE name='gala'; |
Здесь мы использовали в качестве параметра для поиска по MySQL базе строчное значение. Сортировка результатов выборки по возрастанию или убыванию:
1 |
SELECT * FROM `animal` ORDER BY name; |
Для сортировки результатов выборки мы использовали директиву ORDER BY. По умолчанию, установлена сортировка по возрастанию (ключевое слово ASC). Чтобы задать обратный порядок (по убыванию) нужно использовать слово DESC.
1 |
SELECT * FROM `animal` ORDER BY name DESC; |
Если нужно найти значения, отвечающие определенным параметрам, и отсортировать результаты выборки по убыванию:
1 |
SELECT * FROM `animal` WHERE name='dog' ORDER BY ID DESC; |
Углубляемся
Давайте покинем наше «зверье» и перенесемся в базу данных world. На ней я продемонстрирую еще несколько примеров выборки данных, соответствующих заданным параметрам. Все запросы я буду демонстрировать на основе таблицы country. Иногда (особенно в больших по размеру таблицах) требуется задать не один критерий для поиска, а несколько. Тогда запрос на получения списка стран из Европы и Африки будет выглядеть следующим образом:
1 |
SELECT Name, Continent FROM `country` WHERE Continent='Africa' OR Continent='Europe'; |
Этот же запрос на поиск по MySQL базе можно укоротить, если использовать ключевое слово in. Например:
1 |
SELECT Name, Continent FROM `country` WHERE Continent in ('Africa','Europe'); |
Для указания диапазона выборки применяется ключевое слово Between. Давайте выведем страны с численностью населения от 10 до 50 тыс. За основу возьмем предыдущий запрос:
1 |
SELECT Name, Continent, Population FROM `country` WHERE Population BETWEEN 10000 and 50000; |
Пример в PHP
Теперь приведем пример, как запустить поиск в PHP MySQL данных. Используем предыдущий запрос.
1 2 3 4 5 6 7 8 9 10 |
<?php $load= mysqli_connect('localhost', 'root', '', 'world'); $res= mysqli_query($load, "SELECT Name,Continent,Population FROM `country` WHERE Population BETWEEN 10000 and 50000"); $r=mysqli_fetch_assoc($res); while ($r = mysqli_fetch_assoc($res)) { printf("%s (%s)\n",$r["Name"],$r["Continent"]); } mysqli_free_result($res); mysqli_close($load); ?> |
Ну, вроде бы я вкратце рассказал вам все о поиске в MySQL. Надеюсь, из этой статьи вы почерпнули для себя что-то новенькое. А свою строку я так и не нашел. Наверное, кот утащил, пока я отходил от компа. Ох, уж это зверье :).