Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаборатор access.doc
Скачиваний:
36
Добавлен:
02.02.2015
Размер:
32.54 Mб
Скачать

3. Результаты работы

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

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

СОЗДАНИЕ ЗАПРОСОВ НА ЯЗЫКЕ SQL

Тема: создание запросов на языке SQL

Цель: научиться создавать запросы на языке SQL

Первая версия стандарта языка SQL была принята Американским национальным институтом стандартов (ANSI) и Международной ассоциацией стандартов (ISO) в октябре 1986 года и называлась SQL-86. В 1989 году появилась усовершенствованная версия - SQL-89. Существующий сейчас стандарт - SQL-92 (SQL-2) является версией с расширенными возможностями и поддерживается большинством разработчиков СУБД в своих приложениях.

Access также поддерживает язык SQL стандарта 1992 года (SQL-92) с небольшими дополнениями. Компания Microsoft добавила к стандартной версии языка некоторые предложения, позволяющие более полно использовать возможности СУБД Access. Так, были добавлены предложения TRANSFORM, IN, DISTINCTROW и опция WITH OWNER ACCESS OPTION, которые будут рассмотрены позднее.

Не все типы запросов можно сгенерировать при помощи QBE или мастера запросов. Эти режимы позволяют генерировать только основные их виды, а при необходимости создания более сложных запросов приходится использовать возможности языка SQL.

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

В целях унификации процедуры сохранения запросов даже те из них, которые были сгенерированы при помощи QBE хранятся в SQL-формате, а при их вызове обратно преобразуются к форме QBE.

Язык SQL представляет пользователю широкие возможности по обработке данных БД, часть из которых будет рассмотрена в данной лабораторной работе.

2. Пример решения

2.1. Создание простых запросов.

Инструкция SELECT является основной в языке SQL. Она выполняет реляционные операции выбора и объединения для создания логических таблиц или запросов. Элементы списка выбора задают вычислимые выражения или столбцы, выбираемые из исходных таблиц, которые затем включаются в выходную логическую таблицу.

Синтаксис команды SELECT:

SELECT [ALL | DISTINCT | DISTINCTROW | TOP число [PERCENT] ]

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

FROM [{имя-таблицы [[AS] псевдоним ] |

имя-запроса-выборки [[AS] псевдоним ] |

<таблица-объединение> },...

[WHERE условие отбора]

[GROUP BY имя-столбца,...]

[HAVING условие отбора]

[UNION [ALL] инструкция выбора]

[ORDER BY {имя столбца [ ASC | DESC ] },...]

IN <"имя-базы-данных-источника"> <[строка-подключения-источника-данных]>

[WITH OWNERACCESS OPTION];

где список выбора есть:

{ * | {выражение [AS имя-столбца-выходной-таблицы] |

имя-таблицы.* |

имя-запроса.* |

псевдоним.* },...}

и где таблица-объединение есть:

({ имя-таблицы [[AS] псевдоним ] |

имя-запроса-выборки [[AS] псевдоним ] } |

<таблица-объединение>}

{ INNER | LEFT | RIGHT | JOIN

{ имя-таблицы [[AS] псевдоним ] |

имя-запроса-выборки [[AS] псевдоним ] |

<таблица-объединения>}

ON <условие-объединения>)

Таблицы, которые должны быть объединены, указываются в предложении FROM, а строки, которые необходимо выбирать предложении WHERE. Предложение GROUP BY используется для определения, как должны быть сформированы группы для итогового запроса, предложение HAVING

Для отбора тех групп, которые должны быть включены в результат запроса.

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

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

Можно также определить строки, включаемые ACCESS в выходной набор записей, с помощью предикатов ALL, DISTINCT, DISTINCTROW, TOP и TOP число PERCENT.

При использовании предиката ALL ACCESS включает в выходную таблицу все строки из исходной таблицы, удовлетворяющие условиям отбора, в том числе

и те, которые дублируются.

DISTINCT требует возврата только уникальных строк (дублирующие отбрасываются).

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

При выводе только части записей используется предикат TOP n и TOP n PERCENT. Первый выводит только n первых записей, а второй − только первые n %. n должно быть целым числом, а во втором случае меньше 100.

Предложение ORDER BY позволяет отсортировать выведенные строки по задаваемым столбцам. В этом предложении можно указать один или несколько столбцов, по значениям которых будут сортироваться выводимые записи. Записи сортируются вначале по первому из указанных столбцов, а при одинаковых записях первого столбца - по последующим. Для каждого столбца можно указать порядок сортировки: по возрастанию (ASC) или убыванию (DESC) значений в столбцах.

Создадим простой запрос на SQL по таблице "Преподаватели", выводящий информацию о преподавателях, отсортированных по номерным знакам. Для этого откроем базу данных STUD и щелкнем по корешку “Запросы”. Выберем кнопку "Создать" и в появившемся диалоговом окне выберем режим конструктора и кнопку "OK". Закроем окно “Добавление таблиц”.

После появления окна с пустым бланком QBE и диалоговым окном выбора таблиц для запроса щелкнем по кнопке "SQL" панели инструментов. Появится окно редактирования, в котором мы будем вводить создаваемые запросы. После создания запроса его можно просмотреть в форме бланка QBE, хотя некоторые элементы SQL в бланке отображены не будут.

В окне редактирования запроса введем инструкцию SQL:

SELECT Преподаватели.Номер_П, Преподаватели.Фамилия,

Преподаватели.Имя,

Преподаватели.Отчество,Преподаватели.Кафедра,

Преподаватели.Должность,Преподаватель.Дом_адрес

FROM Преподаватели

ORDER BY Преподаватели.Номер_П;

Запустим полученный запрос на выполнение кнопкой "Запуск" на панели инструментов.

Сохраним полученный запрос под именем "Сведения о преподавателях".