MySQL запросы - как единственно верный способ вывода данных

Как только человек начинает работать с множеством данных, возникает необходимость их каким-либо образом упорядочивать и архивировать, поэтому рано, или поздно приходит мысль о создании такого виртуального архива, как база данных, в которой и будет храниться вся необходимая информация. Тогда можно прибегнуть, к примеру, к такой программе, как Microsoft Access.

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

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

Чтобы обращаться и собственно работать с БД MySQL существуют определенные команды, которые обычно обозначают как запросы MySQL. Именно с помощью запросов можно выполнять такие манипуляции с базой как удаление, сортировка, изменение, добавление, получение и т.д.

Какими бывают MySQL запросы?

Все существующие команды MySQL можно разделить на простые или легкие для понимания и запоминания и сложные запросы.

Простые запросы MySQL — это команды, для исполнения которых достаточно одной таблицы, так как они производят манипуляции только с одной таблицей из базы.

Сложные запросы MySQL — это команды, которые могут затрагивать одновременно две или даже больше таблиц из одной базы данных.

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

Простые MySQL запросы

Существует два запроса, которые можно назвать максимально или супер простыми.
«Show databases;» — данный запрос выведет на экран список всех имеющихся баз данных.

«Show tables in bd;» — данная команда позволит узнать количество и наименования всех таблиц, которые есть в базе данных под названием bd.

Ну а теперь от супер простых запросов перейдем просто к простым.

Запросы MySQL типа Select

Зная значение слова select, можно понять, что все команды, связанные с данным словом, будут направлены на выбор и просмотр информации хранящейся только в одной таблице принадлежащей к базе.

«SELECT count(*) FROM cart;» — данный запрос позволит узнать, сколько записей содержится в упомянутой таблице:

Запросы MySQL

Запрос «SELECT * FROM cart;» — позволит просмотреть все данные, которые имеются в таблице cart из базы данных:

данные, которые имеются в таблице cart

«SELECT * FROM cart LIMIT 2,3;» — с помощью данного запроса можно выбрать блок данных и вывести его. В данном случае выбраны 3 записи на вывод, начиная со второй строчки. Такой запрос может быть очень полезен для создания блоков со страницами для навигации:

выбрать блок данных

«SELECT * FROM people ORDER BY number;» — данная команда позволит вывести все поля таблицы под названием people в соответствии с полем number в порядке увеличения его значений:

в порядке увеличения

«SELECT * FROM people ORDER BY number DESC;» — данный запрос позволяет выбрать все строки той же таблицы people, только упорядоченные не так как в предыдущем примере, а по убыванию:

по убыванию

«SELECT * FROM people ORDER BY number LIMIT 5;» — этот запрос выбирает из таблицы people только 5 строк, которые располагаются в соответствии с увеличением значения поля number:

number LIMIT 5

«SELECT * FROM people WHERE name=’Anna’;» — данный запрос делает выборку полей таблицы people, в которых в роли значения поля name указана переменная Anna:

выборку полей таблицы

«SELECT * FROM people WHERE name LIKE ‘An%‘;» — выводит только те поля таблицы people, в которых в полях под названием name начинается с букв An:

переменная Anna

«SELECT * FROM people WHERE name LIKE ‘%na’ ORDER BY number ;» — запрос выводит данные таблицы people только тогда, когда значение поля name оканчивается буквами na, причем данные выводятся упорядоченными в соответствии с увеличением значения поля number:

увеличением значения поля number

«SELECT name, last_name FROM people;» — выводит на экран только данные таблицы people заключенные в полях last_name и name:

данные таблицы people

«SELECT DISTINCT site FROM cart;» — команда выводит только не повторяющиеся значения поля site из таблицы cart. К примеру, если таблица будет содержать только три значения sit.ru, sit.ru, wi-de.ru, то после работы данной команды будет выведено только два значения — sit.ru и wi-de.ru:

два значения - sit.ru и wi-de.ru

«SELECT * from people where age in (12,15,18);» — данный запрос выведет на экран только те данные из таблицы people, у которых в качестве значения поля под названием age будут указаны цифры 12, 15 или 18:

данный запрос выведет

Запросы MySQL типа Insert

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

«INSERT into cart (sit, des) values (‘sit.ru’, ‘Sit-разработка сайтов’)» — данный запрос позволит вставить в таблицу базы под названием cart еще одну строку, у которой в поле sit будет значение sit.ru а в поле des значение Sit-разработка сайтов.

Запросы MySQL типа Update

Данный вид запросов занимается изменением данных уже имеющихся в базе.

«UPDATE cart set sit = ‘do.com’ where id = ‘3’» — запрос изменит значение, записанное в поле sit таблицы cart, в строке, номер id которой равен 3, на значение do.com.

Запросы MySQL типа Delete

Запросы данного типа позволяют производить удаление записей таблицы, являющейся частью базы данных.

«DELETE from cart where id = ‘3’» — данной командой удаляется вся информация из строки, id которой соответствует 3 в таблице cart.

Сложные запросы MySQL

Как уже было сказано ранее, сложный тип запросов — это запросы, которые способны одновременно задействовать две или даже больше двух таблиц в базе. Для того чтобы осознать принципы построения подобных команд рассмотрим хотя бы некоторые из них.

«SELECT DISTINCT name FROM people, address WHERE people.adress_no = ads.addr_no AND city LIKE ‘L%’;» — запрос сортирует и выводит все уникальные значения, записанные в поле name таблицы people, которые проживают по адресу с названием, начинающимся на букву L в соответствии со значением поля addr_no из таблицы баз под названием ads.

Данный запрос иначе может быть введен так:
«SELECT DISTINCT name FROM people p, ads a WHERE p.adress_no = a.addr_no AND city LIKE ‘L%’;».

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

«SELECT her.char_name, her.cnt, char_temp.ClassName FROM char_temp, her WHERE char_temp.ClassId = her.class_id Order by char_temp.ClassName;» — Данный запрос позволяет вывести на экран данные из полей char_name, и cnt таблицы базы под названием her и поля ClassName из таблицы char_temp благодаря тому, что значения полей ClassId таблицы char_temp и class_id таблицы her имеют одинаковые идентификаторы. Данные выводятся в упорядоченном виде по полю ClassName таблицы char_temp.

В сокращенном виде данная команда будет выглядеть так: «SELECT char_name, cnt, ClassName FROM her left join char_temp on her.class_id=char_temp.ClassId;».

Если суть построения команд для вас стала понятной, то вы без труда сможете составлять сложные запросы, используя не только команду SELECT, но и команды UPDATE, DELETE, INSERT и другие.

Вложенные запросы MySQL

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

Именно для того, чтобы избежать таких проблем MySQL делает возможным включение одного запроса в состав другого. Такие двойные запросы называются вложенные запросы или подчиненные. В подобных запросах оператор SELECT, который располагается внутри запроса, заключается в круглые скобки.

Сначала выполняется запрос, который располагается в скобках, а затем с теми данными, которые этот запрос предоставил, работает главный запрос.

Рассмотрим на примере. Допустим, в нашей базе данных есть две таблицы. Первая таблица под названием Cat:

Первая таблица

И вторая таблица под названием STR:

вторая таблица

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

Выглядеть данный запрос будет следующим образом: «SELECT (SELECT COUNT(*) FROM `STR` WHERE STR.category_id = cat.id) as `count`, cat.name FROM cat/».

Первым будет выполняться запрос в скобках (SELECT COUNT(*) FROM ` STR ` WHERE STR.category_id = cat.id), который предоставит информацию обо всех категориях, а в нем уже сделаем выборку для того, чтобы вычислить количество страниц, предназначенных для указанных категорий, посредством запроса «SELECT (*) as `count`, cat.name FROM cat».

Быстрота вывода результатов запроса

Для того чтобы однотипные запросы к базе данных выполнялись быстрее, возникла необходимость в том, чтобы производить кэширование MySQL запросов.

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

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

PHP и MySQL

СУБД MySQL — это одна из множества баз данных, поддерживаемая языком программирования PHP. Запросы к MySQL во время создания веб-страниц это обычное дело, потому что основная информация как раз таки и хранится в таблицах базы данных и чтобы вывести ее на экран, необходимы PHP запросы к MySQL.

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

  • Установка соединения с базой данных при помощи команды mysql_connect();
  • Выбор необходимой базы данных командой mysql_select_db();
  • PHP запросы к MySQL через команду mysql_query();
  • Обработка результата запроса mysql_fetch_array();
  • Закрытие соединения с базой данных или отключение от сервера БД mysql_close();

Из всего описанного можно понять, что работать с базами MySQL не так то и сложно, главное — суметь понять и правильно строить запросы к нужной информации.

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