Хотите получать новые статьи блога
прямо себе на почту?
Укажите свой e-mail:


WorldSkills Russia
Яндекс.Метрика Интернет-издание Профобразование

Выборка данных. Простейшие SELECT-запросы

0

Выборка данных. Простейшие SELECT-запросы Скачать материал лекции в формате PDF

Оператор SELECT (выбрать) языка SQL является самым важным и самым часто используемым оператором. Он предназначен для выборки информации из таблиц базы данных. Упрощенный синтаксис оператора SELECT выглядит следующим образом:

1
2
3
4
5
6
7
SELECT [DISTINCT] <список атрибутов>
FROM <список таблиц>
[WHERE <условие выборки>]
[ORDER BY <список атрибутов >]
[GROUP BY <список атрибутов >]
[HAVING <условие>]
[UNION <выражение с оператором SELECT>];

В квадратных скобках указаны элементы, которые могут отсутствовать в запросе.

Ключевое слово SELECT сообщает базе данных, что данное предложение является запросом на извлечение информации. После слова SELECT через запятую перечисляются наименование полей (список атрибутов), содержимое которых запрашивается.

Обязательным ключевым словом в предложении-запросе SELECT является FROM (из). За ключевым словом FROM указывается список разделенных запятыми имен таблиц, из которых извлекается информация.

Например:

1
SELECT NAME, SURNAME FROM STUDENT;

Любой SELECT-запрос должен заканчиваться символом «;» (точка с запятой).

Приведенный запрос осуществляет выборку всех значений полей NAME и SURNAME из таблицы STUDENT.

Его результатом является таблица следующего вида:

NAME SURNAME
Иван Иванов
Петр Петров
Вадим Сидоров
Борис Кузнецов
Ольга Зайцева
Андрей Павлов
Павел Котов
Артем Лукин
Антон Петров
Вадим Белкин

Порядок следования столбцов в этой таблице соответствует порядку полей NAME и SURNAME, указанному в запросе, а не их порядку во входной таблице STUDENT.

Если необходимо вывести значения всех, столбцов таблицы, то можно вместо перечисления их имен использовать символ «*» (звездочка).

1
SELECT * FROM STUDENT;

В данном случае результатом выполнения запроса будет вся таблица STUDENT.

Еще раз обратим внимание на то, что получаемые в результате SQL-запроса таблицы не в полной мере отвечают определению реляционного отношения. В частности, в них могут оказаться кортежи (строки) с одинаковыми значениями атрибутов.

Например, запрос «Получить список названий городов, где проживают студенты, сведения о которых находятся в таблице STUDENT», можно записать в следующем виде.

1
SELECT CITY FROM STUDENT;

Его результатом будет таблица:

CITY
Орел
Курск
Москва
Брянск
Липецк
Воронеж
Белгород
Воронеж
NULL
Воронеж

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

Предыдущий запрос можно записать в следующем виде.

1
SELECT DISTINCT CITY FROM STUDENT;

В результате получим таблицу, в которую дубликаты строк исключены.

CITY
Орел
Курск
Москва
Брянск
Липецк
Воронеж
Белгород
NULL

Ключевое слово ALL (все), в отличие от DISTINCT, оказывает противоположное действие, то есть при использовании повторяющиеся строки включаются в состав выходных данных. Режим, задаваемый ключевым словом ALL, действует по умолчанию, поэтому в реальных запросах для этих целей оно практически не используется.

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

Пример:

Написать запрос, выполняющий выборку имени (NAME) всех студентов с фамилией (SURNAME) Петров, сведения о которых находятся в таблице STUDENT.

1
2
3
SELECT SURNAME, NAME
FROM STUDENT
WHERE SURNAME = ‘Петров’;

Результатом этого запроса будет таблица:

SURNAME NAME
Петров Петр
Петров Антон

В задаваемых в предложении WHERE условиях могут использоваться операции сравнения, определяемые операторами = (равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), <> (не равно), а также логические операторы AND, OR и NOT.

Например, запрос на получение имен и фамилий студентов, обучающихся на третьем курсе и получающих стипендию (размер стипендии больше нуля), будет выглядеть следующим образом.

1
2
3
SELECT NAME, SURNAME
FROM STUDENT
WHERE KURS = 3 AND STIPEND > 0;

Результат выполнения этого запроса имеет вид:

NAME SURNAME
Петр Петров
Артем Лукин

В приводимых в УМК примерах построения SQL-запросов и контрольных упражнениях используется учебная база данных. Посмотреть её структуру можно ЗДЕСЬ.

Возникли вопросы?
Тогда смело пишите комментарий — рада буду ответить!
Агрегирование и групповые функции