Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2575.pdf
Скачиваний:
2
Добавлен:
15.11.2022
Размер:
1.86 Mб
Скачать

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

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

<индекс> ON <таблица>};

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

таблицы можно использовать инструкцию ALTER TABLE.

7.3.3. Запрос на создание таблицы из других таблиц

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

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

SELECT <поле_1>[,

<поле_2>[,

...]]

INTO

 

 

<новаяТаблица>

[IN

 

<внешняяБазаДанных>] FROM

 

<источник>;

 

 

Инструкция создает

новую таблицу

с именем

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

33

<внешняяБазаДанных> — путь к внешней базе данных; <источник> — источник, из которого отбираются записи. Это может быть одна таблица, несколько таблиц или запрос.

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

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

Отличники

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

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

7.3.4. Запрос на добавление

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

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

INSERT

INTO <таблица> | <объединение таблиц>[(<поле_1>[, <поле_2>[, ...]])]

34

VALUES (<значение_1>[, <значение_2>[, ...])| <инструкция_выбора>;

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

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

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

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

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

7.3.5. Запрос на удаление

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

35

предложении FROM, которые удовлетворяют предложению

WHERE

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

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

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

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

Если в предложении FROM

указано имя запроса, то он не

должен

содержать предикат DISTINCT,

предложения

GROUP

BY и HAVING

и оператор

 

UNION.

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

36

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