Запрос SQL на выборку записей
Единственный смысл использования базы данных в том, чтобы хранить в ней данные и иметь к ним доступ для считывания. Поскольку, весь смысл базы данных заключается в хранении и выборке, то данная статья по важности №1. Из этой статьи Вы узнаете, какой SQL-запрос нужен для выборки записей из таблицы базы данных.
Выборка заключается в получении result_set. Result_set - это и есть набор записей, который можно далее обрабатывать. Разумеется, обработка зависит от ПО, которое Вы используете и языка программирования. Мы с Вами рассматривали отправку запросов к базе данных в PHP, где разбиралась тема с обработкой result_set в ПО MySQL.
Выборка записей осуществляется с помощью команды SELECT. Давайте рассмотрим пример её использования:
SELECT id, login FROM users
В результате, будет возвращён result_set, который содержит все записи таблицы users. Обратите внимание, что мы указали только поля: "id" и "login". Если нам нужны значения всех полей, то тогда надо использовать такой SQL-запрос:
SELECT * FROM users
В result_set будут выведены все записи таблицы users со всеми полями и их значениями.
Как правило, требуется осуществлять выборку не таблицы целиком, а только записей, удовлетворяющих определённым критериям. Эти критерии можно описать в уже знакомой Вам конструкции "WHERE":
SELECT password FROM users WHERE login='TestUser'
В result_set попадут записи, поле "login" у которых имеет значение "TestUser".
Это всё, что нужно знать для выборки записей из базы данных. Однако, Вы должны понимать, что ключевой момент SQL-запроса на выборку записей - это "WHERE". Именно в ней описываются, какие записи нужно вытаскивать, а какие трогать не надо. В одной из следующих статей я обязательно познакомлю Вас с этой конструкцией поближе.
-
- Михаил Русаков
Комментарии (24):
неплохо б еще научиться делать выборку из нескольких статей с перекликающимися полями... как вам тема для новой статьи, Михаил?))
Ответить
Да, пожалуй, будет интересно. Думаю, что на следующей неделе уже появится подобная статья. Спасибо!
Ответить
Я разобрался с тем, как записывать данные в базу данных с формы (комментарии) и выводить их на страницу (по id). Но не могу понять как записать и вывести разные комменты на разных страницах. Умею вывести все записи с таблицы или какие-то на выбор - id1...id5 Но как указать на комменты к определённой странице(при записи или при выводе)??? Если не сложно, то пример кода не помешает!
Ответить
Для этого у комментариев должно было ещё одно поле, отвечающее за id страницы, на которой они должны выводиться.
Ответить
Забыл сказать! У меня страницы статические, но на .php Может как-то можно из формы в скрытом поле передавать обработчику, что этот коммент для этой страницы? Если да, то что там надо прописать? Я готов для каждой страницы указывать в форме разные данные!
Ответить
Да, так и нужно делать. <input type="hidden" name="page_id" value="15" /> - это как пример того, что нужно вставить в форме. Значение 15 будет для каждой страницы своё.
Ответить
Интересует как реализовать например на мультиязычном сайте выборку из базы.Например у меня есть описание на английской и в случае если пользователь установил английский язык он видит описание на английском,а если же выбрал на шведском, то описание будет на шведском? как это можно реальзовать?+
Ответить
Сделать в таблице вместо 1-го поля несколько, каждое поле для отдельного языка. Например, desc_en, desc_ru, desc_fr и так далее. И, соответственно, выводить описание из нужного поля.
Ответить
как сделать запрос не по таблице а по всей базе или сделать запрос по нескольким таблицам
Ответить
http://myrusakov.ru/sql-select-several.html
Ответить
Здравствуй Михаил В курсе PHP и MySQL при создании движка, при написании класса 'database_class.php' в функции 'getRandomElements()' используется запись 'RAND()' !!! При вызове этой функции, во время добавления опроса на сайт, я обнаружил, что опрос не добавляется из базы. Я изменил 'RAND()' в функции 'getRandomElements()' на 'id' и всё заработало! Вопрос. Почему может не работать 'RAND()'?
Ответить
Эта функция просто возвращает случайный int, возможно диапазон там неправильно задан.
Ответить
Мне нужно вытащить из таблицы записи начиная не с первой, а от id200 по id300. Это возможно? Как? Умею выводить по-всякому, но этот вариант не знаю!
Ответить
Так и делаете диапазон. Например, SELECT * FROM tablename WHERE id >= 100
Ответить
Обязательно нужно и то и то (>=)? Или что-то одно? > или = А как указать по которую запись выводить???
Ответить
AND (categoryid >= 100) добавляйте так сразу два условия, чтобы интервал получился.
Ответить
здравствауйте! у меня проблема (запрос 'SELECT * FROM table' возвращает только первую строку, как при выводе через print_r() так и через цикл выводится только одна строка. почему это может происходить ?
Ответить
У меня опять проблема:(Вообщем с сессиями я разобрался но тут возникла очередная неполодка.В библиотеке функций есть функция проверки логина пользователья но не знаю почему авторизация не работает. function checkUser($login) { $mysqli = connectDB(); $result_set = $mysqli->query("SELECT * FROM users WHERE login = '$login'"); closeDB($mysqli);}
Ответить
Михаил, а можно выводить записи из bd не используя при этом циклы? Как то упрощённо сделать? Например, если я не хочу, чтобы выводились все строки, а мне нужна одна строка только.
Ответить
Можно конечно, выводите просто то, что получили из своего построенного запроса.
Ответить
Добрый день. Есть таблица в которой примерно 80 полей, из которых данные имеются только в 10, остальные NULL. Поля с данными разные для каждой записи. Подскажите как можно выбрать из таблицы только те поля которые IS NOT NULL ?
Ответить
по id или по условию)как вам удобнее)
Ответить
Да вот не могу понять как правильно условие составить. Поля в которых есть данные изначально неизвестны. Например, запрос SELECT * FROM `table` WHERE `device` =1000 Выводит запись для устройства 1000 со всеми полями. Как добавить фbльтр чтобы вывелись только поля без NULL ?
Ответить
SELECT * FROM topics WHERE id_author IS NOT NULL;
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.