Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Элементы языка SQL.docx
Скачиваний:
6
Добавлен:
22.11.2019
Размер:
40.95 Кб
Скачать

Операторы in, between, like, is null

При задании логического условия в предложении where могут быть использованы операторы IN, BETWEEN, LIKE, IS NULL. Операторы in (равен любому из списка) и not in (не равен ни одному из списка) используются для сравнения проверяемого значения поля с заданным списком. Этот список значений указывается в скобках справа от оператора in. Построенный с использованием in предикат считается истинным, если значение поля, имя которого указано слева от in, совпадает с одним из значений, перечисленных в списке.

Предикат, построенный с использованием not in считается истинным, если значение поля не совпадает ни с одним из значений, перечисленных в списке.

Пример: получить из таблицы exam_marks сведения о студентах, имеющих оценки 9 и 10.

Select name, surname

From exam_marks

Where mark in (9,10)

Получить сведения о студентах, не имеющих ни одной оценки, равной 9 или 10:

Select name, surname

From exam_marks

Where mark not in (9,10)

Оператор Between

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

Пример: вывести информацию о предметах, на изучение которых отводится количество часов находящееся в пределах между 20 и 40.

Select *

From subject

Where hour between 30 and 40;

Оператор Like

Оператор Like применим только к символьным полям. Этот оператор просматривает строковые значения полей с целью определения входит ли заданная в операторе like строка в символьную строку проверяемого поля. Для выборки строковых значений по заданному образцу подстроки можно применять шаблон искомого образца строки, использующий следующие символы:

  1. _ - определяет возможность наличия в указанном месте одного любого символа.

  2. % - допускает присутствие в указанном месте проверяемой строки последовательности любых символов произвольной длинны.

Пример: написать запрос выбирающий информацию о студентах фамилии, которых начинаются с буквы Р.

Select *

From student

Where surname like ‘Р%’;

В случае необходимости включение в образец самих символов _ и % применяют т.н. escape символы. Например, можно задать образец поиска с помощью следующего выражения: like ‘_\_P’ escape’_\’. В этом выражении символ backslash с помощью ключевого слова escape объявляется escape-символом. Первый символ _ будет соответствовать, как и ранее любому символу проверяемой строки, однако второй символ _, следующий после символа backslash объявленного escape-символом уже будет интерпретироваться буквально как обычный символ. Замечание: рассмотренные выше операторы сравнения и операторы in, between, like нельзя использовать для проверки содержимого поля на пустое значение.

Select *

From student

Where surname is null;

Преобразование вывода и встроенные функции

В SQL реализованы операторы преобразования данных и встроенные функции, предназначенные для работы со значениями столбцов и\или константами выражений. Использование этих операторов допустимо в запросах везде, где допустимы выражения.

Числовые и символьные константы

Несмотря на то, что SQL работает с данными понятий строк и столбцов таблиц имеется возможность применения значений и выражений построенных с использованием встроенных функций, констант, имен столбцов определяемых как своего рода виртуальные столбцы. Они помещаются в списке столбцов и могут сопровождаться псевдонимами. Если в запросе вместо спецификации столбца SQL обнаруживает число, то оно интерпретируется как числовая константа. Символьные константы должны указываться в одинарных кавычках.

Пример:

Select ‘Фамилия’, surname, ‘Имя’, name, 100

From student;

Арифметические операции для преобразования числовых данных

Можно использовать следующие арифметические операции: унарный минус, плюс, минус, умножить, разделить.

Например:

Select surname, name, -(stipend*kurs)/2 as result

From student

Where kurs = 4 and stipend >0;

Операция конкатенации строк

Операция конкатенации || позволяет соединять значения двух или более столбцов символьного типа или символьных констант в одну строку. Пример:

Select surname || ‘_’|| name

From student;

Агрегирование и групповые функции

Агрегирующие функции позволяют получать из таблицы сводную информацию, выполняя операции над группой строк таблицы. Для задания в SELECT-запросе агрегирующих операций используют следующие ключевые слова:

  1. Count – определяет количество строк или значений поля выбранных посредством запроса и не являющихся null-значениями.

  2. Sum – вычисляет арифметическую сумму всех выбранных значений поля.

  3. Avg – вычисляет среднее значение для всех выбранных значений поля.

  4. Min – вычисляет наименьшее из всех выбранных значений поле.

  5. Max – вычисляет наибольшее их всех выбранных значений поле.

В SELECT-запросе агрегирующие функции используются аналогично именам полей, при этом имена полей используются в качестве аргументов этих функций.

Пример: 1)определить среднее значение поля mark по всем записям таблицы exam_mark:

Select avg(mark)

From exam_mark;

2)Посчитать количество строк в таблице:

Select count(*)

From exam_mark;

Аргументы distinct и all позволяют соответственно исключать и включать дубликаты обрабатываемых функцией count значений.

Предложение Group by позволяет группировать записи в подмножества определяемые значениями какого-либо поля применять агрегирующие функции уже не ко всем записям таблицы, а раздельно к каждой сформированной группе.

Пример: найти максимальное значение оценки полученной в результате экзаменов каждым студентом.

Select student_id, max(mark)

From exam_mark

Group by student_id;

В конструкции Group by для группирования может быть использовано более одного столбца.

Select student_id, max(mark), subject_id

From exam_mark

Group by student_id, subject_id;

Таким образом, предложение Group be не только устанавливает столбцы, по которым осуществляется группирование, но и указывает порядок разбиения столбцов на группы.

При необходимости часть сформированных с помощью Group by групп может быть исключена с помощью предложение Having. Предложение Having определяет критерий по которому в группы следует включать выходные данные по аналогии с предложением Where? Которое осуществляет это для отдельных строк.

Пример:

Select subj_name, max(hour)

From subject

Group by subject_name

Having max(hour)>=72;

Замечание: в условии, задаваемом предложением Having, указывают только поля или выражения, которые на выходе имеют единственное значение для каждой выводимой группы.

Упорядочение выходных полей

Записи в реляционной БД не упорядочены. Однако в результате выполнения запроса данные можно упорядочить. Для этого используется оператор Order by, который позволяет упорядочивать выводимые записи в соответствии со значениями одного или нескольких выбранных столбцов. При этом можно задать возрастающую (asc) или убывающую (desc) последовательность сортировки.

Пример: 1)выбрать все данные из таблицы, упорядочив их по названию предмета.

Select *;

From subject

Order by subj_name;