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