Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MetEccess.pdf
Скачиваний:
9
Добавлен:
31.05.2015
Размер:
771.21 Кб
Скачать

связанных полей означает, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.

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

DROP {TABLE <таблица>

| INDEX <индекс> ON

<таблица>};

 

Прежде чем удалить таблицу или удалить из нее индекс, необходимо ее закрыть. Кроме того, для удаления индекса из таблицы можно использовать инструкцию ALTER TABLE.

3.3.3. ЗАПРОС НА СОЗДАНИЕ ТАБЛИЦЫ ИЗ ДРУГИХ ТАБЛИЦ

Часто требуется создать таблицу со значениями, выбранными из одной или нескольких таблиц. Такие действия можно произвести с помощью запроса на создание таблицы (инст-

рукция SELECT...INTO). Инструкция в простейшей форме имеет вид

SELECT <поле_1>[, <поле_2>[, ...]] INTO

<новаяТаблица> [IN <внешняяБазаДанных>] FROM <источник>;

Инструкция создает новую таблицу с именем <новаяТаблица>. Если таблица с таким именем уже существует, Access запрашивает подтверждение на ее удаление. В новую таблицу копируются поля с именами <поле_1>, <поле_2>,.. Столбцы новой таблицы получают характеристики типов данных столбцов, указанных в списке полей. Остальные аргументы: <внешняяБазаДанных> — путь к внешней базе данных; <источник> — источник, из которого отбираются

21

записи. Это может быть одна таблица, несколько таблиц или запрос.

В общем виде запрос на создание таблицы имеет те же аргументы, что и запрос на выборку. Например, создадим новую таблицу ОТЛИЧНИКИ, содержащую фамилии и шифры групп студентов, получивших отличные оценки по математике:

SELECT Фамилия, Группа INTO Отличники

FROM

Студент INNER JOIN (Дисциплина INNER

JOIN

Успеваемость ON Дисциплина.[Код дисцип-

лины] = Успеваемость.[Код дисциплины]) ON Студент.Зачетка = Успеваемость.Зачетка WHERE Дисциплина.Название="Математика" AND Оценка=5;

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

3.3.4. ЗАПРОС НА ДОБАВЛЕНИЕ

Одну запись можно добавить в таблицу с помощью за-

проса на добавление (инструкция INSERT INTO) :

INSERT

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

лиц>[(<поле_1>[, <поле_2>[, ...]])] VALUES (<значение_1>[, <значение_2>[,

...])| <инструкция_выбора>;

Инструкция вводит в поле с именем <поле_1> значение <значение_1> и т. д. Если опущен список полей, то значения присваиваются полям в порядке их описания. Пропущенным в списке полям присваивается значение NULL. Существует модификация инструкции, позволяющая вводить

22

данные из другой таблицы с помощью вложенного запроса

<инструк-ция_выбора>. Конструкция <объединение таблиц> строится с помощью оператора JOIN.

Например, в таблицу ОТЛИЧНИКИ можно добавить записи с помощью инструкции

INSERT INTO Отличники ( Фамилия, Группа )

SELECT Фамилия, Группа

FROM Студент INNER JOIN (Дисциплина INNER JOIN Успеваемость ON Дисциплина.[ Код дисциплины] = Успеваемость.[Код дисциплины]) ON Студент.Зачетка = Успеваемость.Зачетка WHERE Дисциплина.Название="Математика" AND 0ценка=5;

3.3.5. ЗАПРОС НА УДАЛЕНИЕ

Инструкция DELETE удаляет одну или несколько строк из одной или нескольких таблиц, перечисленных в предложении FROM, которые удовлетворяют предложению WHERE

DELETE [<таблица>.*]

FROM <таблица>| <объединение_таблиц> |<запрос_на_выборку >|IN <внешняя_база> [WHERE <условие0тбора>];

Если предложение WHERE отсутствует, то из таблицы будут удалены все строки, но структура таблицы сохраняется. Инструкцию DELETE можно использовать для каскадного удаления записей из таблиц, связанных отношением "один-ко- многим". Если при связывании таблиц установлено свойство каскадного удаления, то операция удаления приводит к удалению записей из таблицы, находящихся на стороне отношения "многие", когда в запросе удаляется соответствующая им запись на стороне "один". Если не установлено свойство каскадного удаления, то можно удалять строки со стороны "много" отношения "один-ко-многим" или из одной из таблиц, связан-

23

GROUP BY

ных отношением "один-к-одному". Если в предложение FROM включено более одной таблицы, то в инструкции DELETE необходимо указать таблицу <таблица>.*, из которой удаляются строки. В условиях отбора можно использовать вложенный запрос, но в нем не должно быть ссылок на таблицу, из которой удаляются строки. Если в предложении FROM указано имя запроса, то он не должен содержать предикат DISTINCT, предложения и HAVING и оператор

UNION.

Нельзя восстановить записи, удаленные с помощью запроса на удаление. Поэтому рекомендуется сначала просмотреть результаты запроса на выборку, использующего те же самые условие отбора, а затем выполнить запрос на удаление.

Запрос на удаление удаляет записи целиком. Чтобы удалить данные в конкретном поле, следует использовать запрос на обновление (инструкция UPDATE), который заменяет определенные поля значением Null.

3.3.6. ЗАПРОС НА ОБНОВЛЕНИЕ

Запрос на обновление создается инструкцией UPDATE:

UPDATE {{<таблица>| |<запрос_на_выборку >}}| <объединение таблиц>}[|IN <внешняя база>] SET {<имя_столбца>={<выражение>|NULL}} [WHERE <условиеОтбора>];

Аналогично запросу на удаление в инструкции UPDATE указываются имена таблиц, запросов, объединения таблиц и внешних баз, данные в которой следует изменить. В предложении SET нельзя указывать имя столбца более одного раза. Значения, присваиваемые столбцам, должны быть совместимы с характеристиками соответствующих столбцов, например, нельзя установить значение NULL для столбца, описанного с опцией NOT NULL. Обновления должны удовлетворять ограничениям целостности, установленным для базы данных. В усло-

24

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]