- •Инструкция select
- •Результаты запроса на выборку
- •Простые запросы
- •Вычисляемые столбцы
- •Выборка всех столбцов (инструкция select*)
- •Повторяющиеся строки (предикат distinct)
- •Отбор строк (предложение where)
- •Условия отбора: сравнение
- •Проверка на принадлежность к диапазону значений
- •Проверка на членство в множестве
- •Сортировка результатов запроса (orderby)
- •Прочие объединения таблиц по равенству
Проверка на принадлежность к диапазону значений
Найти все заказы, сделанные в последнем квартале 1989 года
SELECT ORDER_NUM, ORDER_DATE, MFR, PRODUCT, AMOUNT
FROM ORDERS
WHERE ORDER_DATE BETWEEN ’01-OKT-89’ AND ’31-DEC-89’
Найти заказы, стоимости которых попадают в различные диапазоны.
SELECT ORDER_NUM, AMOUNT
FROM ORDERS
WHERE AMOUNT BETWEEN 20000.00 AND 29999.99
SELECT ORDER_NUM, AMOUNT
FROM ORDERS
WHERE AMOUNT BETWEEN 30000.00 AND 39999.99
Вывести список служащих, фактические объемы продаж которых не попадают в диапазон от 80% до 120% плана.
SELECT [NAME], SALES, QUOTA
FROM SALESREPS
WHERE SALES NOT BETWEEN (.8 *QUOTA) AND (1.2 * QUOTA)
Проверка на членство в множестве
Найти все заказы, сделанные четырьмя конкретными служащими
SELECT ORDER_NUM, REP, AMOUNT
FROM ORDERS
WHERE REP IN (107, 109, 101, 103)
Проверка на соответствие шаблону
Показать лимит кредита для Smithson Corp.
SELECT COMPANY, CREDIT_LIMIT
FROM CUSTOMERS
WHERE COMPANY = ‘Smithson Corp.’
Проверка на равенство значению NULL
Вывести список служащих, которые уже закреплены за офисами.
SELECT [NAME]
FROM SALESREPS
WHERE REP_OFFICE IS NOT NULL
Составные условия отбора (AND,OR,NOT)
Найти служащих, у которых фактический объем продаж меньше планового или меньше $300000.
SELECT [NAME], SALES, QUOTA
FROM SALESREPS
WHERE SALES < QUOTA
OR SALES < 300000.00
Найти служащих, у которых фактический объем продаж меньше планового и меньше $300000.
SELECT [NAME], SALES, QUOTA
FROM SALESREPS
WHERE SALES < QUOTA
AND SALES < 300000.00
Найти всех служащих, которые: а) работают в Денвере, Нью-Йорке или Чикаго; или б) не имеют менеджера и были приняты на работу после июня 1988 года; или с) превысили плановый объем продаж, но не достигли уровня в $ 600000.
SELECT [NAME]
FROM SALESREPS
WHERE (REP_OFFICE IN (22, 11, 12))
OR (MANAGER IS NULL AND HIRE_DATE >= ’01-JUN-88’)
OR (SALES > QUOTA AND NOT SALES > 600000.00)
Сортировка результатов запроса (orderby)
Вывести список офисов, отсортированных по фактическим объемам продаж в порядке убывания.
SELECT SITY, REGION, SALES
FROM OFFICES
ORDER BY SALES DESC
Вывести список офисов, отсортированный в алфавитном порядке по названиям регионов, а в каждом регионе – по разности между фактическим и плановым объемами продаж в порядке убывания.
SELECT SITY, REGION, (SALES – TARGET)
FROM OFFICES
ORDER BY REGION ASC, 3 DESC
Объединению результатов нескольких запросов (UNION)
Вывести список всех товаров, цена которых превышает $ 2000 или которых было заказано более чем на $30000 за один раз.
SELECT MFR_ID, PRODUCT_ID
FROM PRODUCTS
WHERE PRICE > 2000.00
UNION
SELECT DISTINCT MFR, PRODUCT
FROM ORDERS
WHERE AMOUNT > 30000.00
Запрос на объединение и повторяющиеся строки *
Вывести список всех товаров, цена которых превышает $ 2000 или которых было заказано более чем на $30000 за один раз.
SELECT MFR_ID, PRODUCT_ID
FROM PRODUCTS
WHERE PRICE > 2000.00
UNION ALL
SELECT DISTINCT MFR, PRODUCT
FROM ORDERS
WHERE AMOUNT > 30000.00
Запрос на объединение и сортировка *
Вывести список всех товаров, цена которых превышает $ 2000 или которых было заказано более чем на $30000 за один раз; список отсортировать по наименованию производителя и номеру товара.
SELECT MFR_ID, PRODUCT_ID
FROM PRODUCTS
WHERE PRICE > 2000.00
UNION
SELECT DISTINCT MFR, PRODUCT
FROM ORDERS
WHERE AMOUNT > 30000.00
ORDER BY 1,2
Простое объединение таблиц (объединение по равенству)
Вывести список всех заказов, включая номер и стоимость заказа, а также имя клиента и лимит его кредита.
SELECT ORDER_NUM, AMOUNT, COMPANY, CREDIT_LIMIT
FROM ORDERS, CUSTOMERS
WHERE CUST=CUST_NUM
Запросы с использованием отношения предок/потомок
Вывести список всех служащих, включая города и регионы, в которых они работают.
SELECT [NAME], CITY, REGION
FROM SALESREPS, OFFICES
WHERE REPOFFICE = OFFICE
Вывести список офисов, включая имена и должности их руководителей.
SELECT CITY, [NAME], TITLE
FROM OFFICES, SALESREPS
WHERE MGR = EMPL_NUM
Условия для отбора строк
Вывести список офисов, план продаж которых превышает $600000.
SELECT CITY, [NAME], TITLE
FROM OFFICES, SALESREPS
WHERE MGR = EMPL_NUM
AND TARGET > 600000.00
Несколько связанных столбцов
Вывести список всех заказов, в том числе их стоимости и описания товаров.
SELECT ORDER_NUM, AMOUNT, DESCRIPTION
FROM ORDERS, PRODUCTS
WHERE MFR = MFR_ID
AND PRODUCT = PRODUCT_ID
Запрос на выборку к трем и боле таблицам
Вывести список заказов стоимостью выше $25000, включая имя служащего, принявшего заказ, и имя клиента, сделавшего его.
SELECT ORDER_NUM, AMOUNT, COMPANY, [NAME]
FROM ORDERS, CUSTOMERS, SALESREPS
WHERE CUST = CUST_NUM
AND REP = EMPL_NUM
AND AMOUNT > 25000.00
Вывести список заказов стоимостью выше $25000, включая имя клиента, сделавшего заказ, и имя служащего, закрепленного за этим клиентом.
SELECT ORDER_NUM, AMOUNT, COMPANY, NAME
FROM ORDERS, CUSTOMERS, SALESREPS
WHERE CUST = CUST_NUM
AND CUST_REP = EMPL_NUM
AND AMOUNT > 25000.00
