Выборка данных с использование предложения SELECT




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

Предложение SELECT может использоваться как:

1. Самостоятельная команда на получение и вывод кортежей отношения, сформированного из столбцов и кортежей одного или нескольких отношений.

2. В качестве вложенного подзапроса.

3. Фраза выбора в командах определения схемы данных и модификации отношений.

4. Средство присвоения глобальным переменным значений кортежей сформированного отношения (Into-фраза).

 

Простейшие SELECT-запросы

 

Упрощенный синтаксис оператора Select выглядит следующим образом:

Select [distinct] <список атрибутов >

From <список таблиц>

[Where <условие выборки>]

[Order by <список атрибутов>]

[Group by <список атрибутов>]

[Having <условие>]

[Union <выражение с операндом Select>];

 

В квадратных скобках указаны элементы, которые могут отсутствовать в запросе. Ключевое слово Select сообщает БД, что данное предложение является запросом на извлечение информации. После Select через запятую перечисляются наименования полей, содержимое которых запрашивается. Обязательным ключевым словом в предложении-запросе SELECT является слово From. За ним указывается список разделенных запятыми имен таблиц, из которых извлекается информация. Например:

Select name, surname

From student;

Select * -выводит все атрибуты.

Получаемые в результате выполнения SQL-запроса таблицы не в полной мере отвечают определению реляционного отношения. Т.е. в них могут оказаться кортежи с одинаковым значением атрибутов. Например: получить список названий городов, где проживают студенты, сведения о которых находятся в таблице student.

Select city

From student;

Для исключения из результата SELECT-запроса повторяющихся записей используется ключевое слово distinct. Если запрос SELECT извлекает множество полей, то distinct исключает дубликаты строк, в которых значения всех выбранных строк идентичны.

Select distinct city

From student;

Ключевое слово all в отличие от distinct оказывает противоположное действие, т.е. при его использовании повторяющиеся строки включаются в состав выходных данных.

Использование в операторe Select предложения определяемого ключевым слово Where позволяет задавать выражение условия (предикат) принимающее значение Истина или Ложь для значений полей строк таблиц к которым обращается оператор Select. Предложение Where определяет, какие строки должны быть выбраны. В таблицу являющуюся результатом запроса включаются только те строки, в которых предикат, указанный в предложении-Where принимает значение Истина.

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

 

Select name, surname

From student

Where surname = 'Петров';

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

Select name, surname

From student

Where kurs = 3 and stipend>0;

Операторы 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;

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: