46597 (571836), страница 2

Файл №571836 46597 (SELECT) 2 страница46597 (571836) страница 22016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Access поддерживает также групповые (итоговые) операции. Это значит, что можно рассчитать, исходя из набора данных, некоторые статистические и другие характеристики, такие как сумма, дисперсия, математическое ожидание и другие. В запросах этим пользуются не очень часто, но пользуются. Поля с групповыми вычислениями объявляются так же, как и обычные вычисляемые поля. Например, запрос

SELECT Sum(Покупки) AS Количество FROM Постоянные_клиенты;

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

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

Итак, есть две таблицы: «Ассортимент», содержащая список товаров, которыми торгует гипотетическая фирма «Рога_и_копыта», и безграмотно составленная таблица «Склад», в которую при нахождении каждого экземпляра товара добавляли запись. Надо сделать так, чтобы данные из этих таблиц отобразались наглядно.

Таблица «Ассортимент» содержит поля «ID_товара» и «Наименование», а связанная с ней таблица «Склад» - только «ID_товара».

Вначале создадим запрос «Склад_гр», который сгруппирует повторяющиеся записи в таблице «Склад» и выведет количество повторений для каждой записи. Для этого применим групповую операцию Count и конструкцию GROUP BY.

В общем виде группировка выглядит так:

SELECT (список_полей) FROM (список_таблиц) GROUP BY (список_полей);

В нашем случае мы получим такой запрос:

SELECT ID_товара, Count(ID_товара) AS Количество FROM Склад

GROUP BY ID_товара;

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

SELECT Количество FROM Склад_гр INNER JOIN Ассортимент ON (Склад_гр.ID_товара = Ассортимент.ID_товара);

Возвращенный таким запросом источник записей будет иметь следующую структуру:

Количество

ID_товара

Наименование

Как раз то, что нужно.

2.5. Сортировка полученных результатов

Для того, чтобы сделать вывод упорядоченным, язык SQL предлагает использование конструкции ORDER [ASCEND|DESCEND] BY (поле). ASCEND/DESCEND – это направление сортировки – по возрастанию или убыванию, соответственно. Модернизируем наш предыдущий запрос таким образом, чтобы он при выводе сортировал данные по полю «Наименование»:

SELECT Количество FROM Склад_гр INNER JOIN Ассортимент ON (Склад_гр.ID_товара = Ассортимент.ID_товара)

ORDER ASCEND BY Наименование;

На этом закончим рассмотрение (несколько поверхностное) предложений SELECT.

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

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

Иногда, зачастую в серверных базах данных или при использовании элементов программирования в Microsoft Access требуется динамически добавить запись в таблицу. Язык SQL предлагает использовать для этих целей предложение INSERT INTO.

Общая структура этого типа запросов такова:

INSERT INTO ИМЯ_ТАБЛИЦЫ VALUES (список значений);

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

Например, есть таблица «товары»

ID_товара

Наименование

Количество

Допустим, нам надо добавить запись в эту таблицу, но беда в том, что поле ID_товара – ключевое и иммет тип «Счетчик». Нарушать его нельзя, поэтому воспользуемся групповой операцией Max().

INSERT INTO Товары VALUES

(MAX(ID_Товара)+1, ‘Какой-то товар’, 10);

Таким образом, мы сохранили порядок счета.

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

4. Запросы на обновление

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

Допустим, со склада раз в месяц осуществляется отгрузка. Отгружают по одному артикулу каждого товара. Если какой-то товар на складе отсутствует, его, соответственно, не отгружают.

Общая структура запросов на обновление:

UPDATE Имя_таблицы SET

(список значений или список выражений «Поле=значение»);

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

Наш запрос на отгрузку будет выглядеть так:

UPDATE Товары SET (Количество=Количество – 1)

WHERE (Количество > 0);

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

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

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

Для этого используется предложение DELETE.

Структура таблицы «Документы»

Номер

Название

Текст

Дата_регистрации

Запросы на удаление имеют следующую структуру:

DELETE * FROM Имя_таблицы WHERE (список условий);

В нашем случае запрос будет иметь следующий вид:

DELETE * FROM Документы

WHERE (Дата_регистрации < 01.01.2004);

Как видим, диалект языка SQL, используемый в Microsoft Access, весьма демократичен.

6. Параметрические запросы

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

Например, у нас есть таблица «Список_жильцов», и нам нужно отобразить тех из них, возраст которых превышает некоторую заранее неизвестную величину. Для этого используем запрос

SELECT * FROM Список_жильцов WHERE (Возраст > Критерий_ возраста);

При попытке открытия такого запроса Access в специальном диалоговом окне попросит ввести значение параметра «Критерий_возраста»

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

7. Управляющие запросы ядра Microsoft Jet

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

а. Запрос DROP

Этот запрос позволяет удалить из базы данных таблицу или индекс. Его структура –

DROP TABLE Имя_таблицы

DROP INDEX Имя_индекса

б. Запрос ALTER Table

Этот запрос позволяет редактировать структуру таблицы.

Его структура:

Alter table

В случае, когда надо сделать несколько изменений, они указываются через запятую. Перечислю типы изменений:

ADD

Позволяет добавить новую колонку в таблицу. Описание колонки такое же, как и в Create table. После слова ADD можно указать слово COLUMN, которое позволяет сделать текст запроса более читабельным. После описания колонки можно указать слово FIRST, в этом случае колонка будет первой в таблице, или слово AFTER, после которого указывается название колонки, в этом случае навая колонка будет добавлена после указанной.

Можно также указать несколько описаний колонки через запятую и внутри круглых скобок. В этом случае указать расположение колонки нельзя.

ADD INDEX (,... )

Позволяет добавить новый индекс. В скобках указываются названия колонок, входящих в индекс. Между словом INDEX и скобкой можно указать название индекса.

ADD PRIMARY KEY (,... )

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

ADD UNIQUE (,... )

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

ADD FULLTEXT (... )

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

ALTER COLUMN SET DEFAULT

ALTER COLUMN <имя колонки> DROP DEFAULT

Запрос позволяет создать или удалить значение по умолчанию для колонки. При этом слово COLUMN можно опустить.

CHANGE COLUMN

Запрос изменяет указанную колонку на новую, описание такое же, как и в CREATE TABLE. Слово COLUMN можно опустить. В описании колонки указывается имя колонки, так что имя может быть изменено.

MODIFY COLUMN

Изменяет колонку на новую, описание такое же, как и в CREATE TABLE. Слово COLUMN моно опустить.

DROP COLUMN - Удаляет колонку.

DROP PRIMARY KEY - Удаляет первичный ключ

DROP INDEX - Удаляет индекс

RENAME TO - Переименовывает таблицу

в. Запрос CREATE TABLE

Этот запрос позволяет динамически создать новую таблицу в базе данных. Например:

В следующем управляющем запросе с помощью инструкции CREATE TABLE создается таблица «Друзья». Приведенная инструкция определяет имена и типы данных для полей таблицы и создает для поля «Код» индекс, делающий это поле ключевым.

CREATE TABLE Друзья
([Код] integer,
[Фамилия] text,
[Имя] text,
[ДатаРождения] date,
[Телефон] text,
[Заметки] memo,
CONSTRAINT [Индекс1] PRIMARY KEY ([Код]));

  1. Формирование и выполнение запросов в реальном времени (инструментарий Visual Basic For Applications)

Для того, чтобы запрограммировать автоматизацию действий с запросами, Microsoft Access предлагает два варианта:

а. Использование объектов доступа к данным (DAO)

б. Использование объекта-макрокоманды DoCmd.

Первый путь позволяет нам создавать хранимые запросы в базе данных (они будут появляться во вкладке «Запросы») или же работать с их результатами напрямую. Объект DoCmd, а точнее, его метод RunSQL используется исключительно для запуска запросов на изменение данных или управляющих запросов MS Jet.

Покажем общие приемы создания и исполнения запросов с помощью DAO. Для этого будем использовать объект Application.CurrentDB и, для создания/удаление хранимых запросов – коллекцию Queries, в этом объекте хранящуюся. Для работы с данными в реальном времени применим объект Recordset.

За основу возьмем запросы на выборку, показанные в разделе 2 данного реферата.

Option Compare Database

Option Explicit

Public Sub QRY_Example1()

Dim s As String

S = “SELECT Количество FROM Склад_гр INNER JOIN “ + _ “Ассортимент ON (Склад_гр.ID_товара = Ассортимент.ID_товара) ”+ _

ORDER ASCEND BY Наименование;”

Application.CurrentDb.CreateQueryDef("Query1", s)

End Sub

Характеристики

Тип файла
Документ
Размер
245,89 Kb
Материал
Учебное заведение
Неизвестно

Список файлов ответов (шпаргалок)

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее