Оператор выборки в Transact-SQL. Использование представлений (Лабораторная работа № 3)

Страницы работы

Содержание работы

Лабораторная работа №3

Оператор выборки в Transact-SQL. Использование представлений

1. Цель работы

1.  Изучить виды и способы выполнения запросов к реляционным базам данных на примере SQL-оператора select.

2.  Изучить SQL-операторы работы с представлениями.

2. Основные сведения из теории

Из курса лекций по дисциплине «Безопасность систем баз данных» известно, что поиск информации в реляционных базах данных основан на использовании операций реляционной алгебры. Для записи этих операций средствами 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 – операция сравнения.

Похожие материалы

Информация о работе