Php mysql сложные запросы

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

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

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

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

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

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

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

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

Читайте также:  Setting global variable in python

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

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

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

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

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

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

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

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

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

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

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

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

« 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 :

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

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

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

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

« SELECT DISTINCT site FROM cart; » — команда выводит только не повторяющиеся значения поля site из таблицы cart . К примеру, если таблица будет содержать только три значения sit.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 » — запрос изменит значение, записанное в поле sit таблицы cart , в строке, номер id которой равен 3, на значение do.com .

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

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

« DELETE from cart where » — данной командой удаляется вся информация из строки, 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 :

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

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

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

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

Выглядеть данный запрос будет следующим образом: « 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 , тогда ваш сайт будет работать гораздо быстрее, и даже в случае если его одновременно будут использовать множество пользователей, это не сможет существенно отразиться на скорости открытия страниц.

Источник

Оцените статью