Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000195.doc
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
799.74 Кб
Скачать

4.3. Оператор выбора Select

Язык запросов в SQL состоит из единственного оператора SELECT.

Синтаксис оператора SELECT имеет следующий вид:

SELECT [ ALL| DISTINCT] <Список полей>|*

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

[WHERE <Предикат-условие выборки или соединения>]

[GROUP BY <Список полей результата>]

[HAVING <Предикат-условие для группы>]

[ORDER BY <Список полей, по которым

упорядочить вывод>];

SELECT – ключевое слово, которое сообщает СУБД, что эта команда – запрос. Все запросы начинаются с этого слова с последующим пробелом. За ним может следовать способ выборки.

Здесь ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Значит, в результирующий набор могут попасть одинаковые строки. Это нарушение принципов теории отношений (в отличие от реляционной алгебры, где по умолчанию предполагается отсутствие дубликатов в каждом результирующем отношении). Ключевое слово ALL действует по умолчанию, значит, его можно не писать. Таким образом, если ALL отсутствует, то выбираются все строки, удовлетворяющие условиям отбора.

Ключевое слово DISTINCT означает, что в результирующий набор включаются только различные строки, то есть дубликаты строк результата не включаются в набор.

Список полей – это список перечисленных через запятую столбцов, которые выбираются запросом из таблиц.

Символ * (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса. Часто требуется перед символом «*» указывать имя таблицы и символ «.», а затем символ «*».

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

Разделы SELECT и FROM являются обязательными, все другие разделы являются необязательными.

Примеры.

Следующий оператор означает выбор всех полей из таблицы Студенты.

SELECT Студенты.* FROM Студенты ;

Следующий оператор означает выбор двух полей из таблицы Студенты.

SELECT Номер_зачетки, Фамилия FROM Студенты ;

Следующий оператор выбирает поле Шифр_группы из таблицы Студенты, при этом повторяющиеся шифры групп удаляются. Таким образом, запрос выдает список разных шифров групп из таблицы Студенты

SELECT distinct Шифр_группы

From Студенты

4.4. Выбор полей из двух таблиц

Следующий оператор означает выбор всех полей из таблицы Студенты и таблицы Экзамены, ключевое слово WHERE задает условие соединения двух таблиц. Выбираются те записи из двух таблиц, у которых совпадают значения в поле Номер зачетки.

SELECT Студенты.*, Экзамены.*

FROM Студенты, Экзамены

WHERE Студенты.Номер_зачетки = Экзамены.Номер_зачетки

Часто в разделе FROM указывают второе (алиасное) более короткое имя таблицы и его используют перед именем поля или символом «*». Например:

SELECT С.*, Э.*

FROM Студенты С, Экзамены Э

WHERE С.Номер_зачетки = Э.Номер_зачетки

Следующий оператор означает выбор всех полей из таблицы Студенты и двух полей из таблицы Экзамены. Для таблицы Студенты выбрано второе имя С, для таблицы Экзамены выбрано второе имя Э. В данном запросе обязательно указывают условие соединения двух таблиц (в данном случае условием соединения является равенство номеров зачеток).

SELECT C.*, Э.Дисциплина, Э.Оценка

FROM Студенты С, Экзамены Э

WHERE С.Номер_зачетки = Э.Номер_зачетки