Элемент ORDER BYопределяет упорядочивание (сортировку) записей, по указанным полям. Можно указывать только поля, фигурирующие в списке отобранных (после слова SELECT), в том числе и вычисляемые. Для сортировки по убыванию значений поля нужно после имени поля указать ключевое слово DESC.
Lt;список имен полей> -имена тех полей таблицы, значения которых будут возвращены. Список должен включать хотя бы одно поле. Если в результирующий набор включаются все поля таблицы, то можно указать символ ‘*’.
Оператор выбора Select.
EXTRACT(<Элемент> FROM <Выражение>) – из выражения, содержащего значение даты и времени, извлекается значение, соответствующее указанному элементу: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND.
Функции языка SQL.
Статистические:
AVG() –среднее значение,
MAX() – максимальное значение,
MIN() – минимальное значение,
SUM() – сумма,
COUNT() – количество значений,
COUNT(*) – количество ненулевых значений.
Функции работы со строками:
UPPER(Str) – преобразование символом строки Str к верхнему регистру,
LOWER(Str) - преобразование символом строки Str к нижнему регистру,
TRIM(Str) –удаление пробелов в начале и конце строки Str,
SUBSTRING(Str From n1 TO n2) –выделение из строки Str подстроки начиная с позиции n1 и заканчивая позицией n2.
CAST(<Expression> AS <Type>)- приведение выражения Expression к типу Type.
Функции декодирования даты и времени:
Оператор выбора Select – возвращает одно или множество значений указанных полей записей, удовлетворяющих указанному условию и упорядоченных по заданному критерию. Формат оператора:
SELECT <список имен полей>
FROM <таблица> [WHERE <условие отбора> ] [ORDER BY <список имен полей>];
где
<таблица> -та таблица базы данных, из которой осуществляется отбор, например, Tovar;
<условие отбора> - отбираются только те записи, в которых условие выполняется;
Например,
1) SELECT S_Fam, S_Birthday FROM Sotrudniki
Результирующий набор данных включает поля S_Fam и S_Birthday из таблицы Sotrudniki.
2) SELECT * FROM Sotrudniki
Будут выбраны все поля таблицы Sotrudniki
Для каждого имени поля можно указать псевдоним в виде
AS <псевдоним>
где
<псевдоним> - любой идентификатор, на который можно при необходимости сослаться.
Например,
1) SELECT S_fio AS Fam FROM Sotrudniki
2) SELECT S_fio AS Фамилия, S_birthday AS Дата_рождения
FROM Sotrudniki
В списке полей можно использовать не только сами поля, но и любые выражения с использованием арифметических операций +, -, *, /.
Например,
SELECT S_fio, 2005-EXTRACT (YEAR FROM S_Birthday)
AS Age FROM Sotrudniki
p
В выражениях для полей можно использовать строковые константы и операцию «||», которая означает сцепление строк.
Например,
SELECT 'Фамилия: ' || S_fio,
'год рожд.:' || CAST(EXTRACT (YEAR FROM
S_Birthday) AS CHAR(4)) FROM Sotrudniki
p
Условие отбора после WHERE отбирает только те записи, для которых заданное условие истинно. Условие может включать имена полей (кроме вычисляемых), константы, логические выражения, содержащие арифметические операции, логические операции и операции отношения:
=
равно
>
больше
>=
больше или равно
<
меньше
<=
меньше или равно
!= или <>
или не равно
Like
наличие заданной последовательности символов
between … and
диапазон значений
in
соответствие элементу множества
Например,
SELECT * FROM Tovar WHERE Kol_vo<15 and Cena>4
p
Операция Like:
<поле> LIKE ‘<последовательность символов>’
- применяется к полям типа строка и возвращает True, если в строке встретился фрагмент, заданный в операции как <последовательность символов>.В начале последовательности и в ее конце может присутствовать символ % (любое количество любых символов).
Например,
SELECT * FROM Tovar WHERE Tovar Like 'Л%'
Операция between … and:
<поле> between <значение> and <значение>
- задает для указанного поля диапазон отбираемых значений.
Например,
SELECT * FROM Tovar WHERE Cena BETWEEN 20 and 50
Операция In:
<поле> in (<множество>)
- отбирает записи, в которых значение указанного поля является одним из элементов указанного множества.
Например,
1) SELECT * FROM Sotrudniki
WHERE S_fio IN ('Иванов И.И.','Инин И.И.')
2) SELECT * FROM Sotrudniki
WHERE Extract(YEAR FROM S_Birthday) IN (1976,1980)
Например,
1) SELECT Tovar, Kol_vo, Cena
FROM Tovar ORDER BY Tovar, Cena DESC
2) SELECT Tovar, Kol_vo, Cena, Kol_vo*Cena AS Стоимость
FROM Tovar ORDER BY Стоимость
p
После ключевого слова SELECT в оператор могут вставляться ключевые слова:
DISTINCT– в результирующий набор данных не включаются повторяющиеся записи, в которых совпадают значения полей указанных в списке оператора,
илиALL –означает включение всех записей.
Например,
SELECT DISTINCT Tovar FROM Tovar
- будет выдан список различных товаров, которые имеются в таблице.
Пример. Сортировка по вычисляемому полю. (Распечатка).
При формировании запроса можно использовать различные арифметические и логические операции для построения сложных запросов.
!! В SQL приоритет операций сравнения выше приоритета логических операций.
Оператор SELECT позволяет возвращать не только множество значений поля, но и некоторые совокупные характеристики. Эти характеристики подсчитываются по всем или нескольким указанным записям.
Например.
1) SELECT count(*) FROM Tovar
- подсчет общего количества всех записей в таблице Tovar.
2) SELECT count(*) FROM Tovar WHERE T_Cena>100
- подсчет количества товаров, цена которых больше 100.
3) SELECT min(extract(year FROM S_birthday)),
max(extract(year FROM S_birthday)),
avg(extract(year FROM S_birthday))
FROM Sotrudniki
- подсчет минимального, максимального и среднего года рождения
4) SELECT min(Kol_vo*Cena), max(Kol_vo*Cena)
FROM Tovar
- совокупные характеристики.
После слова SELECT могут записываться или поля (в том числе и вычисляемые), или совокупные характеристики. Для одновременного использования полей и совокупных характеристик нужно использовать группировку записей.
Группировка записей задается ключевым словом
GROUP BY <список имен полей>
где <список имен полей> - перечисляются все поля, входящие в список SELECT.
В случае группировки записей совокупные характеристики проводят вычисления не по всем записям таблицы, а по тем, которые соответствуют одинаковым значениям указанных полей.
Например,
SELECT Prim, count(*) Всего_товаров
FROM Tovar GROUP BY Prim
- будут выведены два столбца с примечанием и количеством записей для каждого значения примечания.
Примеры.
1. Написать запрос, который получает список студентов, обучающихся на 2-м курсе и выше.
2. Получить сведения о студентах, имеющих оценки только 4 и 5.
3. Получить сведения о студентах, не имеющих ни одной оценки 4 или 5.