- •Г.В.Преснякова Основы jet - sql
- •Оглавление
- •Введение
- •Типы запросов:
- •Правила построения выражений
- •Функции
- •Запросы на выборку данных
- •Задания для самостоятельного выполнения
- •Задание псевдонимов для полей
- •Создание в запросах вычисляемых полей и использование функций
- •Предложение where
- •Запрос с параметром (параметрический запрос)
- •Задания для самостоятельного выполнения
- •Предложение group by
- •Предложение having
- •Задания для самостоятельного выполнения
- •Предложение order by
- •Задания для самостоятельного выполнения
- •Задания для самостоятельного выполнения
- •Перекрестные запросы
- •Использование псевдонимов для таблиц
- •Задания для самостоятельного выполнения
- •Подчиненные (вложенные или подзапросы) запросы
- •Подзапросы, возвращающие одну строку
- •Подзапросы возвращающие более одной строки
- •Операторы all, any и some
- •Операция not in
- •Использование подзапросов в предложении having
- •Вложенность подзапросов
- •Основные правила при формировании вложенных подзапросов
- •Операторы exists и not exists
- •Задания для самостоятельного выполнения
- •Управляющие запросы Создание таблицы
- •Модификация структуры таблицы
- •Создание индекса
- •Удаление таблицы или индекса
- •Объединение запросов
- •Задания для самостоятельного выполнения
- •Пример создание структуры таблиц и схемы данных операторами sql.
Модификация структуры таблицы
Модификация структуры таблицы (добавление или удаление поля) осуществляется инструкцией ALTERTABLE, синтаксис которой описывается так:
ALTERTABLEтаблица {ADD{COLUMNполе тип[(размер)] [NOTNULL]
[CONSTRAINTиндекс] |CONSTRAINTсоставнойИндекс} |
DROP{COLUMNполеICONSTRAINTимяИндекса} }
Где ADD– добавить,DROP– удалить,COLUMN– поле.
Пример 32.Добавить в таблицуСотрудникиновое текстовое полеадрес размером 30 символов можно запросом:
ALTER TABLE Сотрудники ADD COLUMN адрес text (30);
Создание индекса
Создать индекс можно другим способом с помощью инструкции CREATEINDEX, синтаксис которой такой:
CREATE [ UNIQUE ] INDEX индекс
ON таблица (поле [ASC|DESC][, поле [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
Чтобы запретить совпадение значений индексированных полей в разных записях, используйте зарезервированное слово UNIQUE.
Необязательное предложение WITHпозволяет задать условия на значения. Например:
С помощью параметра DISALLOWNULLзапретить значенияNullв индексированных полях новых записей.
С помощью параметра IGNORENULLзапретить включение в индекс записей, имеющих значенияNullв индексированных полях.
С помощью зарезервированного слова PRIMARYназначить индексированные поля первичным ключом. Такой индекс по умолчанию является уникальным, следовательно, зарезервированное словоUNIQUEможно опустить.
Пример 33.Создать индекс (первичный ключ) по имениaaaдля поляномерв таблицеСотрудники.
CREATE INDEX aaa ON сотрудники (номер) WITH PRIMARY;
Удаление таблицы или индекса
Синтаксис оператора:
DROP{TABLEтаблица|INDEXиндексONтаблица}
Пример 34.Удалить индекс, созданный в примере 33.
DROP INDEX aaa ON сотрудники;
Нельзя добавлять или удалять одновременно более одного поля или индекса.
Объединение запросов
Запрос на объединение объединяет результаты нескольких независимых запросов или таблиц.
Синтаксис:
[TABLE] запрос_1 UNION [ALL] [TABLE] запрос_2 [UNION [ALL] [TABLE]
запрос_n [ ... ]]
где
запрос_1-n- инструкцияSELECT, имя сохраненного запроса или имя сохраненной таблицы, перед которым стоит зарезервированное словоTABLE.
По умолчанию повторяющиеся записи не возвращаются при использовании операции UNION, однако, в нее можно добавить предикатALL, чтобы гарантировать возврат всех записей. Кроме того, такие запросы выполняются быстрее.
Все запросы, включенные в операцию UNION, должны отбиратьодинаковое число полей; при этом типы данных и размеры полей не обязаны совпадать.
Используйте псевдонимы только в первом предложении SELECT, потому что в остальных они пропускаются. В предложенииORDER BYссылайтесь на поля по их названиям в первом предложенииSELECT.
Примечания
· В каждом аргументе запрос допускается использование предложения GROUPBYилиHAVINGдля группировки возвращаемых данных.
· В конец последнего аргумента запрос можно включить предложение ORDERBY, чтобы отсортировать возвращенные данные.
Пример 35.Выдать номера деталей, цена которых больше 200, а также номера деталей, поставляемых в количестве более 100. Это можно сделать запросом:
SELECT детали.номерд
FROM детали
WHERE (((детали.цена)>200))
UNION
SELECT поставки.номерд
FROM поставки
WHERE (((поставки.кол)>100));