Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные лаботы ОИС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.38 Mб
Скачать

2 Выполнение работы

2.1 Оператор select

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

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

Команда SELECT состоит из семи основных частей: списка выборки и разделов FROM, WHERE, GROUP BY, HAVING, ORDER BY – обязательным является лишь список выборки, при использовании же остальных частей необходимо их использовать в том порядке, в котором они приведены выше.

2.1.1 Простая выборка данных

Для простой выборки данных используется сокращенный синтаксис оператора SELECT:

SELECT [ALL | DISTINCT] [TOP n [PERCENT] СписокВыборки

FROM ИмяТаблицы

WHERE УсловиеОтбора

СписокВыборки определяет поля, включаемые в итоговый набор данных, ИмяТаблицы указывает таблицу БД, из которой возвращаются записи, а УсловиеОтбора позволяется ограничить число возвращаемых записей с помощью логических операторов.

По умолчанию команда SELECT возвращает все записи, включая дубликаты, что определяется ключевым словом ALL, которое может быть опущено. Зачастую также ALL заменяется на *: Так, выполнение команды

SELECT *

FROM TimeTable

осуществляет выборку всех записей из объекта БД табличного типа с именем TimeTable. При этом столбцы и строки результирующего набора не упорядочены. Значок * может быть заменен словом ALL. В качестве примера приведем выполнение оператора над таблицей TimeTable:

Код занятий

Предмет

Преподаватель

Группа

Время

SC001

Теоретическая механика

Ландау Лев

1121

25.01.2013 08:30

SC002

Астрономия

Хокинг Стив

1123

16.12.2001 10:00

SC003

Электростатика

Кулон Шарль-Огюстен

1121

01.12.2011 17:00

SC004

Небесная механика

Хокинг Стив

1322

08.10.2013 12:00

SC005

Электростатика

Рентген Вильгельм-Конрад

1122

13.12.2013 15:00

SC006

Теоретическая механика

Ландау Лев

1322

01.12.2011 10:20

SC007

Электростатика

Рентген Вильгельм-Конрад

1121

01.12.2011 17:00

Для получения набора уникальных неповторяющихся записей необходимо указывать ключевое слово DISTINCT:

SELECT DISTINCT Предмет, Преподаватель, Группа

FROM TimeTable

ORDER BY Преподаватель DESC

Предмет

Преподаватель

Группа

Электростатика

Кулон Шарль-Огюстен

1121

Теоретическая механика

Ландау Лев

1121

Теоретическая механика

Ландау Лев

1322

Электростатика

Рентген Вильгельм-Конрад

1121

Астрономия

Хокинг Стив

1123

Небесная механика

Хокинг Стив

1322

Использование ключевого слова TOP предписывает выводить не все записи итогового набора, а только n первых. Можно выбирать не фиксированное количество записей, а определенный процент от всех строк – для этого указывается ключевое слово PERCENT.

Список выборки

Список выборки может содержать включать следующие один или несколько элементов:

* | ИмяПоля | Выражение [AS Псевдоним], [...n].

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

Ключевое слово AS позволяет заменить в итоговом наборе данных обычные имена полей псевдонимами (alias). Имя псевдонима должно удовлетворять стандартным правилам именования объектов. При необходимости включить недопустимые символы, пробелы или национальные алфавиты, имя псевдонима заключается в квадратные скобки.

Например, для получения списка лекторов и читаемых ими курсов для студенческих групп из таблицы TimeTable необходимо выбрать поля Предмет, Преподаватель, Группа:

SELECT Предмет AS Курс, Преподаватель AS Лектор, Группа AS [Номер группы]

FROM TimeTable

Курс

Лектор

Номер группы

Теоретическая механика

Ландау Лев

1121

Астрономия

Хокинг Стив

1123

Электростатика

Кулон Шарль-Огюстен

1121

Небесная механика

Хокинг Стив

1322

Электростатика

Рентген Вильгельм-Конрад

1121

Теоретическая механика

Ландау Лев

1322

Электростатика

Рентген Вильгельм-Конрад

1121

При этом БД, из которой ведется выборка данных должна быть текущей.

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

Например, список сотрудников с указанием фамилии и первого символа имени и идентификационного номера может быть получен в результате запроса:

Select LastName+’ ‘+Substring(FirstName,1,1)+’.’ AS [Сотрудник], PhoneNumber

From Сотудники

Удобочитаемость получаемого набора данных может быть повышена путем его сортировки в возрастающем или убывающем порядке. Сортировка возможна по имени поля (даже если оно и не указано в списке выборки), по псевдониму или по позиции в списке выборки, которые указываются в разделе ORDER BY ИмяПоля [,…n] [ASC | DESC].

По умолчанию сортировка осуществляется по возрастанию, что соответствует зарезервированному слову ASC, которое может опускаться, для сортировки в убывающем порядке указывается – DESC.

Для отображения, рассмотренного ранее, списка сотрудников упорядоченного в алфавитном порядке необходимо дополнить запрос:

Select LastName+’ ‘+Substring(FirstName,1,1)+’.’ AS [Сотрудник], PhoneNumber

From Преподаватель

ORDER BY [Сотудник]