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

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

В этой статье описывается, как удалять данные из базы данных Microsoft Office Access 2007 с помощью запросов на обновление и на удаление. Запрос на обновление используется, когда необходимо удалить отдельные поля из записей в базе данных. Запрос на удаление используется, когда необходимо удалить из базы данных записи целиком, вместе со значением ключа, которое делает эти записи уникальными. Следует помнить, что в приложении Access удалять вручную как записи целиком, так и отдельные их части можно несколькими способами.

Дополнительные сведения об удалении записей вручную читайте в статье Удаление одной или нескольких записей из базы данных.

В этой статье

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

Планирование удаления

Прекращение блокирования запроса отключенном режиме

Удаление записей частичной (одно или несколько полей)

Удаление всех записей

Примеры условий отбора для запросов

Использование запросов для удаления данных

Для удаления данных из базы данных Access можно использовать запросы двух типов. Тип используемого запроса зависит от того, что именно требуется удалить.

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

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

  • Если требуется удалить записи (строки) целиком, следует использовать запрос на удаление.

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

Во время выполнения следует помните, что если записи, которые вы хотите удалить находятся на стороне «один» связи "один ко многим", необходимо сначала сначала изменить свойства отношения перед выполнением запроса. Действия по подготовке для удаления связанные данные, читайте дальше в этой статье объясняется, как для выполнения этой задачи. Необходимо внести дополнительные изменения, поскольку по умолчанию Access позволяет удалять данные на стороне «один» связи "один ко многим".

Если вам нужна Дополнительные сведения о связях один ко многим, читайте в статьях Основные сведения о создании баз данных и Создание, изменение или удаление связи.

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

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

Примечание : Обычно запросы на обновление или удаление используются только когда необходимо быстро обновить или удалить большое количество данных. Если нужно удалить несколько записей, и это проще сделать вручную, можно открыть таблицу в режиме таблицы, выбрать поля или строки, которые требуется удалить, и нажать клавишу DELETE.

Дополнительные сведения о других способах удаления данных читайте в статье Удаление одной или нескольких записей из базы данных.

К началу страницы

Планирование удаления

Процесс использования запроса для удаления записей включает следующие основные этапы.

  • Спланируйте удаление. Следует убедиться в наличии необходимых разрешений на удаление данных и в том, что другие пользователи закрыли объекты, использующие соответствующие таблицы, а затем создать резервную копию базы данных.

  • Убедитесь в том, что база данных находится в надежном расположении или цифровой подписью. Если ни одно из этих условий применяются, вы можете о доверии базе данных во время текущего сеанса. Помните, что по умолчанию приложение Access блокирует все запросы (запросы delete, обновления и создание таблицы), если только вы базу данных доверенной. Дополнительные сведения о доверие базе данных см. Остановить отключенном режиме блокирования запроса, далее в этой статье.

  • Если требуется удалить данные из нескольких таблиц, и эти таблицы связаны, включите параметры Целостность данных и Каскадное удаление связанных записей для каждой из связей. Это позволит запросу удалять данные из таблиц со стороны отношения «один» и «многие».

  • Создайте запрос на выборку и добавьте условия для получения нужного набора записей.

  • Если нужно удалить отдельные поля из таблицы, преобразуйте запрос на выборку в запрос на обновление, введите значение NULL или пустую строку ("") в качестве условия обновления и выполните запрос.

  • Если нужно удалить записи целиком, преобразуйте запрос на выборку в запрос на удаление и выполните его.

Подготовительные действия

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

  • Убедитесь, что база данных доступна не только для чтения. Для этого в проводнике Windows щелкните правой кнопкой мыши файл базы данных (с расширением accdb или mdb) и выберите в контекстном меню команду Свойства. В диалоговом окне Свойства должен быть снят флажок Только чтение.

  • Проверьте наличие необходимых разрешений на удаление записей из базы данных. При необходимости обратитесь к системному администратору или разработчику базы данных.

  • Убедитесь, что удаление записей не повлияет на работу других пользователей.

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

    Совет : Если базу данных использует большое количество пользователей, может потребоваться завершить ее работу и открыть повторно в режиме монопольного доступа.

    1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

    2. Найдите и выделите базу данных, нажмите стрелку рядом с кнопкой Открыть и затем выберите команду Монопольно.

      Открытие файла в монопольном режиме

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

    Создание резервной копии базы данных

    1. Нажмите кнопку Microsoft Office  Изображение кнопки Office , наведите указатель на пункт Управление, а затем в разделе Управление этой базой данных нажмите Резервное копирование базы данных.

    2. В диалоговом окне Сохранение укажите имя и расположение для резервной копии и нажмите кнопку Сохранить.

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

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

Подготовка к удалению связанных данных

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

Процесс удаления связанных данных состоит из следующих основных этапов.

  • Определите, какие из записей находятся на стороне «один» отношения, а какие — на стороне «многие».

  • Если нужно удалить записи со стороны «один» отношения и связанные записи со стороны «многие», включите набор правил «Целостность данных» и разрешите операцию каскадного удаления. Далее описано понятие целостности данных и указано, как выполнить оба действия.

  • Если нужно удалить данные только на стороне «один» отношения, сначала удалите отношение, а затем удаляйте данные.

    -или-

    Если требуется удалить данные только со стороны «многие» отношения, создайте и выполните запрос на удаление, не внося изменений в отношение.

Ниже объясняется, как подготовить связанные данные к удалению.

Определение записей, которые находятся на стороне отношения «один», и записей на стороне «многие»

  1. На вкладке Работа с базами данных в группе Показать или скрыть выберите элемент Схема данных.

    Откроется вкладка Схема данных, отображающая все таблицы базы данных, а также отношения между всеми таблицами. Каждое отношение изображается линией, соединяющей поля таблиц.

    На приведенном ниже рисунке изображено типичное отношение. В большинстве связей (если не во всех) присутствует сторона «один» и сторона «многие». В схеме отношений сторона «один» обозначается единицей (1), а сторона «многие» — знаком бесконечности ().

    Отношения между двумя таблицами

    Как правило, при удалении записей, расположенных на стороне «один», удаляются также все связанные записи на стороне «многие». Однако при удалении записей на стороне «многие» записи на стороне «один» не удаляются.

    Кроме того, по умолчанию в Access используется набор правил целостности данных. Эти правила обеспечивают правильность значений во внешних ключах базы данных. Внешний ключ — это столбец, значения которого совпадают со значениями в столбце первичного ключа в другой таблице.

    Сведения о правилах целостности данных

    • Правило 1. Невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в первичном ключе главной таблицы. Однако допускается ввод пустых значений в поле внешнего ключа.

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

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

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

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

      Если не указано иное, приложение Access применяют эти правила при каждом добавлении, изменении или удалении данных в базе данных. Если действие нарушает эти правила, отображается сообщение, подобное сообщению на приведенном ниже рисунке, после чего действие отменяется.

      Сообщение. Удаление или изменение записи невозможно.

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

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

    • Связанные поля в главной и связанной таблицах должны иметь одинаковый тип данных.

      Примечание : Существует два исключения из этого правила. Поле «Счетчик» можно связать с полем типа «Числовой», если для этого поля свойство Размер поля (FieldSize) имеет значение Длинное целое. Кроме того, поле «Счетчик», для которого свойство Размер поля (FieldSize) имеет значение Код репликации можно связать с полем типа «Числовой», для которого свойство Размер поля (FieldSize) имеет значение Код репликации.

    • Обе таблицы должны принадлежать одной базе данных Access.

      Примечание : Если таблицы связаны, они должны быть в формате Access. Кроме того, необходимо открыть базу данных, в которой содержатся связанные таблицы, и включить правило целостности данных. Невозможно соблюдение правил целостности данных для связанных таблиц в базах данных других форматов, таких как книги Microsoft Office Excel 2007. Сведения о включении целостности данных см. в следующем разделе.

  2. Запишите имена полей таблиц для каждой стороны отношения.

  3. Откройте каждую таблицу и просмотрите данные в каждом поле; проверьте, действительно ли нужные поля содержат данные, которые требуется удалить.

  4. Оставьте область Зависимости объектов открытой и выполните шаги, описанные в следующем разделе.

Изменение связи

Следующие инструкции выполняются только в случае необходимости удаления данных на сторонах «один» и «многие» отношения.

  1. Откройте область Зависимости объектов, если она закрыта.

    На вкладке Работа с базами данных в группе Показать или скрыть выберите элемент Схема данных.

  2. Щелкните правой кнопкой мыши связь (линию) между таблицами, включенными в операцию удаления, и выберите команду Изменить связь в контекстном меню.

    Будет открыто диалоговое окно Изменение связей.

  3. Убедитесь, что установлен флажок Обеспечение целостности данных.

  4. Установите флажок Каскадное удаление связанных записей.

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

  5. Нажмите кнопку ОК, закройте область Зависимости объектов и перейдите к следующей процедуре.

Удаление связи

  1. Откройте область Зависимости объектов, если она закрыта.

    На вкладке Работа с базами данных в группе Показать или скрыть выберите элемент Схема данных.

  2. Запишите имена полей, участвующих в отношении, чтобы после удаления данных можно было восстановить связь.

  3. Щелкните правой кнопкой мыши связь (линию) между таблицами, включенными в операцию удаления, и выберите команду Удалить в контекстном меню.

    -Или-

    Щелкните связь и нажмите клавишу DELETE.

Примечание : Чтобы восстановить связь, откройте область Зависимости объектов, как показано выше, и перетащите поле первичного ключа из таблицы «один» на поле внешнего ключа таблицы «многие». Будет открыто диалоговое окно Изменение связей. Если в исходном отношении была включена целостность данных, установите флажок Обеспечение целостности данных и нажмите кнопку Создать. В противном случае просто нажмите кнопку Создать.

К началу страницы

Выполнение запроса, заблокированного из-за режима отключения содержимого

Если открывается база данных, которой не предоставлено состояние доверенной и которая находится не в надежном расположении, приложение Access по умолчанию блокирует выполнение всех запросов на изменение.

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

Данное действие или событие заблокировано в режиме отключения.

Если отображается это сообщение, выполните следующие действия.

Включение заблокированного содержимого

  • На панели сообщений нажмите кнопку Параметры.

    Откроется диалоговое окно Параметры безопасности Microsoft Office.

  • Установите переключатель в положение Включить это содержимое и нажмите кнопку ОК.

  • Запустите запрос еще раз.

Если не отображается панель сообщений

  • Откройте вкладку Инструменты для базы данных и в группе Отображение щелкните Панель сообщений.

Дополнительные сведения о режиме отключения и безопасности в Access см. в статье Защита базы данных Access 2007.

Частичное удаление записей (одного или нескольких полей)

В этом разделе описано, как удалять с помощью запроса на обновление записей частичной (отдельных полей) из таблицы на стороне «многие» связи "один ко многим". Можно также выполнить следующие действия, чтобы удалить данные из таблиц, не относящихся к другим данным. Следует помните, что выполнение запроса на обновление для удаления данных примет вид вашего существующих значений NULL или строку нулевой длины (пару двойных кавычек без пробела между ними), в зависимости от условий, которые можно задать. Дополнительные сведения об использовании запросов на обновление читайте в статье " Создать и выполнить запрос на обновление".

Создание запроса на выборку

  1. На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.

    Будет открыт конструктор запросов с открытой вкладкой Конструктор, и появится диалоговое окно Добавление таблицы.

  2. Выберите таблицу, содержащую данные, которые нужно удалить, нажмите кнопку Добавить, а затем — кнопку Закрыть.

    Таблица будет отображена в окне в верхней части бланка запроса. В этом окне перечислены все поля таблицы. На рисунке показана типичная таблица в конструкторе.

    Таблица в конструкторе запросов

  3. Добавьте поля, которым нужно присвоить значение NULL в строку Поле конструктора. Поля можно добавлять перетаскиванием или двойным щелчком.

  4. Можно указать условия отбора для одного или нескольких полей в строке Условия конструктора.

    Использование условий для возвращения только записи, которые вы хотите удалить. В противном случае — запрос на обновление присваивается значение NULL, каждая запись в каждом из полей в запросе. Дополнительные сведения об использовании критериев читайте Примеры условий отбора для запросов, читайте дальше в этой статье.

  5. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Убедитесь, что запрос возвращает записи, которым нужно присвоить значение NULL или строку нулевой длины. При необходимости повторяйте шаги 3-5, изменяя поля или условия отбора, пока запрос не возвратит только те данные, которые нужно изменить.

  6. Оставьте запрос открытым и перейдите к следующим шагам.

Преобразование запроса на выборку в запрос на обновление

  1. Нажмите кнопку Конструктор, чтобы переключиться из режима таблицы в режим конструктора запросов.

  2. На вкладке Конструктор в группе Тип запроса нажмите кнопку Обновить.

    Запрос на выборку будет преобразован в запрос на обновление, строка Вывод на экран в нижней части бланка запроса будет скрыта, и будет добавлена строка Обновление.

    В строке Обновление для каждого поля, введите значение NULL или строку нулевой длины — пару двойных кавычек без пробела между ними («»).

  3. Нажмите кнопку запустить Изображение кнопки .

    Будет отображено диалоговое окно для подтверждения изменений.

    Убедитесь, что действительно нужно внести изменения и нажмите кнопку Да, чтобы изменить данные.

К началу страницы

Удаление записей целиком

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

Создание запроса на выборку

  1. На вкладке Создать в группе Другое нажмите кнопку Конструктор запросов.

    Будет открыт конструктор запросов с открытой вкладкой Конструктор, и появится диалоговое окно Добавление таблицы.

  2. Выберите таблицу на стороне «один» отношения, нажмите кнопку Добавить, а затем — кнопку Закрыть.

    Таблица будет отображена в окне в верхней части бланка запроса. В этом окне перечислены все поля таблицы. На рисунке показана типичная таблица в конструкторе.

    Таблица в конструкторе запросов

  3. Чтобы добавить в бланк запроса все поля таблицы, дважды щелкните звездочку (*).

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

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

    Предположим, деловые отношения с клиентом прекращаются и необходимо удалить все подготавливаемые заказы для этого клиента. Чтобы отобрать только эти записи, в бланк запроса необходимо добавить поля «Код клиента» и «Дата заказа».

  5. Если выполнен предыдущий шаг, введите условия в строку Условие отбора бланка запроса.

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

    Дополнительные сведения об использовании критериев читайте Примеры условий отбора для запросов, читайте дальше в этой статье.

  6. Если вы выполнили предыдущее действие, снимите флажок Показать для каждого поля условия.

  7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Убедитесь, что запрос возвращает записи, которые требуется удалить.

  8. Оставьте запрос открытым и перейдите к следующим пунктам.

Преобразование запроса на выборку в запрос на удаление и удаление данных

  1. Нажмите кнопку Конструктор, чтобы перейти из режима таблицы в режим конструктора запросов.

  2. На вкладке Конструктор в группе Тип запроса нажмите кнопку Удаление.

    При этом в Access запрос на выборку заменяется запросом на удаление, строка Вывод на экран в нижней части бланка запроса становится скрытой, а также добавляется строка Удаление.

    Убедитесь, что в строке Удаление в столбце * (все поля) отображается Из. Слово Условие должно появиться в столбцах всех условий.

  3. Убедитесь, что вы хотите удалить данные и нажмите кнопку запустить Изображение кнопки .

    Будет открыто окно для подтверждения удаления.

    Нажмите кнопку Да, чтобы подтвердить удаление данных.

К началу страницы

Примеры условий отбора для запросов

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

Дополнительные сведения об использовании подстановочных знаков читайте в статье подстановочных знаков в Access.

Критерий

Эффект

> 234

Возвращает все числа, больше 234. Чтобы найти все числа, меньше 234, следует использовать критерий < 234

>= "Новосибирск"

Возвращает все записи от слова «Новосибирск» до конца алфавита.

Between #02.02.07# And #01.12.07#

Возвращает даты между 2-фев-2007 и 1-дек-2007 (ANSI-89). Если в базе данных используются подстановочные знаки ANSI-92, вместо знака решетки (#) следует использовать одинарные кавычки ('). Пример: Between '02.02.2007' And '01.12.2007'

Not "Германия"

Находит все записи, в которых содержимое поля не совпадает точно с «Германия». Согласно этому условию будут возвращены записи, содержащие дополнительный текст кроме слова «Германия», например «Германия (евро)» или «Европа (Германия)».

Not "Т*"

Находит все записи, кроме тех, которые начинаются с буквы «Т». Если в базе данных используются подстановочные знаки ANSI-92, используйте знак процента (%) вместо знака звездочки (*).

Not "*т"

Находит все записи, которые не оканчиваются буквой «т». Если в базе данных применяется набор подстановочных знаков ANSI-92, используйте вместо знака звездочки (*) знак процента (%).

In(Канада,Великобритания)

Находит все записи в списке со словами «Канада» или «Великобритания»

Like "[А-Д]*"

Находит в поле с типом данных «Текстовый» все записи, начинающиеся с букв «А-Г». Если в базе данных используются подстановочные знаки ANSI-92, используйте знак процента (%) вместо знака звездочки (*).

Like "*ар*"

Находит все записи, которые содержат сочетание букв «тр». Если в базе данных используются подстановочные знаки ANSI-92, используйте знак процента (%) вместо знака звездочки (*).

Like "Андрей Гладки?"

Находит все записи, начинающиеся с имени «Мария» и содержащие вторую строку из 9 букв, из которых 8 букв составляют начало фамилии «Сергиенк», а последняя буква неизвестна. Если в базе данных применяется набор подстановочных знаков ANSI-92, используйте вместо знака вопроса (?) знак подчеркивания (_).

#02.02.07#

Будут найдены все записи от 2 февраля 2007 года. Если в базе данных применяется набор подстановочных знаков ANSI-92, необходимо заключить дату в одинарные кавычки вместо знаков решетки ('02.02.07').

< Date() - 30

Использует функцию Date, которая возвращает все даты не менее 30-дневной давности.

Date()

Использует функцию Date которая возвращает все записи, в которых содержится текущая дата.

Between Date( ) And DateAdd("M", 3, Date( ))

Использует функции Date и DateAdd которые возвращают все записи между текущей датой и датой на три месяца позже.

Is Null

Возвращает все записи, содержащие пустое (незаполненное или неопределенное) значение

Is Not Null

Возвращает все записи с любым (не пустым) значением.

""

Возвращает все записи, которые содержат пустые строки. Пустые строки служат для добавления значений в обязательные поля, если фактическое значение неизвестно. Например, в поле требуется ввести номер факса, но у некоторых клиентов его нет. В этом случае вводится пара двойных кавычек без пробела ("").

К началу страницы

Примечание : Отказ от ответственности относительно машинного перевода. Данная статья была переведена с помощью компьютерной системы без участия человека. Microsoft предлагает эти машинные переводы, чтобы помочь пользователям, которые не знают английского языка, ознакомиться с материалами о продуктах, услугах и технологиях Microsoft. Поскольку статья была переведена с использованием машинного перевода, она может содержать лексические,синтаксические и грамматические ошибки.

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×