Houston, we have a problem.

Выборка данных



Все данные из таблицы
SELECT * FROM catalogs;

SELECT id_catalog, name FROM catalogs;
SELECT name, id_catalog FROM catalogs;

Условная выборка


Ключевое слово WHERE , после
которого следует логическое условие.

SELECT * FROM catalogs WHERE id_catalog > 2;

Условие может быть составным и объединяться при помощи логических
операторов AND (И) или OR (ИЛИ).
SELECT * FROM catalogs
WHERE id_catalog > 2 AND id_catalog <= 7;


СУБД MySQL поддержи­вает унарный оператор отрицания NOT
SELECT id_catalog, id_catalog > 2, NOT id_catalog > 2 FROM catalogs;


Помимо операторов OR и AND язык SQL предоставляет еще один логический
оператор: исключающее ИЛИ - XOR.

Для выборки записей из определенного интервала используется оператор
BETWEEN min AND mах, возвращающий записи, значения которых лежат в диапазоне
от min до mах.
SELECT * FROM catalogs WHERE id_catalog BETWEEN 2 and 6;


Существует конструкция, противоположенная конструкции BETWEEN - NOT
BETWEEN, которая возвращает записи, не попадающие в интервал между min и
mах.
SELECT * FROM catalogs WHERE id_catalog NOT BETWEEN 2 and 6;

Иногда требуется извлечь записи, удовлетворяющие не диапазону, а списку,
например, записи с id_cata1og из списка ( 1, 2, 5).
Для этого предназначена конструкция IN.
SELECT * FROM catalogs WHERE id_catalog IN (1, 2, 7, 10);

Конструкция NOT IN является противоположной оператору IN
SELECT * FROM catalogs WHERE id_catalog NOT IN (1, 2, 7, 10);

В конструкции WHERE могут использоваться не только числовые столбцы.
SELECT * FROM catalogs WHERE name = 'видеоадаптеры';

Условную выборку с участием строк удобнее производить при помощи оператора LIKE,
который по­зволяет использовать простейшие регулярные выражения.
Оператор LIKE имеет следующий синтаксис:
expr LIКE раt
SELECT * FROM catalogs WHERE name LIKE '%ы';

Оператор NOT LIKE противоположен по действию
оператору LIKE и имеет следующий синтаксис:
expr NOT LIКE раt
SELECT * FROM catalogs WHERE name NOT LIKE '%ы';

Псевдонимы столбцов
В SELECT-заnросе столбцу можно назначить новое имя при
помощи оператора AS.
SELECT id_catalog , name , DATE_FORMAT (putdate , '%d. %m. %Y') AS printdate
FROM catalogs ;


Сортировка записей


Осуществляется при помощи конструкции ORDER ВY,
которая следует за выражением SELECT.
SELECT id_catalog, name FROM catalogs ORDER BY id_catalog;
SELECT id_catalog, name FROM catalogs ORDER BY name;

По умолчанию сортировка производится в прямом порядке, однако, добавив
после имени столбца ключевое слово DESC, можно добиться сортировки в
обратном порядке
SELECT id_catalog, name FROM catalogs ORDER BY id_catalog DESC;
SELECT id_catalog, name FROM catalogs ORDER BY name DESC;

Сортировка таблицы по двум столбцам
SELECT * FROM tbl ORDER BY id_catalog, putdate DESC;

Записи в таблице tbl сначала сортируются по
столбцу id_catalog, а совпадающие в рамках одного значения id_catalog
записи сортируются по полю putdate в обратном порядке.
!!! Следует отметить, что ключевое слово DESC относится только к полю putdate.

Вывод записей в случайном порядке
Для вывода записей в случай ном порядке используется конструкция
ORDER ВY RAND ()
SELECT id_catalog, name FROM catalogs ORDER BY RAND();

Вывести одну случайную запись
SELECT id_catalog, name FROM catalogs ORDER BY RAND() LIMIT 1;

Ограничение выборки


Постраничная навигация
используется при помощи ключевого слова LIMIT, за которым следует
коли­чество записей, выводимых за один раз.

Получить последние две записи
SELECT id_catalog, name FROM catalogs
ORDER BY id_catalog DESC
LIMIT 2;


Ключевое слово LIMIT с двумя числами:
первое указывает позицию, начиная с которой необ­ходимо вернуть
результат, а второе - количество извлекаемых записей
SELECT id_catalog, name FROM catalogs
ORDER BY id_catalog DESC
LIMIT 2, 2;


Вывод уникальных значений
Kлючевое слово DISTINCT предписывает MySQL извлекать
только уникальные значения
SELECT DISTINCT id_catalog FROM tbl ORDER BY id_catalog;

Для ключевого слова DISTI NCT имеется противоположенное слово ALL, кото­
рое предписывает извлечение всех значений столбца, в том числе и повто­
ряющихся. Поскольку такое поведение установлено по умолчанию, ключевое
слово ALL часто опускают.

Часто для извлечения уникальных записей прибегают к конструкции
GROUP ВY, содержащей имя столбца, по которому группируется результат
SELECT id_catalog
FROM tbl
GROUP BY id_catalog
ORDER BY id_catalog;


Объединение таблиц


Если формат результирующих таблиц (число, порядок следования и тип
столбцов) совпадает, то возможно объединение результатов выполнения двух
операторов SELECT в одну результирующую таблицу. Это достигается с
ис­пользованием оператора UNION.

SELECT id_catalog FROM catalogs
UNION
SELECT id_catalog + 5 FROM tbl;


Отобразить повторяющиеся вопросы
SELECT id_catalog FROM catalogs
UNION ALL
SELECT id_catalog + 5 FROM tbl;


@темы: MySQL