Краткое описание языка sql в ms Access
Операторы (инструкции) языка SQL в СУБД MS Access используются при разработке форм, отчетов, а также написания макрокоманд и программ.
К числу основных операторов языка SQL, реализованного в Access, относятся следующие: ALTER TABLE, CREATE INDEX, CREATE TABLE, DELETE, DROP, INSERT INTO, SELECT, TRANSFORM и UPDATE.
Приведем описание инструкций, которое составлено по сведениям справочной системы MS Access
-
Инструкция ALTER TABLE
Назначение: изменение структуры таблицы, созданной с помощью инструкции CREATE TABLE
Пример.
Удалить поле «Оклад» из таблицы «Сотрудники», которая создана ранее с помощью инструкции CREATE TABLE.
ALTER TABLE Сотрудники DROP COLUMN Оклад;
-
Инструкция CREATE INDEX
Назначение: создание нового индекса для существующей таблицы.
Пример.
Создать в таблице «клиенты» индекс по полю «КодКлиента» в этом поле исключить повторяющиеся и пустые значения.
CREATE UNIQUE INDEX ИндексКлиента ON Клиенты (КодКлиента) WITH DISALLOW NULL;
-
Инструкция CREATE TABLE
Назначение: создание новой таблицы.
Пример.
Создать новую таблицу «Таблица1» с двумя текстовыми полями и одним целочисленным полем. Поле «Страховка» сделать ключевым.
CREATE TABLE Таблица1 (Имя TEXT, Фамилия TEXT, Страховка INTEGER CONSTRAINT Индекс1 PRIMARY KEY);
-
Инструкция DELETE
Назначение: создание запроса на удаление записей из одной или нескольких таблиц, перечисленных в предложении FROM, которые удовлетворяют предложению WHERE.
Пример.
Удалить записи о всех сотрудниках, которые занимают должность «Стажер» и имеют запись в таблице «Оплата». Между таблицами «Сотрудники» и «Оплата» установлена связь 1:1
DELETE Сотрудники.*FROM Сотрудники INNER JOIN Оплата ON Сотрудники.КодСотрудника=Оплата.КодСотрудника WHERE Сотрудники.Должность='Стажер';
-
Инструкция DROP
Назначение: удаление таблицы из базы данных или индекса из таблицы.
Пример.
Удалить «Индекс1» из таблицы «Стажеры».
DROP INDEX Индекс1 ON Стажеры;
-
Инструкция INSERT INTO
Назначение: добавить запись или записи в таблицу. Эта инструкция образует запрос на добавление.
Пример.
Отобрать все записи из таблицы «Стажеры» для стажеров, принятых на работу более 30 дней назад, и добавить их в таблицу «Сотрудники».
INSERT INTO сотрудники SELECT Стажеры.*FROM Стажеры WHERE ДатаНайма < Now () – 30;
-
Инструкция SELECT.
Назначение: представить данные из базы данных в виде набора записей.
Примеры.
Отобрать все поля из таблицы «Сотрудники».
SELECT Сотрудники.*FROM Сотрудники;
Подсчитать число записей, которые содержат непустое значение в поле «Индекс», и присвоить заголовок «Итого» полю, в которое возвращается результат.
SELECT Count(Индекс) AS Итого FROM Клиенты;
Вывести число сотрудников и их среднюю и максимальную зарплату.
SELECT Count(*) AS ЧислоСотрудников, Avg (Оклад) AS Средний оклад, Max (Оклад) AS Максимальный оклад FROM Сотрудники;
-
Инструкция SELECT…INTO
Назначение: подготовка запроса на создание таблицы. Запрос на создание таблицы можно использовать для архивации записей, создания резервных копий таблицы, копий для экспорта в другую базу данных или основы отчета, отображающего данные за конкретный период времени.
Примеры.
Создать таблицу с именем «Стажеры» и скопировать в нее записи о всех сотрудниках, имеющих должность «Стажер»
SELECT Сотрудники.Имя, Фамилия INTO Стажеры FROM Сотрудники WHERE Должность='Стажер';
Создать таблицу, содержащую сведения о всех стажерах и их зарплате. Между таблицами «Сотрудники» и «Оплата» установлена связь 1:1. новая таблица должна содержать все данные из таблицы «Сотрудники», а также данные поля «Оклад» из таблицы «Оплата».
SELECT Сотрудники.*, Оклад INTO Стажеры FROM Сотрудники INNER JOIN Оплата ON Сотрудники.КодСотрудника=Оплата.КодСотрудника WHERE Должность = 'Стажер';
-
Инструкция TRANSFORM
Назначение: создание перекрестного запроса (запрос, возвращающий данные в виде электронной таблицы, используя указанные поля как заголовки строк и столбцов, и способный возвращать итоговые данные). Перекрестный запрос позволяет просматривать данные в более компактной форме, чем при работе с запросом на выборку.
Пример.
Создать перекрестный запрос, показывающий распределение продаж по месяцам указанного пользователем года. Месяцы должны определять заголовки столбцов слева направо, а марка товаров – заголовки строк сверху вниз.
PARAMETERS [Год продажи ?] LONG;
TRANSFORM
Sum (Заказано.Количество * (Заказано.Цена – (Заказано.Скидка / 100) * Заказано.Цена)) AS Продажи
SELECT Марка
FROM Заказы INNER JOIN
(Товары INNER JOIN Заказано ON Товары.КодТовара = Заказано.КодТовара) ON Заказы.КодЗаказа = Заказано.КодЗаказа
WHERE DatePart(“yyyy”, ДатаРазмещения) = [ Год продажи?]
GROUP BY Марка
ORDER BY Марка
PIVOT DatePart(“m”, ДатаРазмещения);
В этом примере перед инструкцией TRANSFORM стоит оператор PARAMETERS, который запрашивает у пользователя значение переменной «Год продажи?». Это позволяет построить запрос с параметром.
10. Инструкция UPDATE
Назначение: создание запроса на обновление записей, который изменяет значение полей указанной таблицы на основе заданного условия отбора.
Пример.
Увеличить на 10 процентов цену на все товары поставщика, имеющего код 8, поставки которых еще не прекращены.
UPDATE Товары SET Цена = Цена * 1.1 WHERE КодПоставщика = 8
AND ПоставкиПрекращены = No;
Замечания:
-
Не следует использовать зарезервированные слова PRIMARY KEY при создании индекса в таблице, в которой определен ключ;
-
Нельзя добавить или удалить одновременно несколько полей или индексов;
-
Инструкцию CREATE INDEX можно использовать для добавления к таблице простого или составного индекса, а инструкции ALTER TABLE и DROP – для удаления индекса, созданного с помощью ALTER TABLE или CREATE INDEX;
-
При добавлении индекса указываются все необходимые сведения об индексе, а при его удалении – достаточно указать его имя;
-
Зарезервированное слово UNIQUE используется для обеспечения уникальности значений в поле;
-
Зарезервированные слова PRIMARY KEY используются для создания ключа таблицы, состоящего из одного или нескольких полей. Все значения в ключевом поле таблицы должны быть уникальными и не Null. В таблице может быть только один ключ;
-
Зарезервированные слова FOREIGN KEY используются для создания внешнего ключа.