Видно, что в таблице встречаются одинаковые строки (выделены жирным шрифтом).
Для исключения из результата SELECT-запроса повторяющихся записей используется ключевое слово DISTINCT (отличный). Если запрос select извлекает множество полей, то DISTINCT исключаетдубликаты строк, в которых значения всехвыбранных полей одинаковы.
Предыдущий запрос можно записать в следующем виде.
SELECT DISTINCTCITY
FROMSTUDENT;
В результате получим таблицу, в которой дубликаты строк исключены
Ключевое слово WHERE(где), позволяет задавать выражение условия (предикат), принимающее значение истинаили ложьдля значений полей строк таблиц, к которым обращается оператор SELECT.Предложение WHEREопределяет, какие строки указанных таблиц должны быть выбраны. В таблицу, являющуюся результатом запроса, включаются только те строки, для которых условие (предикат), указанное в предложении where,принимает значение истина
Написать запрос, выполняющий выборку имен (name) всех студентов с фамилией (surname) Петров, сведения о которых находятся в таблице student.
SELECT SURNAME, NAME
FROM STUDENT
wheresurname = 'Петров';
В задаваемых в предложении whereусловиях могут использоваться операции сравнения, определяемые операторами = (равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), <> (не равно), а также логические операторы AND, ORИ NOT.
Например, запрос для получения имени фамилийстудентов, обучающихся на третьемкурсе и получающих стипендию (размер стипендии больше нуля), будет выглядеть таким образом:
При задании логического условия в предложении where могут быть использованы операторы in, between, like, is null.
Операторы in (равен любому из списка) и not in (не paвен ни одному из списка) используются для сравнения проверяемого значения поля с заданным списком. Этот список значений указывается в скобках справа от оператора IN.
Построенный с использованием in предикат (условие) считается истинным, если значение поля, имя которого указано слева от IN, совпадает(подразумевается точное совпадение) с одним из значений, перечисленных в списке, указанном в скобках справа от IN.
Предикат, построенный с использованием not in, считается истинным, если значение поля, имя которого указано слева от not IN, не совпадаетни с одним из значений, перечисленных в списке, указанном в скобках справа от NOT IN.
I Примеры
Получить из таблицы exam_marks сведения о студентах, имеющихэкзаменационные оценки только 4 и 5.
SELECT *
FROMEXAM_MARKS
WHEREMARK IN (4, 5);
Получить сведения о студентах, не имеющихни одной экзаменационной оценки, равной 4 и 5.
SELECT *
FROMEXAM_MARKS
WHEREMARK NOTIN (4, 5 );
Оператор BETWEENиспользуется для проверки условия вхождения значения поля в заданный интервал, то есть вместо списка значений атрибута этот оператор задает границы его изменения.
Например, запрос на вывод записей о предметах, на изучение которых отводится количество часов, находящееся в пределах между 30 и 40, имеет вид:
select * fromsubject
wherehour between 30 and 40;
Граничные значения, в данном случае значения 30 и 40, входят во множество значений, с которыми производится сравнение. Оператор betweenможет использоваться как для числовых, так и для символьных типов полей.
Оператор likeприменим только к символьным полям типа CHAR или VARCHAR.
Этот оператор просматривает строковые значения полей с целью определения, входит ли заданная в операторе Like подстрока (образец поиска) в символьную строку-значение проверяемого поля.
Пример.
Написать запрос, выбирающий из таблицы STUDENT сведения о студентах, фамилии которых начинаются на букву «П».
SELECT * FROM STUDENT
WHERE SURNAME LIKE ‘П’;
Агрегирование и групповые функции
Агрегирующие функции позволяют получать из таблицы сводную (агрегированную) информацию, выполняя операции над группой строк таблицы. Для задания в SELECT-запросе агрегирующих операций используются следующие ключевые слова:
• count определяет количество строк или значений поля, выбранных посредством запроса и не являющихся NULL-значениями;
•sum вычисляет арифметическую сумму всех выбранных значений данного поля;
• AVG вычисляет среднее значение для всех выбранных значений данного поля;
• МАХ вычисляет наибольшее из всех выбранных значений
данного поля;
•MIN вычисляет наименьшее из всех выбранных значений
данного поля
Функция avgпредназначена для подсчета среднего значения поля на множестве записей таблицы.