MySQL запросы: простые и сложные mysql запросы

mysql запросы

Эта статья будет полезна как для начинающих пользователей базы данных (БД) mysql, так и для профессионалов. Потому что мы будем рассматривать как простые mysql запросы, так и сложные mysql запросы. Если вы начинающий программист и не знаете, о чем идет речь, в пару словах попытаемся объяснить.

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

Все mysql запросы поделены на простые и сложные запросы. Нами также выделена категория очень простых запросов, структура которых очень понятна и не требует дополнительных разъяснений.

Простые mysql запросы – запросы в которых участвует одна таблица базы данных.

Сложные mysql запросы – запросы в которых могут участвовать две и более таблиц БД.

Подробнее о базе данных mysqlвы можете узнать на страницах статей нашего сайта. А сейчас перейдем ближе к теме.

Очень простые mysql запросы

show databases;

Выведет список всех баз.

show tables in base_name;

Покажет список всех таблиц в базе данных base_name.

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

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

Select запросы

слово select, говорит само за себя, и становится понятно, что пользуясь данными запросами, мы будем выбирать (читать) информацию из БД.

SELECT count(*) FROM table_name;

Выведет количество всех записей в таблице

SELECT * FROM table_name;

Выбирает все записи из таблицы БД

SELECT * FROM table_name LIMIT 2,3;

Выбирает 3 записи из таблицы, начиная с 2 записи. Этот запрос полезен при создании блока страниц навигации.

Пример mysql запроса

SELECT * FROM person ORDER BY number;

Выберет все записи из таблицы person в порядке возрастания значений поля number.

Пример mysql запроса

SELECT * FROM person ORDER BY number DESC;

Выбирает все записи из person, но уже в порядке убывания (т.е. в обратном порядке).

Пример mysql запроса

SELECT * FROM person ORDER BY number LIMIT 5;

Выбирает 5 записей из таблицы person, в порядке возрастания.

Пример mysql запроса

SELECT * FROM person WHERE name='Anna';

Выбирает все записи из таблицы person, где поле name соответствует значению Anna.

Пример mysql запроса

SELECT * FROM person WHERE name LIKE 'An%';

Выбирает все записи из таблицы person, в которой значения поля nameначинаются с An.

Пример mysql запроса

SELECT * FROM person WHERE name LIKE '%na' ORDER BY number ;

Выбирает все записи из таблицы person, где name заканчивается на na, и упорядочивает записи в порядке возрастания значения number.

Пример mysql запроса

SELECT name, last_name FROM person;

Выбирает все значения полей name и last_name из таблицы person.

Пример mysql запроса

SELECT DISTINCT site FROM table_name;

Выбирает уникальные (DISTINCT) значения поля site из таблицы table_name. Например, при 5 значениях поля site: sitear.ru, sitear.ru, sitear.ru, yaveterinar.ru, wi-korporaciya.ru; выведет только 3 уникальные значения: sitear.ru, yaveterinar.ru, wi-korporaciya.ru;

Пример mysql запроса

SELECT * from person where age in (12,15,18);

Выведет все записи таблицы person в которых значения поля age будет равно 12 или 15 или 18.

Пример mysql запроса

select max(age) from person;

Выберет максимальное значение age из таблицы person.

Пример mysql запроса

select name, min(age) from person;

Выберет минимальное значение age из таблицы person.

Пример mysql запроса

Insert запросы

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

insert into table_name(site, description) values ('sitear.ru', 'SiteAR – создание сайтов')

Вставит в таблицу table_name, а точнее в поля site и description данной таблицы, соответствующие значения.

Update запросы

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

update table_name set site = 'domain.com' where id = '3'

Изменяет значение поля site на domain.com в таблице table_name где id равен 3.

Delete запросы

удаляют записи из таблицы БД.

delete from table_name where id = '3'

Удаляет запись из table_name где id равен 3.

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

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

SELECT DISTINCT last_name FROM person, address WHERE person.adress_no = address.address_no AND city LIKE 'L%';

или

SELECT DISTINCT last_name FROM person p, address adr WHERE p.adress_no = adr.address_no AND city LIKE 'L%';

Выводит все уникальные фамилии людей (last_name), которые живут в городе с названием на букву L. (предполагаем, что в таблице address есть поля address_no, city).

Данные примеры сложных mysql запросов, выведут один и тот же результат. Запросы не очень то и сложные, нужно только указать имя таблицы БД, а потом, через точку указать поле таблицы. Или же можно, как во втором примере, дать короткие имена таблицам (p для person, adr для address). Результат запросов будет один и тот же.

SELECT heroes.char_name, heroes.count, char_templates.ClassName FROM char_templates, heroes WHERE char_templates.ClassId = heroes.class_id Order by char_templates.ClassName;

 или

SELECT char_name, count, ClassName FROM heroes left join char_templates on heroes.class_id=char_templates.ClassId;

 Берем из таблицы heroes поле char_name, из heroes поле count, из таблицы char_templates поле ClassName, где char_templates.ClassId и heroes.class_id имеют общий идентификатор и сортируем запрос по имени класса героев.

Таким же образом, можно подавать сложные mysql запросы с помощью update, insert, delete и др.

Если у вас возникли вопросы по поводу mysql запросов, можете их задать в комментариях ниже. Надеюсь, подборка запросов используемых в mysql, будет очень полезна.

69

td69



Дальше: CAPTCHA на PHP: реализация скрипта каптчи на php


Дискуссия по теме    60 Комментариев
Добавить комментарий
Имя 08.02.2018 ? 13:53
Ахах, комменты огонь XD Закидали вопросами %) Спасибо за статью, все понятно и доступно написано!
Nata 09.11.2017 ? 11:25
Подскажите пожалуйста. Как выбрать записи из одной таблицы которых нет в другой таблице. Спасибо.
Darya 02.11.2017 ? 13:14
Подскажите, пожалуйста, как вывести наименование товара с минимальной выручкой?
alexdmit 07.08.2017 ? 22:01
Доброго времени суток! Подскажите, как получить записи одной таблицы из определенного диапазона имен? Например, есть 700 записей с именем x.png. Необходимо получить все записи начиная с 100.png по 150.png.
Pavel 30.01.2017 ? 14:53
Помогите пожалуйста составить запросс need to help with creating sql inquiry Show the list of first, last names and ages of the employees whose age is greater than 55. The result should be sorted by last name. I dont have age, but have birth dates
epromote 30.12.2016 ? 18:43
Доброго времени суток.С Наступающими праздниками у меня вопрос как зделать запрос на массовое изменение параметра,например зарегестрированных 5-- человек и нужно поменять 1 параметр у всех? заранее благодарю
extr3m 08.11.2016 ? 23:50
Здравствуйте,обнулил таблицу, пользователям id присваивается начиная от 30000 тысяч , подскажите как исправить, чтобы от последнего отталкивалось числа, в ручную 7 пользователей добавил, новые появляются со значением 30000к по порядку
Barik 12.10.2016 ? 19:29
Vlad, я нестал пробовать второй вариант, так как первый работает идеально! Еще раз спасибо!
Barik 11.10.2016 ? 08:55
Спасибо Vlab! Буду пробовать..
Barik 08.10.2016 ? 09:09
Подскажите пожалуйста! Делаю новостную ленту, есть к записям комментарии. Мне нужно вывести последние три комментария в порядке возрастания. Уже весь мозг вывернул с запросами.
Vlad 10.10.2016 ? 20:55
Можно вывести таким запросом: SELECT * FROM (SELECT * FROM comments ORDER BY id_comments DESC LIMIT 3) AS comments ORDER BY id_comments ASC Или таким: SELECT * FROM comments ORDER BY id_comments DESC LIMIT 3 Но при выводе на сайт сделать array_reverse
Евгений 07.12.2015 в 16:18
Здравствуйте. Есть задача по переносу нескольких производителей в другую базу данных. Движок OpenCart, данные о товарах разделены между 3 таблицами 'oc_product', 'oc_product_description' и 'oc_product_to_category', делать выборку научился. В новой базе id товара может повторяться, поэтому мы можем просто очистить эти поля. Но тогда потеряем связь между самими таблицами. Я так понимаю придется задать свой числовой ряд через excel. И каким образом выгружать и заливать эти 3 таблицы. По отдельности?
Юрий 02.12.2015 в 16:18
Помогите с запросом: Выбрать обучаемых, которые решали все задачи, кроме первой.
Карина 01.12.2015 в 18:22
Помогите составить запрос...Есть 3 таблицы. Первая "Testcase" состоит из id,name. Вторая "R", тоже id,name. И третья таблица "RTEST" объединяет эти две по id, id_testcase и id_r. Мне нужно в запросе id_r разделить на id_testcase и умножить это число на 100%. Как правильно записать??
Роман 12.09.2015 в 14:44
Доброго времени суток! Есть две таблицы к примеру адрес_подключен и адрес_перенесен. В них идентичны id, ulic, dom, и kv. Как сформировать запрос, чтобы обе таблицы отображались в одном списке. Заранее спасибо)))
Игорь 08.06.2015 в 09:57
Добрый день!Подскажите пожалуйста, как правильно выполнить условие в одном запросе: if(isset($_POST['string_a'])){$string_b = $string_a} else{$string_b = "%"} $query = mysql_query("SELECT * FROM table WHERE field <= $string_b"); но, если $string_b = "%" , такой запрос будет некорректен, а корректным будет (WHERE field LIKE $string_b). Как правильно оформить это условие именно в одном запросе? Заранее благодарен!
Настя 22.05.2015 в 11:22
Помогите пожалуйста,)Нужно посчитать сумму всех имеющихся значение в CenaYs в таблице Klienti, и вписать сумму в отдельное поле, взяв от нее 40%......
Тарас 23.05.2015 в 00:01
Это нужно реализовать на PHP или только на mysql? Если и то и другое, то можно так: $total_count = 0; $query = 'select CenaYs from Klienti'; while($arr=mysql_fetch_array($query)){ $total_count = $total_count $arr[0]; } mysql_query("update TABLICA_GDE_NADO_SUMU set SUMA = '$total_count'") or die ("Error! query - set"); только проценты сами посчитаете...
Алексей 01.03.2015 в 23:47
Добрый день! Помогите пожалуйста составить запрос. Есть таблица questions в ней поля to_user и from_user в них записаны данные из поля userneme из таблицы user. Сут вопроса нужно заменить эти данные на данные из той же таблицы user только из столбца id а не userneme. Говоря иначе сейчас в to_user записано "admin", а надо сделать "1". На сайте 7000 пользователей и делать 7000 запросов как-то не сложно. Можно ли замутит один большой запрос, что бы он сам сверял данные и заменял на соответствующие? Спасибо!
Роман 02.12.2014 в 13:41
Светлана,вот пример: <style> table{ background : rgba(100,100,100,0.6); border-radius : 5px; } td{ border : 1px solid black; } </style> <? $connect = new PDO("mysql:host=localhost;dbname=school", user, password); $res = $connect->prepare("select * from `math` where `mark`='5'); $res->execute(); echo '<table>'; echo '<tr><td>Ученик</td><td>Дата рождения</td><td>Оценка</td></tr>'; while($result = $res->fetch()) { echo '<tr><td>'.$result['pupil'].'</td>'; echo '<td>'.$result['b_date'].'</td>'; echo '<td>'.$result['mark'].'</td></tr>'; } echo '</table>'; ?>
Светлана 20.11.2014 в 13:27
Здравствуйте, очень нужна помощь! Нужно составить запрос, в котором выводятся фамилии и дни рождения тех учащихся, которые сдали математику на 5. СРОЧНО!
Андрей 19.07.2014 в 10:12
Помогите плиз сделать запрос в My Sql. Найти, Х классы в которых учится хотя бы 1 Петров или Петрова. Вывести номер класса и букву класса.
Сергей 26.05.2014 в 00:06
Задача 1. 0) http://www.php.su/functions/?mysql-fetch-field 1)Построить список всех таблиц в БД в виде элемента <SELECT> 2)Отдельно список таблиц, у которых число полей не более 3 3)При выборе (в элементе SELECT) таблицы вывести число записей в таблице
Чулпан 05.05.2014 в 09:23
Скажите пожалуйста как выглядит запрос, который выводить всю строку через ";". Например, 1;Anna;Moroz;12
Филипп 25.02.2014 в 11:09
Спасибо!
Максим 31.10.2013 в 00:52
Здравствуйте. Возможно ли составить следующий запрос: увеличить значение поля smt на единицу у любой записи, поле smt которой больше определенного числа n? Проще говоря, можно ли в MySQL запрос запихать IF'ы, икременты, и т. п.? Дело в том, что данных много, а БД отвечает достаточно долго (0.0004 мс, для несколько тысяч элементов это непростительно) -- Спасибо автору, отличный блог!
Тарас 01.11.2013 в 14:14
update table_name set smt = smt 1 where smt > n
Тарас 01.11.2013 в 14:15
Система вырезает знак плюса, там должно быть так: update table_name set smt = smt ПЛЮС 1 where smt > n
Евгений 18.10.2013 в 16:25
У вас на этой странице текст сливается в некоторых местах, неудобно читать, а так мне ваш блог очень нравиться
Виталюша 17.09.2013 в 21:34
Уважаемый автор, приведите пожалуйста больше примеров-соответствий как последний пример, затроньте INNER JOIN, FULL OUTER JOIN. Никак не могу проглотить материал, LEFT и RIGHT JOIN, до степени "глянул условие - написал запрос". Может посоветуете материал по этой теме который легко усваивается=))) За-ранее спасибо!
Олег 12.08.2013 в 19:21
Сдается мне, что на запрос:"SELECT DISTINCT last_name FROM person p, address adr ..." Мускл напишет:"Поле last_name is ambigious", так как неясно к какой таблице оно относится
Арт 21.05.2013 в 11:55
Спасибо статья очень классная
Нмколай 29.04.2013 в 15:03
Здраствуйте. Помогите составить сложний запрос. Есть 2 простьіх: SELECT * FROM personal where pid = $lol2" SELECT ukr_name_1 FROM anime where aid = $lol1" пишу так: SELECT * FROM personal left join anime on anime.ukr_name_1=$lol1; не работает.
Николай 29.04.2013 в 17:11
Разобрался сам. SELECT anime.ukr_name_1, personal.ukr_name_f, personal.ukr_name_l FROM anime, personal WHERE anime.aid=$lol1 AND personal.pid=$lol2
Кристина 18.04.2013 в 01:51
Спасибо большое за примеры!=)
Показать более ранние комментарии (25) →
Добавить комментарий
Просмотров: 316281
Страхование КАСКО
карта банка
ндфл
усн
Оформление доверенности
страхование ипотеки
esim
осаго
ВЗР страхование
кредитная карта
Cialis barato Viagra Contrareembolso Cialis 5 mg precio mejores farmacias para comprar Viagra reacciones adversas de Cialis Reduslim cómo tomar soluciones para la impotencia Sildenafil Comprare Cialis 5 mg Giornaliero online in Italia Effetti indesiderati del Cialis 5 mg Acquista Cialis 20mg Cialis originale in vendita In Svizzera si compra il Viagra senza ricetta Cialis 10mg online Acquista Viagra in farmacia Offerta Cialis 5mg Spedra Avanafil in vendita online Acquista Viagra in Svizzera senza prescrizione авиатор спрайб Consegna a domicilio di Cialis 5 mg Effetti collaterali di Cialis 5 mg Consegna a domicilio di Cialis 20mg Acquista Cialis originale generico in Svizzera Consegna a domicilio di Viagra senza ricetta in Svizzera Compra Cialis 10mg Consegna a domicilio di Viagra in farmacia online Sconto Cialis 5mg Comprar Reduslim por internet Comprare Spedra Avanafil senza ricetta online Dove comprare il Viagra in Svizzera Compra Cialis Comprar online Viagra Contrareembolso Dónde encontrar Cialis 5 mg al mejor precio Viagra sin receta Cialis 5 mg efectos secundarios graves Reduslim comprar en línea Disfuncion Erectil tadalafilo avanafil prezzo cialis 20 mg prezzo cialis effetti benefici cialis 10 mg Reduslim Kaufen pulse x coin price