Академический Документы
Профессиональный Документы
Культура Документы
select лекции
select лекции
SELECT expressions
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]];
tables
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для записей,
которые будут выбраны. Если не предусмотрено никаких условий, будут
выбраны все записи
ORDER BY expression
Необязательный. Выражение, используемое для сортировки записей в
наборе результатов. Если указано более одного выражения, значения
должны быть разделены запятыми
Примеры
1. Извлечение всех столбцов из таблицы
SELECT
LAST_NAME
FROM CUSTOMERS;
SELECT SALES_REPRESENTATIVES.LAST_NAME,
SALES_REPRESENTATIVES.COMMISSION_RATE
FROM SALES_REPRESENTATIVES;
SELECT SALES_REPRESENTATIVES.LAST_NAME,
SALES_REPRESENTATIVES.COMMISSION_RATE
FROM Имя_Базы.SALES_REPRESENTATIVES;
6. Употребление комментариев.
ИЛИ
SELECT ODR_ID,
CTR_NUMBER
FROM ORDERS
WHERE CTR_NUMBER!='c03'
SELECT ITM_NUMBER,
PHY_START_DATE, PRICE
FROM PRICE_HISTORY
WHERE PHY_START_DATE='28-Mar-2020'
AND PRICE<3000
Выбрать номера товаров цена, у которых была установлена 20 марта или цена
больше 56 000.
SELECT ITM_NUMBER, PHY_START_DATE, PRICE FROM
PRICE_HISTORY
WHERE PHY_START_DATE='20-Mar-2020' OR PRICE > 56000
WHERE PHY_START_DATE='20-Mar-2020' OR
PHY_START_DATE='28-Mar-2020' AND PRICE<5000
Если вывод будет некорректен, проставить скобки там, где это необходимо.
Приоритет AND может быть выше, чем OR.
Выражение Описание
WHERE name LIKE 'text%' Находит любые значения, начинающиеся с "text"
WHERE name LIKE '%text' Находит любые значения, заканчивающиеся на "text"
WHERE name LIKE '%text Находит любые значения, которые имеют «text» в любой
%' позиции
Находит любые значения, которые имеют «text» во
WHERE name LIKE '_text%'
второй позиции
WHERE name LIKE 'text_ Находит любые значения, начинающиеся с «text» и
%_%' длиной не менее 3 символов
WHERE name LIKE 'text Находит любые значения, начинающиеся с «text» и
%data' заканчивающиеся на «data»
LIKE 'Ф%';
Следующий оператор SQL выбирает покупателей с фамилией,
заканчивающей на «в».
LIKE 'О_%_%';
Потом попробовать имя Ольга сократить до Ол и снова проверить запрос.
Функция SUM
SELECT SUM(QUANTITY_ORDERED) AS
Количество
FROM ORDERED_ITEMS;
SELECT SUM(QUANTITY_ORDERED)
AS Количество
FROM ORDERED_ITEMS
WHERE ODR_ID='o01';
Функция AVG
FROM PRICE_HISTORY;
Вывести среднюю цену товара под кодом in09
Функция COUNT
Эта функция необходима для того, чтобы подсчитать количество выбранных
значений или строк. Существует два основных варианта ее использования:
С ключевым словом DISTINCT, для того, чтобы подсчитать количество не
повторяющихся значений
С использованием «*», для того, чтобы подсчитать количество всех выбранных
значений
FROM SALES_REPRESENTATIVES;
Подсчитать количество сделанных заказов и количество покупателей в
таблице ORDERS
SELECT ODR_ID
FROM ORDERED_ITEMS
WHERE ITM_NUMBER='in03'
2. Вывести номер покупателя, на которого открыт заказ с номером o03
SELECT CTR_NUMBER
FROM ORDERS
WHERE ODR_ID ='o03'
3. А теперь объединим вышестоящие запросы в один. Первый запрос
станет подзапросом. Итоговый запрос выглядит следующим образом.
SELECT CTR_NUMBER
FROM ORDERS
WHERE ODR_ID = (SELECT ODR_ID
FROM ORDERED_ITEMS
WHERE ITM_NUMBER='in03')
Еще пример
SELECT * FROM
WHERE rownum = 1
Применение подзапросов в качестве вычисляемых полей
FROM ORDERS
WHERE CTR_NUMBER='c01'
Или так
Адрес
SELECT CUSTOMERS.LAST_NAME|| ' ' || CUSTOMERS.FIRST_NAME AS
ФИО_ПОКУПАТЕЛЯ, CITY AS ГОРОД, ADDRESS_LINE AS АДРЕС,
POSTAL_CODE AS ИНДЕКС, SALES_REPRESENTATIVES.LAST_NAME|| ' ' ||
SALES_REPRESENTATIVES.FIRST_NAME AS ФИО_ПРОДАВЦА, NAME AS
КОМАНДА
ON SALES_REPRESENTATIVES.SRE_ID = CUSTOMERS.SRE_ID
10. Вывести номер заказа (o01) и сумму этого заказа (количество товара* на
последнюю указанную цену товара)
FROM ORDERED_ITEMS
ON ORDERED_ITEMS.ITM_NUMBER=PRICE_HISTORY.ITM_NUMBER
WHERE ODR_ID='o01'
AND PHY_START_DATE = (select max(PHY_START_DATE) FROM
PRICE_HISTORY
WHERE ORDERED_ITEMS.ITM_NUMBER=PRICE_HISTORY.ITM_NUMBER)
FROM PRICE_HISTORY
WHERE ORDERED_ITEMS.ITM_NUMBER=PRICE_HISTORY.ITM_NUMBER)
GROUP BY ODR_ID
12. Вывести НОМЕР ЗАКАЗА И СУММУ ЗАКАЗА. Упорядочить вывод
информации по номеру заказа.
FROM PRICE_HISTORY
WHERE ORDERED_ITEMS.ITM_NUMBER=PRICE_HISTORY.ITM_NUMBER)
GROUP BY ODR_ID
ORDER BY ODR_ID
Oracle RIGHT OUTER JOIN возвратит все записи из table2 и только те записи
из table1, которые пересекаются с table2.
1. Добавить в таблицу Teams новую команду