Delphi вики
Advertisement

Ключевое слово SELECT используется для получения информации из таблиц.
Для примера возьмём следующие базы:

Имя базы
Поля базы

Customers (Клиенты)

id (SERIAL) - Идентификатор
name (VARCHAR) - Имя
phone (VARCHAR) - Телефон
address (VARCHAR) - Адрес
raiting (INT) - Реётинг

Products (Товары)

id (SERIAL) - идентификатор
description (VARCHAR)
detail (TEXT)
price (DECIMAL (8,2))

Orders (Заказы)

id (SERIAL) - идентификатор
date (DATE) - Дата
product_id (BIGINT) - Товар
qty(INT) - Количество
amount (DECIMAL (8,2)) - Сумма
customer_id (BIGINT) - Клиент

Выгрузка данных из одной таблицы

Выгрузка всех записей таблицы:

SELECT * FROM Customers

Выгрузка определённых полей таблицы:

SELECT name,raiting FROM Customers

Также можно производить арифметические действия.
Данный код выведет все записи полей name и raiting таблицы Customers, причём все значения поля raiting будут разделены на 1000:

SELECT name,raiting/1000 FROM Customers

Выгрузка уникальных значений

Для выгрузки уникальных значений используется ключевое слово DISTINCT.
Пример использования:

SELECT DISTINCT(name) FROM Customers

Упорядочивание строк

Для сортировки таблицы используются ключевые слова ORDER BY.
Для определения направления сортировки указываются следующие значения:

  • ASC - по возрастанию (от меньшего к большему);
  • DESC - по убыванию (от большего к меньшему);
  • параметр не указан - по возрастанию. (ASC можно опустить).

Пример: данный код говорит о том, что полученные данные будут отсортированы по полю raiting по убыванию, а при одинаковых значениях поля raiting дополнительно по полю name по возрастанию:

SELECT name,raiting FROM Customers
ORDER BY raiting DESC, name ASC

Также в операторе ORDER BY вместо имён полей можно указывать их номера.
Этот код аналогичен предыдущему

SELECT name,raiting FROM Customers
ORDER BY 2 DESC, 1

Условия отбора

Для указания условий отбора используется зарезервированное слово WHERE, после которого указываются условия отбора.
Например:

SELECT * FROM Customers WHERE name LIKE 'Текст%'
  или
SELECT * FROM Customers WHERE raiting=10

Для задания условия по текстовому полю используется слово LIKE. Знак % заменяет привычную *, что означает неопределённое количество знаков. В нашем примере мы выбираем только те строки, в поле name которых содержимое начинается со слова 'Текст'. Если нужно искать фразу в любом месте, то писать нужно %Текст%.
Также в запросе можно применять логические операторы, например:

SELECT * FROM Customers
WHERE name LIKE 'Текст%' AND raiting=10

Выгрузка данных из нескольких таблиц

Простое объединение

Объединение данных из нескольких таблиц выполняется запросом:

SELECT <Список столбцов> 
FROM <Список таблиц>
WHERE <Условия отбора>

Например для вывода информации о всех заказанных товарах за определённую дату с указанием имён и адресов заказчиков:

SELECT name, address, product_id, qty
FROM Customers, Orders
WHERE Customers.id = Customer_id AND date='2017-12-12'

условие Customers.id = Customer_id говорит о том, что должны выводиться сведения только о заказах этого клиента. Иначе мы бы получили набор всевозможных комбинаций этих двух таблиц.

Также можно объединять данные таблиц с самой собой, например для выгрузки клиентов с одинаковым рейтингом используется следующий запрос:

SELECT L.name, R.name
FROM Customers L, Customers R
WHERE L.raiting  = R.raiting

В данном запросе мы присвоили псевдонимы L и R таблице Customers и работали с ними как с разными таблицами.

Вложенные запросы

Advertisement