Добавление или удаление строки условий запроса
Вы можете задать альтернативные наборы условий в запросе с помощью дополнительных строк условий. Если запись соответствует всем условиям из любой строки условий, Access включает ее в результаты запроса. Если вы больше не хотите, чтобы применялась определенная строка условий, ее можно удалить. Начните с открытия запроса в режиме конструктора.
Добавление строки условий
Щелкните строку в бланке запроса там, где должна появиться строка условий, а затем на вкладке Конструктор в группе Настройка запроса выберите пункт Вставить строки.
Access добавит новую строку над строкой, которую вы выбрали.
Удаление строки условий
Щелкните на любом месте в строке, а затем на вкладке Конструктор в группе Настройка запроса выберите пункт Удалить строки.
Дополнительные сведения об условиях запроса
Обзор запросов, в том числе обзор использования условий, см. в статье Основные сведения о запросах.
Примеры использования условий для различных типов данных см. в статье Примеры условий запроса.
Условия — это вид выражений, и чем лучше вы разбираетесь в выражениях, тем лучше сможете настраивать условия запросов. Дополнительные сведения о выражениях см. в статье Создание выражений.
SQL запрос на удаление i-й по счёту записи из таблицы БД
Знаю, что у записей в таблице нет такого понятия, как порядковый номер, но стоит задача написать SQL запрос на удаление именно i-й записи независимо от её id или каких-либо других параметров.. Есть ли способы осуществить это? Upd1: К примеру третью запись в таблице в изначальной сортировке, т.е. в том порядке, в котором записи добавлялись в таблицу. Но id при этом может быть различным, не обязательно отличающимся на единицу у соседних записей.
Отслеживать
Glimpse Unthinkable
задан 5 дек 2017 в 16:24
Glimpse Unthinkable Glimpse Unthinkable
35 7 7 бронзовых знаков
что такое i-й по счёту? В какой сортировке?
5 дек 2017 в 16:27
В любом случае, я бы свёл задачу к delete from where >
5 дек 2017 в 16:29
Да, понимаю, самый простой вариант, но в моём случае id не обязательно идут по порядку, а запрос должен в любом случае удалять именно третью(пятую/десятую) запись, без оглядки на данные и id в частности..
5 дек 2017 в 16:32
Какая разница, какие там данные, задача меняется с «удалить запись№i» на «Выбрать запись№i», которую, можно сделать через offset/fetch или top/offset
Как сделать запрос на удаление в access
Методические указания
к выполнению лабораторной работы
“СУБД ACCESS 97”
Выбор данных с помощью запросов-действий
Перекрестные запросы.
1 Цель работ ы
Приобрести навыки по работе с данными с помощью запросов-действий.
2 Задачи работы
Создать и выполнить различные типы запросов-действий.
3 Порядок выполнения работы
3.1 Открыть созданную в предыдущих лабораторных работах базу данных. Создать резервную копию данных таблицы.
3.2. Обновить данные с помощью запроса на обновление.
3.3 Удалить некоторые данные с помощью запроса на удаление.
3.4 Добавить данные в запросе на добавление записей.
3.5 Создать запрос на создание таблицы для сохранения результатов итогового запроса.
3.6 Наглядно представить данные итоговых запросов, предусматривающих группировку по нескольким (двум) признакам, используя перекрестный запрос.
4 Требования к отчету
Отчет о проделанной работе должен содержать:
— название работы, ее задачи и последовательность выполнения;
— ответы на контрольные вопросы по указанию преподавателя.
К отчету прилагается дискета с результатами работы.
5 Общие положения
5.1 Понятие запросов-действий
Для быстрого изменения, вставки, создания или удаления наборов данных из базы данных используются управляющие запросы или запросы-действия.
Создание запросов-действий аналогично созданию запросов-выборок. Отличие лишь в том, что в режиме конструктора запросов необходимо указать тип действий над выбранными записями. Существует всего четыре типа запросов-действий:
Создание таблицы, обновление, удаление, добавление
Создание таблицы . Этот запрос позволяет сохранить набор данных, вышедших в ответ на запрос, в виде таблицы.
Обновление . Используется для того, чтобы обновить значения некоторых полей для всех записей, вышедших в ответ на запрос.
Удаление . Используется для удаления всех записей, вышедших в ответ на запрос.
Добавление . Используется для добавления данных в имеющуюся таблицу.
ACCESS отмечает запросы-действия специальными значками (рисунок 1).
Рис. 1. Меню для выбора типа запроса
5.1.1 Особенности работы с запросами-действиями
Для того чтобы обезопасить себя от каких-либо случайностей, необходимо перед выполнением запроса-действия создать резервную копию используемой таблицы.
Для создания резервной копии таблицы необходимо перейти в окно базы данных, выбрать таблицу, в которой произойдут изменения, а затем воспользоваться командой Правка/Копировать. Затем выполнить команду Правка/Вставить, и в диалоговом окне указать имя для копии таблицы.
Создание запросов на обновление, добавление и удаление невозможно без разрушения целостности данных, поэтому упражняться лучше на созданной копии таблице.
Новый запрос желательно создать вначале как запрос на выборку. Так вы сможете проверить правильность отбора записей.
Прежде чем щелкнуть по кнопке Запуск, просмотрите результат в режиме таблице, воспользовавшись кнопкой Вид.
Быстрое переключение между режимами Конструктора и Выполнения обычно осуществляется с помощью одноименных пиктограмм, расположенных на панели инструментов.
5.2 Запросы на создание таблицы
Для сохранения результатов выборки в реально существующей таблице используются запросы на создание таблицы. Это ускоряет доступ к данным, полученным по запросу. Сохранение в виде отдельной таблицы полезно и в том случае, если какие-либо данные нужно хранить в течение длительного времени.
Например, сводную информацию по годам необходимо хранить в течение 5 лет. Для этого создается итоговый запрос и результат его выполнения сохраняется в виде отдельной таблицы. Для этого в режиме Конструктора запросов нужно выбрать команду Запрос/Создание таблицы.
Access выведет на экран диалоговое окно «Создание таблицы», где нужно указать имя таблицы, в которой будут сохранены результаты выборки (рисунок 2).
Рис. 2. Вид окна запроса на создание таблицы
5.3 Запросы на обновление записей
Этот тип запросов-действий предназначен для изменения значений некоторых полей для всех выбранных записей. После входа в режим Конструктора запроса нужно выбрать команду Запрос/Обновление. После этого в бланке запроса появится строка Обновление. Эта строка используется для того, чтобы задать новые значения для выбранных записей (рисунок 3).
Рис.3. Вид окна запроса на обновление записей
Обновлять значения можно не только в полях критериев, а в любом поле таблицы. Также для выбранных записей можно создавать вычисляемые поля.
5.4 Запрос на удаление записей
Этот вид запросов служит для удаления группы записей базы данных, удовлетворяющих определенным условиям. Обычный запрос можно преобразовать в запрос на удаление с помощьюкоманды Запрос/Удаление в режиме Конструктора запросов. При этом в бланке запроса появится строка Удаление, где можно ввести условие для удаления записей (рисунок 4).
Рис. 4. Вид окна запроса на удаление записей
В режиме Конструктора запроса необходимо указать таблицу, в которой будут проводиться удаления. Затем определить критерии и обязательно просмотреть результаты выполнения запроса на выборку.
Если в результате запроса присутствуют только подлежащие удалению записи, следует преобразовать его в запрос на удаление.
Удаление записей может привести к непредсказуемым результатам, в том числе и к нарушению целостности базы данных, по следующим причинам:
— Таблица является частью отношения один-ко-многим
— В качестве условия обеспечения целостности данных использована опция Каскадное удаление связанных полей.
Например, вы решили исключить каких-то студентов и удалить соответствующие записи из таблицы Студенты. При этом существует также таблица Экзамены, которая связана с таблицей Студенты, отношением один – ко многим. Если для обеспечения целостности данных выбрана опция Каскадное удаление связанных полей, в результате удаления записей о студентах будут удалены записи об их оценках, то есть информация об успеваемости!
Если установлена опция Каскадное удаление связанных полей и вы пытаетесь удалить записи в режиме просмотра таблицы, то получите предупреждение о возможном удалении данных в других таблицах. А при использовании запросов на удаление вы не увидите предупреждения. MS Access выдаст только информацию о количестве удаляемых записей, но ничего не скажет про каскадное удаление.
5.5 Запрос на добавление записей
С помощью запроса на добавление записей можно скопировать выбранные записи и поместить их в другую таблицу. Можно также использовать запрос на добавление для переноса данных в используемую базу данных из другого источника (из какой-либо другой таблицы).
Выполнение запроса на добавление записей можно начать (также как и в других запросах-действиях) с запуска запроса-выборки – для того, чтобы убедиться, что вы копируете необходимые записи.
Если необходимо добавить записи к таблице в другой базе данных, сначала следует присоединить таблицу-источник к базе, содержащей целевую таблицу, с помощью команды Файл/Внешние данные/Связь с таблицами. Для отбора добавляемых записей нужно составить запрос на выборку. Затем надлежит выполнить составленный запрос и оценить результат, переключившись в режим таблицы с помощью команды Вид/Режим таблицы. После этого необходимо вернуться в режим Конструктора и активизировать команду Запрос/Добавление.
В открывающемся окне диалога нужно в поле Имя таблицы имя таблицы, к которой требуется присоединить данные из результирующего набора записей запроса. Закрытие диалогового окна кнопкой ОК приводит к тому, что Access 97 добавляет в бланк запроса строку Добавление (рисунок 5).
Рисунок 5 Вид окна запроса на добавление записей
В строку Добавление автоматически (или вручную ) вставляются имена тех полей целевой таблицы, которые совпадают с именами полей запроса. Далее следует выполнить запрос. Для этого выполните команду Запрос/ Выполнить или щелкните по кнопке Выполнить на панели инструментов. В специальном диалоговом окне Access 97 укажет сколько записей будет добавлено к целевой таблице, и потребует подтвердить выполнение этой операции.
Однако при переключении на запрос-выборку и обратно Access не сохраняет соответствия имен полей. Так что если перед запуском соответствующего запроса на добавление записей вы хотите выполнить запрос-выборку, приходится заново задавать соответствия имен двух таблиц.
Добавленные по ошибке записи легко находятся и удаляются. Тем не менее, можно сэкономить время, если сделать резервную копию таблицы, в которой будет осуществляться добавление записей.
5.6 Перекрестные запросы
С помощью перекрестного запроса можно более наглядно представить данные итоговых запросов, предусматривающих группировку по нескольким признакам (по двум, в частности).
В этом случае значение полей по первому признаку группировки могут стать заголовками строк, а по второму — заголовками столбцов.
Для преобразования итогового запроса-выборки необходимо перейти в режим его Конструктора и выполнить команду Запрос/Перекрестный.
После этого в бланке запроса строка Вывод на экран будет заменена на строку Перекрестная таблица. В этой строке нужно задать, как будет использовано данное поле в перекрестной таблице: в виде заголовок строк, полей или значений (рисунок 6).
Рис.6. Вид окна перекрестного запроса
Существует возможность вывести данные в перекрестной таблице без создания в базе данных отдельного запроса. Для этого следует использовать Мастер сводных данных. В сводной таблице пользователь имеет возможность изменять заголовки строк или столбцов, что позволяет анализировать данные различными способами.
В перекрестном запросе отображаются результаты статистических расчетов (такие как суммы, количество записей и средние значения), выполненных по данным из одного поля таблицы. Эти результаты группируются по двум наборам данных, один из которых расположен в первом столбце таблицы, а второй — в верхней строке.
5.6.1 Использование Мастера для создания перекрестной таблицы
Можно создать перекрестную таблицу в интерактивном режиме с помощью мастера «Перекрестный запрос». Обращение к Мастеру значительно упрощает процесс создания перекрестной таблицы. Мастеру необходимо указать исходную таблицу, которая может быть таблицей из базы данных или являться результатом выборки данных из нескольких таблиц. На основе исходной таблицы или запроса Мастер создает итоговую выборку, в которой группирует и сортирует данные по полям, используемым в качестве строки и столбца перекрестной таблицы, а также вычисляет итоговое значение по заданному полю данных.
При создании перекрестной таблицы предстоит выполнить следующие действия:
1) Перейти на вкладку «Запросы» и выбрать кнопку Создать, а затем в окне диалога выбрать опцию Перекрестный запрос (рисунок 7).
Рисунок 7 Вид окна диалога «Новый запрос»
Эти действия запустят Мастер создания перекрестной таблицы, который шаг за шагом будет задавать вопросы о параметрах создаваемой таблицы.
На первом шаге Мастер предлагает выбрать исходную таблицу или запрос.
На следующем шаге вам необходимо указать поля, значения которых будут использоваться в качестве заголовков строк. Можно указать от одного до трех полей путем их переноса их переноса из списка Доступные поля в список Выбранные поля. Затем вы переходите в окно диалога определения заголовков столбцов. В качестве заголовка столбцов может использоваться только одно поле.
На предпоследнем шаге создания перекрестной таблицы нужно задать поле, которое будет использоваться в качестве источника данных для итоговых вычислений, и тип итоговых вычислений для каждой пары строка/столбец (рисунок 8).
Рисунок 8 Вид окна для определения типа группировки
В этом же окне диалога можно добавить столбец, который будет содержать итоговое значение по каждой строке результирующей таблицы.
На завершающей стадии создании перекрестной таблицы нужно задать ее имя и выбрать опцию просмотра результатов запроса или изменения структуры запроса в окне конструктора запросов.
Для завершения процесса создания необходимо нажать кнопку Готово, на экране появится построенная перекрестная таблица.
В перекрестной таблице, созданной с помощью Мастера, присутствует дополнительный столбец Итого, в котором отображаются суммарные итоги данных.
6. Методические рекомендации
При работе с запросами действиями можно использовать созданные в предыдущих лабораторных работах таблицы (Студенты, Экзамены).
Перед выполнением запросов-действий не забудьте создать резервную копию таблицы, чтобы не повредить данные в исходной таблице. Запросы на удаление и обновление записей делайте только в ней!
6.1 Запрос на создание таблицы
6.1.1 Сделайте запрос выборку к таблице Студенты, выбрав тех, кто не получает стипендии. Выполните запрос и просмотрите результат.
6.1.2 Перейдите в режим Конструктора для этого запроса и преобразуйте его в запрос для сохранения результатов в виде отдельной таблицы с именем Студенты без стипендии. Для этого нужно в режиме Конструктора запросов ввести команду Запрос/Создание таблицы.
6.1.3 Откройте любой итоговый запрос (созданный в предыдущих лабораторных работах) в режиме Конструктора и также преобразуйте его в запрос с сохранением данных в отдельной таблице.
6.2 Запрос на обновление записей
6.2.1 Выберите в копии таблицы Студенты всех, кто проживает в определенном городе, например, Уфе. Сделав запрос, проверьте правильность отбора записей.
6.2.2 Перейдите в режим Конструктора для этого запроса. и преобразуйте его в запрос на обновление данных. В строке Обновление задайте новое значение для поля Город (например, перепишите его с заглавной буквы или введите сокращенное название города и т.п.).
Для просмотра результатов выполнения запроса на обновление записей перейдите в режим просмотра таблицы Студенты.
6.2.3 Создайте запрос-обновление для таблицы Студенты, выбрав всех студентов определенного курса и измените курс на другой.
6 .3 Запрос на удаление записей
6.3.1 Создайте запрос к копии таблицы Студенты, в которой будут удалены все записи о студентах определенного курса, не получающих никакой стипендии (например, удалить все записи о студентах III курса, не получающих стипендию).
6 .4 Перекрестный запрос
6.4.1 Создайте перекрестный запрос для таблицы Студенты, включив в него поля Город, Факультет и вычисляемое поле для подсчета количества студентов (функция Count по полю Номер зачетки). Поле Факультет выберите в качестве заголовка строк, поле Город — заголовка столбцов, а вычисляемое поле с количеством студентов – как значения.
Выполните запрос и проанализируйте результат.
7 Контрольные вопросы
1) Типы запросов в Access . Как выбрать тип запроса?
2) Как создать запрос на обновление части данных в таблице?
3) Как удалить часть данных в таблице?
4) Какие проблемы могут возникнуть при использовании запросов удаления?
5) Как создать таблицу для постоянного хранения результатов определенного запроса?
6) Как посмотреть результат запроса?
7) Как можно изменить значение выбранного поля по всем записям таблицы, удовлетворяющим определенным условиям?
Библиография
1. Скотт Баркер., Использование Microsoft Access 97. — Киев: Диалектика.- 1997.- 363 с.
2. Мари Свонсон. Microsoft Access 97: наглядно и конкретно. – Москва: Microsoft Press , Русская редакция.- 1997.- 368 с.
3. Алексей Гончаров. Access 97 в примерах. – СПБ:Питер.- 1998.-256 с.
4. Информатика: Практикум по технологии работы на компьютере под ред. Н.В.Макаровой. — М.: Финансы и статистика.- 1997.– 293 с.
5. В. Пасько, Access97 для пользователя. – Киев: BHV.- 1997.– 365 с.
6. Информатика: Учебник для студентов экономических специальностей вузов /Под ред. Н.В.Макаровой. — М.: Финансы и статистика.- 1997.– 767 с.
Запрос на удаление
Например, запрос на удаление позволяет удалить записи о товарах, поставки которых прекращены или на которые нет заказов. С помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.
Принцип создания такого запроса аналогичен созданию запроса на обновление, однако, удаляя записи из связанных таблиц, необходимо помнить о том, что при этом не должна нарушаться целостность данных.
Если две таблицы связаны отношением «один-ко-многим», нельзя удалять записи из таблицы «один» если в таблице «многие» присутствуют соответствующие им записи. Сначала должны быть удалены записи в таблице «многие» и только потом — соответствующие им записи в таблице «один».
Для того чтобы упростить этот процесс, Access позволяет при определении связей между таблицами установить флажок Cascade Delete Related Records (каскадное удаление связанных записей).
Пример
Для создания запроса на удаления мы воспользуемся ранее созданным запросом на добавление записей «Arhiiv2005».
- Откройте этот запрос в режиме Конструктора. Данный запрос построен на основе таблицы «Koolitus».
- Чтобы преобразовать запрос на добавление записей в запрос на удаление записей, щелкните на кнопке Удаление.
В бланке запроса появится строка Delete (Удаление), в которой вы видите значение Where (Условие), что указывает на использование этого столбца для определения критерия отбора удаляемых записей.
3. Пересохраните запрос, дав ему имя: Delete_2005. С помоью созданного нами запроса мы сможем удалить все курсы в таблице «Koolitus», которые прошли в 2005 году.
4. Двойной щелчок мыши по названию запроса запускает его, при этом выводится сообщение с приглашением подтвердить удаление записей:
и информация о количестве записей, которые будут удалены.
Их будет столько же, сколько было отобрано в соответствующем запросе на добавление. В этот момент еще можно отменить удаление, для чего достаточно нажать кнопку No (Нет) в окне сообщения.
5. Нажмите кнопку Yes(Да), подтверждая удаление. Будут удалены все записи за 2005 год из таблицы «Koolitus» (Обучение). Вы можете убедиться в этом, если откроете таблицу «Koolitus».