Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1к 2 семестр / Lektsii_po_informatikei / ЛЕКЦИЯ_12_Информационные технологии интеграции.doc
Скачиваний:
79
Добавлен:
02.04.2015
Размер:
128 Кб
Скачать

Основы работы в ms Query

В MS Query выполняются следующие технологические операции:

  • выборка данных по условиям из внешних БД для передачи в приложение (электронную таблицу, текстовый документ);

  • конвертирование данных в выбранный формат представления;

  • сохранение результата запроса в указанном формате представления;

  • создание нового источника данных в указанном формате представления;

  • ввод и редактирование записей внешних БД.

При работе в MS Query используются команды меню и панель инструментов (см. рис. .12.2).

Рис. 12.2. Панель инструментов MS Query

Слева направо расположены кнопки: Создать новый запрос; Открыть запрос; Сохранить запрос; Режим SQL; Отображение/Скрытие таблиц; Отображение/Скрытие условий; Добавить таблицу; Фильтр по выделенному; Цикл по групповым операциям; Сортировать по возрастанию; Сортировать по убыванию; Выполнить запрос; Автоматический режим; ? (справки по команде или кнопке); Вызов справки.

Язык запросов sql

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

Для подготовки запроса непосредственно на языке SQL выполняется команда меню ФайлВыполнить запрос SQL.

Рис12.3. Диалоговое окно выполнения запроса SQL

Команда выводит диалоговое окно (рис. 12.3), в котором следует:

  • выбрать источник данных — кнопка Источники;

  • указать имя базы данных;

  • ввести оператор SQL;

  • нажать кнопку Выполнить.

В этом же окне выполняется сохранение запроса SQL в виде файла с расширением .qrt — кнопка Сохранить. Кнопка Открыть позволяет выбрать сохраненный запрос SQL на выполнение. С помощью инструкции

CREATE TABLE таблица (поле1 тип [(размер)] [индекс1] [, поле2 тип [(размер)] [индекс2] [, ...]] [, составной_индекс [, ...]])

создается таблица в выбранной БД.

Пример 1

Создать новую таблицу План счетов в БД ОС.MDB.

CREATE TABLE [План счетов]([Номер счета] CHAR (3), [Номер субсчета] CHAR (2), [Номер месяца] CHAR (2),[Сальдо дебет] SINGLE, [Сальдо кредит] SINGLE)

Индекс таблицы может создаваться в момент создания таблицы оператором CREATE TABLE, либо позже с помощью инструкции:

CREATE [UNIQUE] INDEX индекс ON таблица (поле [ASC|DESC] [, поле [ASC|DESC], ...]) [WITH {PRIMARY | DISALLOW NULL|IGNORE NULL }]

Индекс таблицы имеет уникальное имя. Значения индекса могут быть уникальными (UNIQUE), то есть значения индексируемого поля в записях таблицы не повторяются. Условия на значения индексируемых полей:

  • DISALLOW NULL — в новых записях нельзя иметь пустые значения полей индекса;

  • IGNORE NULL — запрет включения в индекс записей, имеющих значения Null в индексированных полях;

  • PRIMARY — индексированные поля являются первичным ключом (уникальный индекс).

Индексы можно удалять, что способствует ускорению процедур обновления данных, но замедляется поиск данных в таблице. Оператор удаления индекса:

DROP INDEX индекс ON таблица

Изменение структуры загруженной таблицы предполагает:

  • добавление столбцов — ADD COLUMN (с указанием имени поля, его типа и размера);

  • удаление столбцов — DROP COLUMN (с указанием имени поля);

  • добавление составного индекса — ADD CONSTRAINT;

  • удаление составного индекса — DROP CONSTRAINT.

ВНИМАНИЕ

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

При удалении таблицы удаляются как данные, так и определение таблицы в БД. Перед удалением таблицы должны быть закрыты. Оператор удаления таблицы:

DROP TABLE таблица

Использование реляционного языка SQL поддерживает основные виды обработки данных таблиц. Самым мощным оператором языка SQL является оператор SELECT, обеспечивающий формирование результирующих таблиц. Структура выходной таблицы задается перечислением полей исходных таблиц или выражений над полями:

SELECT [предикат] { * | таблица.* | [таблица.]поле1 [AS псевдоним1] [, [таблица.]поле2 [AS псевдоним2] [, ...]]}FROM выражение [, ...] [IN внешняя_база_данных][WHERE... ][GROUP BY... ][HAVING... ][ORDER BY... ] [WITH OWNERACCESS OPTION]

Предикат управляет отображением данных в выходной структуре и принимает значения:

Предикат

Выполняемое действие

ALL

Отбор всех записей, соответствующих условиям

DISTINCT

Отбор записей с неповторяющимися значениями указанных полей

DISTINCTROW

Отбор записей, не повторяющихся в полном составе всех полей (игнорируется, если запрос содержит только одну таблицу или все поля всех таблиц)

TOP n

Отбор определенного числа записей (n) в начале диапазона записей согласно ORDER BY

Если отбор осуществляется из одной таблицы или имена полей таблиц не повторяются, можно не указывать имя таблицы-источника перед именем поля. В других случаях обязательно указывается имя источника перед именем поля. При выборе всех полей таблицы используется спецсимвол *. В выходной структуре можно переименовать выводимые поля с помощью ключевого слова AS.

Источники для формирования выборки указываются в обязательном предложении FROM в любой последовательности. Связь таблиц описывается с помощью оператора JOIN:

  • симметричная (INNER);

  • внешнее объединение слева (LEFT JOIN);

  • внешнее объединение справа (RIGHT JOIN).

Для группирования выходных данных используется фраза GROUP BY. Можно использовать до 10 имен полей группирования. Порядок следования полей группирования слева направо определяет уровень итога выходных данных. С помощью данного предложения можно осуществлять групповые вычисления с использованием статистических функций SQL: SUM, COUNT, MAX, MIN, AVG и др.

ВНИМАНИЕ

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

Предложение WHERE обеспечивает фильтрацию записей, участвующих в обработке. При совместном использовании WHERE и GROUP BY записи, не удовлетворяющие условиям, исключаются из группирования и вычисления итогов. Предложение HAVING является фильтром для записей после их группирования. Оно может содержать до 40 выражений, связанных логическими операторами AND, OR, NOT. Для упорядочения строк выводимой информации используется фраза ORDER BY — сортировка записей.

Результат запроса на языке SQL можно сохранить в новой таблице с помощью инструкции:

SELECT поле1[, поле2[, ...]] INTO новая_таблица [IN внешняя_база_данных] FROM источник

Поля в новой таблице наследуют типы и размеры базовых полей. С помощью предложения IN можно подключиться только к одной внешней БД — источнику. Фраза FROM обеспечивает выборку из нескольких таблиц.

Для полной или частичной очистки таблицы от ненужных записей выполняется оператор:

DELETE [таблица.*] FROM таблица WHERE условие_отбора

Оператор DELETE особенно удобен для группового удаления записей, удовлетворяющих условиям отбора. Фразы FROM и WHERE обеспечивают совместную обработку связанных таблиц и задание условий удаления записей в определенной таблице.

Добавление записей в таблицу можно осуществлять в пакетном и интерактивном режимах. Пакетный режим основан на предварительном извлечении записей из других таблиц, удовлетворяющих заданным условиям отбора. Структура извлеченных данных должна соответствовать составу загружаемых полей таблицы, которая может находиться и во внешней БД. Таблицы-источники данных для добавления определяются с помощью оператора SELECT и фразы FROM:

INSERT INTO назначение [IN внешняя_база_данных] [(поле1[,поле2[, ...]])] SELECT [источник.]поле1[,поле2[, ...] FROM выражение

Ввод данных по записям поддерживается командой:

INSERT INTO назначение [(поле1[,поле2[, ...]])] VALUES (значение1[, значение2[, ...]])

Групповое обновление данных в таблицах выполняется с использованием оператора:

UPDATE таблица SET новое_значение WHERE условие_отбора

Изменяются только записи, удовлетворяющие условию отбора. Одновременно можно изменить значения нескольких полей одной таблицы. Новое значение задается выражением вида: имя_поля = значение. Значение может включать выражение, состоящее из имен полей текущей или присоединенных таблиц, констант, знаков операций, встроенных функций.

Объединение таблиц и результатов текущих запросов осуществляется только в том случае, если они имеют одинаковую структуру данных:

[TABLE] запрос-1 UNION [ALL] [TABLE] запрос-2 [UNION [ALL] [TABLE] запрос-n [ ... ]]

В одной операции UNION можно объединить в любой последовательности несколько таблиц и результатов текущих запросов (SELECT). Повторяющиеся записи в источниках объединения не возвращаются при использовании операции UNION, если не указан предикат ALL. В предложении ORDER BY осуществляется ссылка на поля по их названиям в первом предложении SELECT. В каждом отдельном запросе можно использовать свое предложение GROUP BY и/или HAVING для группирования возвращаемых данных. В конец последнего запроса можно включить предложение ORDER BY для сортировки возвращаемых данных.