Лабораторная работа №3
Оператор выборки в Transact-SQL. Использование представлений
1. Изучить виды и способы выполнения запросов к реляционным базам данных на примере SQL-оператора select.
2. Изучить SQL-операторы работы с представлениями.
Из курса лекций по дисциплине «Безопасность систем баз данных» известно, что поиск информации в реляционных базах данных основан на использовании операций реляционной алгебры. Для записи этих операций средствами SQL используется оператор select, изучению которого и посвящена данная лабораторная работа. В теоретической части работы будет рассмотрен синтаксис данного оператора, а также конкретные способы его записи для выполнения тех или иных реляционных операций над таблицами.
2.1. Описание команды select
В общем виде синтаксис оператора select в языке Transact-SQL выглядит следующим образом:
select список_выражений
[into таблица]
[from откуда]
[where условие_поиска]
[groupby выражение]
[having условие_поиска]
[order by выражение [asc | desc]]
Рассмотрим каждое предложение данного оператора более подробно.
2.1.1. Предложение select
Конструкция, начинающаяся со слова select и заканчивающаяся перед словом into, в общем виде представляется так:
select [distinct]
[top n [percent]] список_выражений
где:
· ключевое слово distinct указывает на то, что из результирующего набора данных должны быть исключены строки-дубликаты; если слово distinct опущено в вызове, то из результирующего набора не удаляется ничего;
· [top n [percent]] – указывает, что только n строк из результирующего набора должны быть отображены; если за top n следует слово percent, то отображаются n процентов строк (в этом случае n должно находиться в пределах от 0 до 100).
Список выражений представляет собой перечисленные через запятую столбцы таблиц, а также, если требуется, формулы, константы и т. д.
1. Символ ‘*’ указывает, что должны быть возвращены все столбцы всех таблиц, указанные в секции from.
2. В список выражений могут входить имена столбцов таблиц, указанных в секции from. Например:
-- Столбец st_name таблицы stations
select st_name
from stations
Часто требуется указывать не только столбец, но и таблицу, в которой он определен. Пусть, например, имеются таблицы trains (поезда) и coaches (вагоны). У обеих из них существует столбец id_train (идентификатор поезда). В следующем вызове оператора:
select id_train
from trains, coaches
where coaches.id_train = trains.id_train
участвуют обе таблицы, trains и coaches, однако непонятно, какой же именно столбец id_train в итоге нужно показать: из первой или из второй таблицы. Чтобы не возникало такой неопределенности, данный оператор необходимо записать корректно, а именно:
select trains.id_train
from trains, coaches
where coaches.id_train = trains.id_train
или так:
select coaches.id_train
from trains, coaches
where coaches.id_train = trains.id_train
В первом случае будет отображаться столбец id_train таблицы trains, во втором – coaches. Таким образом, полное имя столбца таблицы соответствует шаблону имя_таблицы.имя_столбца.
3. Столбцы результирующего набора данных по умолчанию имеют те же имена, что и столбцы исходных таблиц. В SQL имеется возможность переименовывать столбцы в результирующем наборе, для чего используется конструкция имя_столбца as псевдоним. В следующем примере:
select st_name as station_name
from stations
столбцу результирующего набора присваивается имя station_name, а создается он на базе столбца st_name таблицы stations.
2.1.2. Предложение into
Оператор selectinto рассматривался в лабораторной работе № 2. Он создает новую таблицу на основе набора строк, полученного по запросу. Например:
select train_number, train_name
into firm_trains
from trains
where train_type = ‘фирменный’
Результатом этого запроса является новая таблица firm_trains, которая содержит номера и названия всех фирменных поездов. На то, что поезда именно фирменные, указывает условие в секции where: train_type = ‘фирменный’.
2.1.3. Предложение from
В секции from перечисляются таблицы, участвующие в выборке. Эта секция присутствует практически в любом вызове оператора select, и все примеры, приведенные ранее, иллюстрируют это. Заметим, что запрос может быть адресован к одной или нескольким таблицам. Например, в следующем запросе:
select id_train
from trains, coaches
where coaches.id_train = trains.id_train
производится обращение к двум таблицам: trains и coaches. В одном вызове оператора select можно обратиться даже к таблицам разных БД. В этом случае запрос является распределенным.
2.1.4. Предложение where
Предложение where задает простое или сложное логическое условие выборки. Сложные условия образуются из простых условий, объединенных логическими союзами and или or. Также допускается применять с любыми условиями отрицание not.
Простое условие представляет собой выражение, построенное по одной из следующих схем.
1. A op B, где A и B – выражения, а op – операция сравнения.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.