Разное
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Компоненты ToolBar и PageScroller
Категория: Компоненты
Категория: Компоненты
Проверить существование определённого URL
Категория: Базы данных
Категория: Базы данных
Как запустить приложение, дождаться его исполнения
Категория: Приложение
Категория: Приложение
Что такое хук (hook)?
Категория: Приложение
Категория: Приложение
Компонент StatusBar
Категория: Компоненты
Категория: Компоненты
Добавить данные в EXE файл и получить их
Категория: Файловая система
Категория: Файловая система
Вычисление интеграла с заданной точностью алгоритмом Симпсона.
Категория: Математика
Категория: Математика
Преобразовать любой тип в строку
Категория: Текст и строки
Категория: Текст и строки
Получение списка всех сетевых дисков из Delphi
Категория: Интернет и Сети
Категория: Интернет и Сети
Вызов контекстного меню в позиции курсора
Категория: Компоненты
Категория: Компоненты
Справочник по MySQL
Справочник по MySQL - Поиск записей в таблице(SELECT)
Поиск записей осуществляется командой SELECT
Эта команда ищет все записи в таблице table_name, которые удовлетворяют выражению выражение.
Если записей несколько, то при указанном предложении order by они будут отсортированы по тому полю, имя которого записывается правее этого ключевого слова (если задано слово desc, то упорядочивание происходит в обратном порядке). В предложении order by могут также задаваться несколько полей.
Особое значение имеет символ *. Он предписывает, что из отобранных записей следует извлечь все поля, когда будет выполнена команда получения выборки. С другой стороны, вместо звездочки можно через запятую непосредственно перечислить имена полей, которые требуют извлечения. Но чаще всего все же пользуются именно *.
Например, нам надо найти в таблице, содержащей сообщения в гостевой книге, все записи, которые оставил определенный пользователь.
Но что делать, если искомый текст не занимает все поле, а является частью этого поля (например, при поиске слова или словосочетания в общем массиве текста)?
Например я использую следующую команду (наверно этот способ не самый лучший, но тем не менее он работает):
Смысл такой: если кол-во вхождений строки $search в поле content больше 0 (т.е. оно вообще есть), то запись добавляется к остальным найденным записям.
Надо отметить, что указанный способ ищет текст с учетом регистра. Чтобы искать без учета регистра, можно воспользоваться следующей командой:
т.е. искомая строка и запись в таблице переводится в верхний регистр и затем производится поиск.
Теперь представим, что у нас есть база сообщений гостевой книги, и нам надо отсортировать сообщения по времени, когда они были оставлены.
Для этого одно из полей таблицы базы должно содержать время записи сообщения.
Сортировка по какому-либо столбцу осуществляется при помощи конструкции order by.
В нашем случае, при учете, что более "свежие" сообщения будут сортироваться верхними:
Т.е. данные были отсортированны по убыванию.
Если нам надо отсортировать данные по возрастанию, надо вместо ключевого слова DESC применить ASC:
Данные также можно отсортировать по нескольким столбцам. Для этого надо названия столбцов указать через запятую. Это может пригодиться, например, если в столбце, по которому производится сортировка, есть несколько одинаковых значений.
Сначало данные сортируются по первому столбцу field1. Затем, если в первом столбце есть несколько одинаковых значений, выполняется дополнительная сортировка по второму столбцу (внутри группы с одинаковыми значениями в первом столбце).
Если требуется, чтобы при поиске выдавались не все найденные записи, а определенная группа, то нужно использовать параметр LIMIT.
В этом параметре задается два значения:
-start - указывает, с какой позиции нужно выдавать найденные записи
-length - кол-во записей
Например, нам нужно выбрать из базы данных гостевой книги записи начиная с 20 по 45 (т.е. чтоб вывести 25 записей):
См. также
Типы данных, используемые в базе данных MySQL
Создание базы данных MySQL (CREATE DATABASE)
Удаление базы данных MySQL (DROP DATABASE)
Создание таблицы в базе данных MySQL (CREATE TABLE)
Удаление таблицы из базы данных MySQL (DROP TABLE)
Переименование таблицы (ALTER TABLE RENAME)
Вставка столбцов (ALTER TABLE ADD)
Изменение свойств столбца (ALTER TABLE CHANGE)
Удаление столбцов (ALTER TABLE DROP)
Вставка строки в таблицу INSERT
Удаление строк из таблицы (DELETE FROM)
Обновление записей в таблице(UPDATE)
Поиск записей в таблице(SELECT)
Поиск записей осуществляется командой SELECT
Эта команда ищет все записи в таблице table_name, которые удовлетворяют выражению выражение.
Если записей несколько, то при указанном предложении order by они будут отсортированы по тому полю, имя которого записывается правее этого ключевого слова (если задано слово desc, то упорядочивание происходит в обратном порядке). В предложении order by могут также задаваться несколько полей.
Особое значение имеет символ *. Он предписывает, что из отобранных записей следует извлечь все поля, когда будет выполнена команда получения выборки. С другой стороны, вместо звездочки можно через запятую непосредственно перечислить имена полей, которые требуют извлечения. Но чаще всего все же пользуются именно *.
Например, нам надо найти в таблице, содержащей сообщения в гостевой книге, все записи, которые оставил определенный пользователь.
// Имя пользователя
$user="Admin";// name - имя поля в таблице, которое содержит имена пользователей,
// оставивших свои сообщения в гостевой
// db_guest - имя таблицы, содержащей сообщения, оставленные в гостевой
$sql="select * from db_guest where (name='$user')";
$result=mysql_query($sql);// Находим кол-во записей, удовлетворяющих условию
$rows=mysql_num_rows($result);
echo "$user оставил в гостевой $rows записей.";
Но что делать, если искомый текст не занимает все поле, а является частью этого поля (например, при поиске слова или словосочетания в общем массиве текста)?
Например я использую следующую команду (наверно этот способ не самый лучший, но тем не менее он работает):
// $search - содержит искомый тест
$sql="select * form db_guest where (locate('$search',content)>0)";
$result=mysql_query($sql);
Смысл такой: если кол-во вхождений строки $search в поле content больше 0 (т.е. оно вообще есть), то запись добавляется к остальным найденным записям.
Надо отметить, что указанный способ ищет текст с учетом регистра. Чтобы искать без учета регистра, можно воспользоваться следующей командой:
// $search - содержит искомый тест
$sql="select * form db_guest where (locate(lower('$search'),lower(content))>0)";
$result=mysql_query($sql);
т.е. искомая строка и запись в таблице переводится в верхний регистр и затем производится поиск.
Теперь представим, что у нас есть база сообщений гостевой книги, и нам надо отсортировать сообщения по времени, когда они были оставлены.
Для этого одно из полей таблицы базы должно содержать время записи сообщения.
Сортировка по какому-либо столбцу осуществляется при помощи конструкции order by.
В нашем случае, при учете, что более "свежие" сообщения будут сортироваться верхними:
// time - столбец, содержащий время написания записи
// в формате "UNIX timestamp"
$sql="SELECT * FROM db_guest ORDER BY data DESC";
$result=mysql_query($sql);
Т.е. данные были отсортированны по убыванию.
Если нам надо отсортировать данные по возрастанию, надо вместо ключевого слова DESC применить ASC:
$sql="SELECT * FROM db_guest ORDER BY data ASC";
$result=mysql_query($sql);
Данные также можно отсортировать по нескольким столбцам. Для этого надо названия столбцов указать через запятую. Это может пригодиться, например, если в столбце, по которому производится сортировка, есть несколько одинаковых значений.
$sql="SELECT * FROM db_name ORDER BY field1,field2 ASC";
$result=mysql_query($sql);
Сначало данные сортируются по первому столбцу field1. Затем, если в первом столбце есть несколько одинаковых значений, выполняется дополнительная сортировка по второму столбцу (внутри группы с одинаковыми значениями в первом столбце).
Если требуется, чтобы при поиске выдавались не все найденные записи, а определенная группа, то нужно использовать параметр LIMIT.
В этом параметре задается два значения:
LIMIT start,length
-start - указывает, с какой позиции нужно выдавать найденные записи
-length - кол-во записей
Например, нам нужно выбрать из базы данных гостевой книги записи начиная с 20 по 45 (т.е. чтоб вывести 25 записей):
$sql="select * from db_guest limit 20,25";
$result=mysql_query($sql);
_________________________________________
См. также
Типы данных, используемые в базе данных MySQL
Создание базы данных MySQL (CREATE DATABASE)
Удаление базы данных MySQL (DROP DATABASE)
Создание таблицы в базе данных MySQL (CREATE TABLE)
Удаление таблицы из базы данных MySQL (DROP TABLE)
Переименование таблицы (ALTER TABLE RENAME)
Вставка столбцов (ALTER TABLE ADD)
Изменение свойств столбца (ALTER TABLE CHANGE)
Удаление столбцов (ALTER TABLE DROP)
Вставка строки в таблицу INSERT
Удаление строк из таблицы (DELETE FROM)
Обновление записей в таблице(UPDATE)
Поиск записей в таблице(SELECT)