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;