Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Санкт-Петербургская государственный
инженерно-экономический университет
СИСТЕМА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ
MICROSOFT ACCESS 2000
по выполнению лабораторных работ
Для студентов, магистров и аспирантов всех специальностей
Санкт-Петербург
2001
Утверждено
Редакционно-издательским советом СПбГИЭУ
Составители:
канд. экон. наук, доц. И.Г. Гниденко
канд. техн. наук, проф. Е.Л. Рамин
канд. экон. наук, доц. О.Д.Мердина
Рецензенты
канд. экон. наук, доц. А.А.Макаров,
канд. экон. наук, доц. И.В.Егорова
Подготовлено
на кафедре вычислительных систем и программирования
Печатается в авторской редакции
© СПбГИЭУ, 2001
Цель работы: Ознакомление с основными понятиями СУБД Access на примере учебной базы данных компании «Борей». Освоение технологии конструирования реляционных таблиц.
Краткие сведения
СУБД Access 2000 использует реляционную модель базы данных, в которой данные представлены в виде взаимосвязанных таблиц (отношений по англ. - relations).
Важнейшим этапом проектирования базы данных является разработка информационно-логической (инфологической) модели предметной области, не ориентированной на СУБД, но отражающей предметную область в виде совокупности информационных объектов и их информационных связей.
СУБД Access позволяет работать с объектами базы данных, к которым относятся таблицы, запросы, формы, отчеты, страницы, макросы и модули.
Таблицы служат для хранения данных в определенной структуре.
Запросы создаются для выборки данных из одной или нескольких связанных таблиц.
Формы предназначены для ввода, редактирования и просмотра табличных данных на экране в удобном виде.
Отчеты являются выходными документами, предназначенными для вывода на принтер.
Страницы доступа к данным это Web- страницы, обеспечивающие функциональность стандартных форм и отчетов Access: ввод, редактирование и представление данных. Страницы доступа к данным можно открывать в программах просмотра Web-страниц (например, Internet Explorer) и использовать для ввода, просмотра и отбора информации в базе данных.
Макросы используются для автоматизации различных процедур обработки данных, являются программами, состоящими из макрокоманд высокого уровня. Макропрограммирование в Access не требует знания языка VisualBasic. Имеющийся в Access набор из около 60 макрокоманд обеспечивает практически любые действия, необходимые для решения задач.
Модули являются программами на языке, которые служат для реализации нестандартных процедур обработки данных.
Все данные БД Microsoft Access и средства их отображения хранятся в одном файле с расширением MDB.
Задание 1. Ознакомиться с учебной базой данных компании «Борей»
Технология
C:\Progam Files\Micosoft Office\Office\Samples\Борей
1. Таблицы
Таблицы составляют основу базы данных - именно в них хранятся все данные. Таблицы должны быть тщательно спланированы. Прежде всего должна быть спланирована структура каждой таблицы. Структура таблиц определяется содержанием тех выходных форм и отчетов, которые должны быть затем получены. При планировании таблиц необходимо избежать дублирования информации в разных таблицах.
Таблица - это объект БД, который хранит данные определенной структуры. Таблица состоит из записей (строк), каждая из которых описывает одну сущность. Каждый столбец таблицы - это поле. Столбец содержит однотипную информацию.
Длина имени таблицы - не более 64 символов.
Длина имени поля - не более 64 символов.
Количество полей в одной таблице - не более 255.
Количество записей - неограниченно.
Суммарный объем информации во всей БД - не более 1 гигабайта.
Для каждого поля необходимо указать тип данных. Тип данных определяет вид и диапазон допустимых значений, которые могут быть введены в поле, а также объем памяти, выделяющийся для этого поля.
Таблица может содержать следующие типы полей (всего 8):
Текстовый Короткий текст. Текст и числа, например, имена и адреса, номера телефонов и почтовые индексы. Текстовое поле может содержать до 255 символов.
Поле Memo Длинный текст и числа, например, комментарии и пояснения. Memo-поле может содержать до 65 535 символов.
Числовой Общий тип для числовых данных, допускающих проведение математических расчетов, за исключением расчетов для денежных значений. Свойство Размер поля позволяет указать различные типы числовых данных. Длина - до 8 байт. Точность до 15 знаков.
Дата/время Значения даты и времени. Пользователь имеет возможность выбрать один из многочисленных стандартных форматов или создать специальный формат. Длина - 8 байт.
Денежный Денежные значения. Числа представляются с двумя знаками после запятой. Не рекомендуется использовать для проведения денежных расчетов значения, принадлежащие к числовому типу данных, так как последние могут округляться при расчетах. Значения типа "Денежный" всегда выводятся с указанным числом десятичных знаков после запятой. Длина - 8 байт.
Счетчик Автоматически вставляющиеся последовательные номера. Счетчик увеличивается на единицу для каждой следующей записи. Нумерация начинается с 1. Поле счетчика удобно для создания ключа. В таблице может быть только одно такое поле. Длина - 4 байта.
Логический Значения "Да"/"Нет", "Истина"/"Ложь", "Вкл"/"Выкл", т.е. одно из двух возможных значений. Длина - 1 байт.
Поле объекта OLE Объекты, созданные в других программах, поддерживающих протокол OLE, например графики, рисунки и т.п. Объекты связываются или внедряются в базу данных Microsoft Access через элемент управления в форме или отчете.
Гиперссылка позволяет вставлять в поле гиперссылку, с помощью которой можно ссылаться на произвольный фрагмент данных внутри поля или страницы на том же компьютере, в локальной сети или в Internet.
Индексирование полей таблицы. Индексирование позволяет ускорить сортировку и поиск данных в таблице. Можно индексировать числовые, денежные, текстовые, логические поля, а также поля типа Счетчик и Дата. Не следует создавать слишком много индексов для одной таблицы, т.к. это замедлит ввод и редактирование ее данных.
Первичный ключ - это специальный тип индекса, который однозначно идентифицирует каждую запись. В первичный ключ могут входить несколько полей, но значение первичного ключа должно быть уникальным для каждой записи. Первичные ключи используются для установления связей между таблицами.
Связи между таблицами. Таблицы могут быть связаны отношениями один-к-одному, один-ко-многим и многие-к-многим. Access позволяет использовать только отношения первых двух типов.
При установлении связей нужно определить какая таблица является главной, а какая - подчиненной.
Отношение один-к-одному означает, что одной записи подчиненной таблицы соответствует только одна запись в главной таблице. Такие отношения встречаются очень редко, т.к. требую неоправданно много места в БД. Вместо них можно просто добавить поля подчиненной таблицы к полям главной.
Наиболее часто используются отношения один-ко-многим. В этом случае одной записи в главной таблице соответствует несколько записей в подчиненной таблице.
Для создания отношений необходимо указать поля в двух таблицах, которые содержат одни и те же данные. Обычно такое поле в одной из таблиц (главной) является ключевым. Имена связывающих полей могут отличаться, но типы и свойства должны совпадать. Возможна связь между полем типа Счетчик и полем типа Число с форматом Длинное целое.
Рекомендации для ввода данных в таблицы
Для ввода в поле текущей записи значения из того же поля предыдущей записи нажать клавиши <Ctrl> и <“>. (Двойной апостроф на русском регистре - на клавише “2”).
Задание 2. Создать базу данных Академия на основе инфологической модели, приведенной на рис.1. База данных должна содержать 4 взаимосвязанных таблицы: Студент, Группа, Специальность и Факультет.
Таблица Студент:
Таблица Группа:
Таблица Факультет:
Рис1. Инфологическая модель базы данных Академия
Таблица Специальность:
Технология создания таблицы Студент
Из таблицы сотрудники:
код студента - номер зачетной книжки
специализация коммерческий
код отдела номер группы.
Щелкнуть по кнопке «Далее».
Освоение приемов работы с фильтрами в таблицах
Задание 4. Найти студентов, фамилия которых начинается на заданную букву, например на букву «В». Список найденных студентов должен быть упорядочен по алфавиту. Для поиска использовать расширенный фильтр.
Технология:
Задание 5. Найти студентов, родившихся в заданном году с помощью расширенного фильтра.
Задание 6. Найти студентов, родившихся в заданном году и обучающихся на коммерческой основе в заданной группе.
Для решения задачи использовать 4 столбца бланка с названиями полей: дата рождения, дата рождения, номер группы, коммерческий.
Задание 7. Предварительно создав в режиме конструктора, ввести данные в таблицы: Группа, Факультет, Специальность.
В таблице Группа поле «Номер группы» должно быть того же типа и с того же размера, что и в таблице Студент. В эту таблицу следует ввести 5-6 строк, в том числе 3 строки с теми же номерами групп, что и в таблице Студент.
Аналогично, в таблице Факультет поле «Номер факультета» должно быть того же типа и того же размера, что и в таблице Группа. В таблице должно быть 3-5 строк, в том числе строки с такими же номерами факультетов, что и в таблице Группа.
В таблице Специальность поле «Номер специальности» должно быть того же типа и того же размера, что и в таблице Группа. В таблице должно быть 3-5 строк, в том числе строки с такими же номерами специальностей, что и в таблице Группа.
Задание 8. Сжатие базы данных
В процессе работы с БД некоторые таблицы приходится удалять. После удаления таблиц файл базы данных становится фрагментированным, и место на диске используется нерационально. Сжатие базы данных приводит к созданию ее копии, в которой диск используется более экономно.
1. Сжатие открытой базы данных
В меню Сервис выбрать команду Служебные программы и подкоманду Сжать базу данных.
2.Сжатие базы данных, которая не открыта
- Закрыть активную базу данных.
- Выполнить команду СЕРВИС/Служебные программы/Сжать базу данных.
- В диалоговом окне База данных для сжатия указать базу данных, которую следует сжать, и нажать кнопку Сжать.
- В диалоговом окне Сжатие базы данных указать имя, диск и папку для сжатой базы данных.
- Нажать кнопку Сохранить.
Допускается сжатие файла базы данных в файл с тем же именем, что и имя файла исходной базы данных, или создание файла с новым именем. При указании того же имени, диска и папки и при успешном сжатии базы данных исходный файл автоматически заменяется на сжатый файл.
Общие сведения о MDE-файлах
Если база данных содержит программы Visual Basic, то ее сохранение как MDE-файла скомпилирует все модули, удалит все изменяемые исходные программы и выполнит сжатие базы данных. Программы Visual Basic будут по-прежнему выполняться, но их нельзя будет просмотреть или изменить, благодаря чему уменьшится размер базы данных. Кроме того, будет оптимизировано использование памяти, что повысит быстродействие.
Защита базы данных
Microsoft Access обеспечивает два традиционных способа защиты базы данных: установка пароля, требуемого при открытии базы данных, и защита на уровне пользователей, которая позволяет ограничить, к какой части базы данных пользователь будет иметь доступ или какую ее часть он сможет изменять. Кроме того, можно удалить изменяемую программу Visual Basic из базы данных, чтобы предотвратить изменения структуры форм, отчетов и модулей, сохранив базу данных как файл MDE.
Установка пароля
Простейшим способом защиты является установка пароля для открытия базы данных. После того как пароль установлен, при каждом открытии базы данных будет появляться диалоговое окно, в которое требуется ввести пароль.
Для установки пароля следует открыть базу данных в монопольном режиме (команда ФАЙЛ/Открыть, в списке кнопки Открыть выбрать режим Монопольно) и выполнить команду СЕРВИС/Защита/Задать пароль базы данных.
Задание 9. Шифрование и дешифрование базы данных
При шифровании базы данных ее файл сжимается и делается недоступным для чтения с помощью служебных программ или текстовых редакторов. Дешифрование базы данных отменяет результаты операции шифрования.
1. Запустить Microsoft Access без открытия базы данных.
Внимание! Невозможно зашифровать или дешифровать открытую базу данных. В сети попытка шифрования или дешифрования окажется неудачной, если база данных открыта другим пользователем.
2. Выполнить команду СЕРВИС/Защита/Шифровать/Дешифровать.
3 . Указать имя базы данных, которую требуется зашифровать или дешифровать, и нажать кнопку OK.
4. Указать имя, диск и папку для конечной базы данных и нажать кнопку OK.
Цель работы: Ознакомление с технологией связывания таблиц. Конструирование и использование запросов к базе данных. Конструирование и использование запросов на изменение базы данных.
1. Связи между таблицами
Таблицы могут быть связаны отношениями один-к-одному, один-ко-многим и многие-к-многим. Access позволяет использовать только отношения первых двух типов.
При установлении связи нужно определить какая таблица является главной, а какая - подчиненной.
Отношение один-к-одному означает, что одной записи подчиненной таблицы соответствует только одна запись в главной таблице. Такие отношения встречаются очень редко, т.к. требуют неоправданно много места в БД. Вместо них можно просто добавить поля подчиненной таблицы к полям главной.
Наиболее часто используются отношения один-ко-многим. В этом случае одной записи в главной таблице соответствует несколько записей в подчиненной таблице.
Для создания отношений необходимо указать поля в двух таблицах, которые содержат одни и те же данные. Обычно такое поле в одной из таблиц (главной) является ключевым. Имена связывающих полей могут отличаться, но типы и свойства должны совпадать. Возможна связь между полем типа Счетчик и полем типа Число с форматом Длинное целое.
Задание 1. Установить связи между данными таблиц Факультет, Специальность, Группа и Студент.
Технология.
Примечание 1. Для удаления ошибочно установленной связи следует выделить связь и, нажав правую кнопку мыши, вызвать контекстное меню, в котором выбрать пункт Удалить связь.
Примечание 2.Целостность данных может быть обеспечена при условии, что поля таблиц, которые обеспечивают связь, имеют одинаковый тип. Если при установлении связи обнаруживается разный тип полей, следует щелкнуть по таблице на схеме данных правой клавишей мыши, и в контекстном меню выбрать пункт Конструктор таблиц, с помощью которого изменить тип поля.
2. Запросы
Запрос - это средство Access для выборки данных из базы данных в форме таблицы, выполняемой по заданному условию, а также для выполнения определенных действий над табличными данными.
Условие может определять:
- порядок сортировки выводимых данных ;
- фильтрацию данных;
- вычисляемые поля;
- вывод данных из нескольких связанных таблиц;
- и т.п.
Запросы по существу являются псевдотаблицами и их можно использовать также как и таблицы. Применение запросов позволяет избежать дублирования данных в таблицах и обеспечивает максимальную гибкость при поиске и отображении данных БД. С помощью запроса создается временная таблица - динамический набор данных. С помощью запроса можно осуществить выборку данных сразу из нескольких таблиц.
Все запросы можно разделить на 2 группы:
- запросы-выборки;
- запросы действия.
Запросы-выборки извлекают данные из таблиц в соответствии с заданными условиями
Основные виды запросов-выборок:
- запрос-выборка по одной таблице с заданными ключами сортировки (таблицы, рассортированы только по одному ключу);
- запрос с критерием поиска;
- запрос перекрестный;
- запрос с параметром;
- запрос с вычисляемым полем;
- запрос с итогами;
- запрос к связанным таблицам.
Запросы-действия предназначены для выполнения требуемых действий над данными таблиц. Они позволяют добавлять, изменять или удалять данные. В Access существует 4 вида запросов-действия:
- запрос на удаление;
- запрос на замену (обновление);
- запрос на создание новой таблицы;
- запрос на добавление новых записей в таблицу.
При составлении запроса используется таблица описания запроса, имеющая 4 основные строки. Количество столбцов таблицы определяется количеством полей, которые в нем будут использоваться.
1-ая строка таблицы называется Поле. В ней содержатся имена полей. Поле может быть вычисляемым. Тогда в соответствующей ячейке содержится выражение для вычисления значения этого поля.
2-ая строка таблицы называется Сортировка. Она определяет способ сортировки по соответствующему полю (по возрастанию, по убыванию или без сортировки).
3-ья строка таблицы управляет Выводом на экран значения соответствующего поля
4-ая строка таблицы называется Условием отбора. Содержит критерии, по которым производится отбор записей в динамический набор данных.
При записи в таблицу условий в одну ячейку таблицы можно поместить до 1024 символов. Одно и то же поле может записываться в строку таблицы описания запроса несколько раз.
При записи в запросе условия можно объединять критерии при помощи операций И (AND) или ИЛИ (OR).
Использование вычисляемых полей в запросах
Допускается создание вычисляемых полей в запросе с помощью ввода выражения в строку с именами полей.
1. В режиме конструктора запроса введите выражение в пустую ячейку строки "Поле". После нажатия клавиши Enter или перевода курсора в другую ячейку будет выведено имя поля "ВыражениеN", где N - целое число, увеличивающееся на единицу для каждого нового создаваемого вычисляемого поля в запросе. Это имя выводится перед выражением и отделяется от него двоеточием. В режиме таблицы данное имя становится заголовком столбца.
2. Пользователь имеет возможность переименовать вычисляемое поле.
Например, для создания поля "Сумма" следует ввести в ячейку в строке "Поле" выражение: Сумма: [Цена]*[Количество]
При выполнении запроса в поле "Сумма" будет занесено новое значение, найденное путем перемножения содержимого полей "Цена" и "Количество".
Вычисляемые поля позволяют:
-рассчитывать числовые значения и даты;
-комбинировать значения в текстовых полях;
-создавать подчиненные запросы;
-рассчитывать значения итоговых полей с помощью групповых функций.
Для вычисляемых полей допускается сортировка, задание условий отбора и расчет итоговых значений, как и для любых других полей. Для расчета итоговых значений следует выбрать в ячейке строки "Групповая операция" элемент "Выражение".
Ввод данных в вычисляемые поля или их изменение в режимах таблицы или формы невозможен. При изменении значений полей, используемых в выражении, значение вычисляемого поля обновляется автоматически.
При делении денежного значения на любое число возвращается числовое значение со значением свойства <Размер поля> - "С плавающей точкой (8 байт)". Для того чтобы возвращалось значение типа "Денежный", следует указать этот тип в свойстве запроса <Формат поля>.
В Microsoft Access определена специальная функция, Count, обеспечивающая подсчет числа записей в запросе. Для этого следует ввести Count(*) в ячейку в строке полей.
Окно “Область ввода”, выводящееся нажатием клавиш Shift+F2, позволяет просматривать выражения целиком (без прокрутки).
Элементы выражений
Элементами выражения могут быть операторы, идентификаторы, функции, литералы и константы.
Оператор =, <, &, And, Or, Like Определяет операцию, выполняемую над одним или несколькими элементами.
Идентификатор Формы![Заказы]![Заказ] или Отчеты![Счет]. ВыводНаЭкран Задает ссылку на значение поля элемента управления или свойства.
Функция Date, Sum, DLookup Возвращает значение, найденное в результате расчета или другой операции. Access Basic предоставляет пользователю возможность создавать собственные функции.
Литерал 100, #1-янв-94#, "New York" Представляет значение, например, число, строку или дату, которое используется в Microsoft Access, именно в том виде, как оно записано. Даты заключаются в символы номера (#), а строки в прямые кавычки (").
Константа True, False, Да, Нет, Null Представляет значение, остающееся неизменным.
Задание 2. Создать простой запрос для выборки сведений из базы данных, включающий следующие поля:
Технология
Примечание. Вместо перетаскивания названия поля можно использовать двойной щелчок левой клавишей мыши по соответствующей строке в окне таблицы на схеме данных. То же самое можно получить, если использовать кнопку, разворачивающую список полей таблиц. Эта кнопка появляется при щелчке по ячейке в первой строке бланка.
Задание 3. Создать простой запрос для выборки сведений из базы данных, включающий те же поля, что и предыдущий запрос, но содержащий сведения только о студентах, обучающихся на коммерческой основе. Такой запрос называется запросом по условию.
Для выполнения этого задания необходимо на бланке запроса добавить поле «Коммерческий» и ввести по нему соответствующее условие.
Задание 4.Составить запрос для подсчета количества коммерческих студентов в каждой группе.
Технология.
Количество коммерческих: Коммерческий
Задание 5. Составить запрос-выборку для подсчета количества коммерческих студентов по каждому факультету.
Задание 6. Составить запрос, позволяющий увидеть выборку, отражающую количество студентов по каждому факультету и каждой группе. Заголовки столбцов должны соответствовать названиям факультетов, заголовки строк номерам групп. Такой вид выборки может быть реализован перекрестным запросом. Для применения подобного запроса желательно иметь в базе данных сведения по 5-6 группам, отнесенным к 3 факультетам.
Технология.
Задание 7. Составить запрос, позволяющий увидеть перекрестную выборку, отражающую количество коммерческих студентов по каждому факультету и каждой группе.
Задание 8. Составить запрос для вывода списков групп, причем номер группы должен запрашиваться в процессе выполнения запроса. Такой запрос называется запросом с параметром. Параметром является номер группы. Значение параметра вводится в диалоговом окне. Для создания запроса необходимо ввести в ячейку с условием текст условия отбора в квадратных скобках.
Технология.
Задание 9. Составить запрос для получения справки по стоимости обучения коммерческих студентов с учетом НДС. Принять, что стоимость обучения с учетом НДС коммерческого студента равна стоимости обучения по выбранной им специальности, умноженной на (1+0,2), где 0,2 величина НДС.
Такой запрос называется запросом с вычисляемым полем
Технология.
где НДС: - заголовок столбца с вычисляемым полем,
[Стоимость обучения] поле таблицы «Специальность,
0,2 величина НДС.
Для записи выражения следует использовать инструменты построителя выражений. После ввода выражения щелкнуть по кнопке Ok.
Итого:[Стоимость обучения]+[НДС]
Примечание.
Для редактирования выражения в вычисляемом поле запроса можно использовать окно Область ввода, которое вызывается комбинацией клавиш Shift+F2, если ячейка с полем активизирована.
Задание 10. Составить запрос на обновление базы данных. Необходимо создать запрос, при выполнении которого произойдет увеличение стоимости обучения по всем специальностям в 1.5 раза.
Технология.
Задание 11. Составить запрос на обновление базы данных. Необходимо создать запрос, при выполнении которого произойдет уменьшение стоимости обучения по двум специальностям на 10%.
Задание 12. Составить запрос на создание новой таблицы Экзаменационная ведомость. Необходимо сконструировать запрос, при выполнении которого можно будет создавать заполненные данными таблицы со следующими столбцами:
Отдельные таблицы должны быть созданы для каждой группы студентов, имеющейся в базе данных, и для выбранной дисциплины. Поэтому следует предусмотреть ввод соответствующих условий как параметров. В дальнейшем эти таблицы будут использоваться для ввода результатов экзаменов.
Предварительно необходимо дополнить базу данных еще двумя таблицами Дисциплина и Вспомогательная.
Таблица Дисциплина должна иметь следующий состав полей:
Ввести в таблицу Дисциплина 5-6 строк с различными кодами и наименованиями дисциплин.
В таблицу Вспомогательная включить только одно поле:
- Оценка - числовое, байтовое, необязательное.
Ввести в таблицу Вспомогательная одну запись, причем значение поля Оценка не заполнять.
Технология.
Замечание
1. Поскольку при повторном использовании запроса на создание таблицы ранее созданная таблица удаляется необходимо перед созданием новой таблицы переименовывать ранее созданную таблицу. Для переименования необходимо:
2. При создании ведомостей для всех трех групп необходимо выбирать один и тот же набор из двух дисциплин (например, каждая из трех групп сдает Дисциплину 1 и Дисциплину 2).
Задание 13. Составить запрос на добавление записей из одной таблицы в другую. Объединить с помощью такого запроса все заполненные экзаменационные ведомости в одну, назвав ее, например, Общая ведомость.
Технология.
Задание 14. Составить параметрический запрос на удаление сведений из таблицы Общая ведомость о студентах одной из групп по заданной дисциплине.
Технология
[Введите номер группы:] и [Введите код дисциплины: ]
Цель работы: Освоение технологии конструирования и использования форм.
Общие сведения о формах Access.
Форма является удобным средством для просмотра БД, а также для ввода данных и их корректировки. Форма обычно отображает поля одной строки таблицы или запроса. В форме можно отображать данные нескольких таблиц или запросов. Применение форм позволяет упростить ввод данных в БД и уменьшить количество допускаемых ошибок ввода. Для этого форма снабжается:
- форматами ввода;
- условиями проверки вводимых данных;
- масками ввода для ввода стандартизованной информации;
- пояснительным текстом;
Форма содержит следующие разделы: заголовок, область данных, верхний и нижний колонтитулы и примечание.
Заголовок формы может содержать название формы, инструкции по ее использованию, а также кнопки, предназначенные для открытия подчиненных форм и выполнения других задач. В режиме формы заголовок отображается в верхней части экрана, а при печати в верхней части первой страницы.
Область данных содержит записи. На экране одновременно их может располагаться от одной до нескольких.
Примечание формы может содержать кнопки и инструкции по использованию формы. В режиме формы примечание отображается в нижней части экрана, а при печати на последней странице после области данных.
Верхний колонтитул может содержать заголовок формы, графические объекты, заголовки столбцов и любые другие сведения, которые должны изображаться в верхней части каждой страницы. Верхние колонтитулы используются только при печати формы.
Нижний колонтитул может содержать дату, номер страницы и любые другие сведения, которые должны отображаться в нижней части каждой страницы. Нижний колонтитул появляется только при печати формы.
При проектировании формы можно использовать текстовые строки, рисунки и линии, кнопки, списковые окна и т.п. Форма проектируется при помощи панели элементов.
В форме может быть разрешено или запрещено корректировать определенные данные или вообще ввод новых записей.
С формой можно работать в 3-х режимах:
- в режиме конструктора;
- в режиме формы;
- в режиме таблицы.
Основные виды форм:
- простая форма по одной таблице;
- простая форма по связанным таблицам;
- простая форма на основании запроса;
- форма со списком или с полем для списка;
- составная форма;
- форма-меню с кнопками управления.
Составная форма содержит главную форму и подчиненные ей формы. Подчиненные формы позволяют решать следующие задачи:
- отображать отношения один-к-одному или один-к-многим между таблицами или запросами, например, в главной форме выводят только категорию товаров, а в подчиненной - полный список товаров, относящихся к этой категории.
- обновлять записи в разных таблицах с помощью одной формы.
При необходимости, пользователь имеет возможность изменить макет подчиненной формы.
Допускается вставка в главную форму нескольких подчиненных форм.
Возможна вставка в главную форму двух вложенных друг в друга подчиненных форм. Это означает, что в форму вставлена подчиненная форма, которая сама содержит подчиненную форму. Для ссылки на значение элемента управления подчиненной формы используют выражение.
Если для свойства формы “Допустимые режимы” задано значение "Все", то в режиме формы для главной формы допускается вывод подчиненной формы, как в режиме формы, так и в режиме таблицы.
Для перехода в режиме формы из подчиненной формы в главную следует щелкнуть мышью на любом поле в главной форме. Для перехода из главной формы в подчиненную следует щелкнуть мышью на любом месте подчиненной формы (или выбрать имя подчиненной формы в раскрывающемся списке "Переход к полю" на панели инструментов).
Примечания
1.Для отказа от данных только что введенных в запись необходимо 2 раза нажать клавишу Esc.
2.В режиме конструктора форму можно преобразовать в отчет, если выполнить команду ФАЙЛ/Сохранить как отчет.
Задание 1. Создать простую форму по одной таблице Студент, включив в нее все поля таблицы.
Технология.
Задание 2. Создать простую форму по связанным таблицам. Создать форму для просмотра перечня групп с расшифровкой специальностей и названий факультетов. Для создания формы использовать 3 таблицы: Группа, Специальность и Факультет.
Технология.
Задание 3. Создать простую форму на основании запроса. Необходимо создать форму по запросу с вычисляемым полем (запрос для получения справки по стоимости обучения коммерческих студентов с учетом НДС - задание 9 лабораторной работы №2), включив в форму все поля запроса. Порядок действий аналогичен порядку, рассмотренному в предыдущем задании. В пункте 5 следует выбрать иной внешний вид формы выровненный. Присвоить форме имя Простая форма по запросу.
Задание 4. Создать форму со списком. Необходимо создать форму, позволяющую просматривать и редактировать данные каждого студента. Форма должна быть снабжена списком групп,
Рис.2. Форма со списком
в котором для каждой группы указывается ее номер специальности и наименование факультета (см.рис.2). Для создания формы следует использовать таблицу Студент и специально подготовленный запрос Группа-факультет.
Образец формы приведен на рисунке.
Технология.
Присвоить запросу имя Группа-факультет.
Задание 5. Создать составную форму. Составная форма должна содержать главную форму и одну подчиненную форму. Необходимо создать форму для вывода информации о группе см.рис.3).
Рис.3. Составная форма
Главная форма должна содержать общие сведения о группе:
Для получения этих сведений следует создать запрос Группа-специальность-факультет, включив в него перечисленные поля. Подчиненная форма должна иметь табличную форму и содержать список группы, в который необходимо включить поля:
Технология.
Задание 6. Создать составную форму для просмотра состава групп следующего вида (см.рис.4).
Особенности формы:
Для создания такой формы необходимо подготовить:
Рис.4. Составная форма Состав группы
Технология.
Примечание.
Существует и другой способ вставки подчиненной формы в главную форму. Вставку можно выполнить и буксировкой значка подчиненной формы из окна базы данных в область данных главной формы.
Задание 7. Создать форму с вкладками для просмотра списка студентов двух групп. На каждой вкладке должен располагаться список студентов только одной группы. На ярлычках вкладок должны отображаться номера групп.
Технология.
Рис.5. Форма с вкладками
Цель работы: Конструирование и использование отчетов.
Отчеты предназначены для вывода информации из базы данных, прежде всего, на принтер. Перед выводом на принтер отчет можно просмотреть на экране. Отчет строится на основании таблиц и запросов.
Основные виды отчетов:
- одноколонный (простой) отчет;
- многоколонный отчет;
- табличный отчет;
- отчет с группировкой данных и подведением итогов;
- отчет по связанным таблицам;
- связанный отчет, т.е. отчет, содержащий другой (подчиненный отчет);
- отчет слиянием с Word (составной документ);
- перекрестный отчет.
Основные разделы отчета
- заголовок отчета (начало отчета);
- верхний колонтитул (печатается в начале каждой страницы);
- область заголовка группы (отображается перед первой записью каждой группы);
- область данных (основная часть отчета);
- область примечания группы (отображается после области данных последней записи каждой группы);
- нижний колонтитул (печатается в конце каждой страницы);
- область примечаний (печатается в конце отчета).
В режиме конструктора доступны кнопки панели инструментов и пункты меню Вид:
- Сортировка и группировка;
- Список полей;
- Свойства.
Окно сортировки и группировки позволяет определить условия сортировки и группировки данных в отчете. В ячейках верхней половины окна указываются поля, по которым выполняется сортировка, и порядок сортировки. Ячейки нижней половины окна позволяют задать условия группировки. Допускается выполнение сортировки записей без их группировки; однако, условия группировки можно задать только для сортируемых полей или выражений.
Столбец "Поле/выражение". В ячейках столбца выбирают поле, по которому проводится сортировка, или вводят выражение. При сортировке по нескольким полям следует расположить поля сверху вниз в порядке проведения сортировки.
Столбец "Порядок сортировки". В ячейках выбирают порядок сортировки "По возрастанию" или "По убыванию" для поля или выражения в этой строке.
Свойства группы. В ячейках задаются параметры группировки для выбранного поля или выражения. В поле в правом нижнем углу окна выводится описание выбранного столбца или параметра группировки.
Для просмотра запроса, на котором основан отчет или форма, достаточно выбрать свойство Источник записей и включить кнопку построителя выражений.
Для построения многоколонного отчета выполнить в режиме «Конструктор»:
- команду ФАЙЛ/Настройка печати;
- нажать кнопку Дополнительно;
- в поле ввода По горизонтали указать количество элементов (колонок)
Задание 1. Создать табличный отчет, модифицировав запрос на выборку, подготовленный в задании 2 лабораторной работы 2, которому было присвоено имя Выборка 1. Отчет должен включать следующие столбцы:
Технология
Задание 2. Создать отчет с группировкой данных и подведением итогов, используя запрос на выборку, подготовленный в задании №9 лабораторной работы №2 с именем Запрос с вычисляемым полем. В отчете необходимо подсчитать общую суммарную плату за обучение коммерческих студентов и в том числе по каждой специальности и по каждой группе. Отчет должен содержать поля:
Технология
Задание 3. Создать перекрестный отчет, используя таблицу Общая ведомость, созданную в лабораторной работе №3. Отчет должен иметь следующие столбцы:
В столбцах с наименованиями дисциплин должны отображаться оценки, полученные студентами на экзамене. В столбце Средний балл для каждой строки должно производиться вычисление среднего балла каждого студента по результатам сдачи 2-х экзаменов.
Вычислить в отчете средний балл по группе студентов и по академии в целом.
Технология.
=([наимен. дисц.1] + [наимен. дисц.2] ) / 2
Примечание.
Наименования дисциплин вставляются в формулы двойным щелчком левой клавиши мыши по соответствующей строке в подокне построителя выражений Отчет.
=Sum (([наимен. дисц.1] + [наимен. дисц.2] ) / 2 / Count([ФИО])
Примечание.
Для ввода названий функции групповых операций Sum и Count дважды щелкнуть по строке Функции в левом подокне Построителя выражений, а затем двойным щелчком раскрыть список встроенных функций. В среднем подокне выбрать категорию Статистические функции и затем в правом подокне нужную функцию.
Для вставки в качестве аргументов функции нужных полей выбрать в левом подокне "Отчет…", а в среднем подокне - "Список полей" и двойным щелчком вставлять в формульное выражение имена полей из правого подокна.
="Средний балл группы " & [Номер группы]
Рис.6. Перекрестный отчет
Создание связанного отчета
Связанный отчет состоит из главного и одного или нескольких подчиненных отчетов. Подчиненным отчетом называют отчет, созданный внутри другого отчета. Подчиненные отчеты позволяют решать следующие задачи:
- вывести сводные данные или конкретные записи, связанные с содержимым главного отчета;
-объединить несколько независимых отчетов в главном отчете.
Для создания подчиненного отчета следует:
1. Создать отчет, который будет использоваться как подчиненный, и сохранить его.
2. Открыть главный отчет в режиме конструктора.
3. Перейти в окно базы данных, например, нажатием клавиши F11.
4. Переместить с помощью мыши значок созданного подчиненного отчета из окна базы данных в соответствующую позицию в главном отчете. Например, для печати подчиненного отчета перед каждой группой в главном отчете следует поместить подчиненный отчет в заголовок группы. Подчиненный отчет выводится как отдельный элемент управления.
5 . Если в подчиненном отчете должны выводиться данные, связанные с главным отчетом, установить связь элемента управления подчиненного отчета с главным отчетом.
Для связывания подчиненного отчета с главным отчетом открыть бланк свойств подчиненного отчета и задать значения свойств Подчиненные поля и Основные поля. По возможности, значения этих свойств задаются автоматически средствами Microsoft Access.
Например, подчиненный отчет - это отчет, содержащий сведения о студентах, сгруппированные по номерам групп. Главный отчет - это отчет, содержащий сведения о группах (номер, факультет, специальность). Связь осуществляется через поле “Номер группы”. Главный отчет создается мастером на базе запроса “Факультет-группа” как простой отчет. Подчиненный отчет также создается мастером на базе таблицы “Студент” как отчет с группировкой.
Примечание
Допускается вставка в отчет подчиненной формы. Главный отчет может содержать несколько подчиненных отчетов или подчиненных форм.
В главном отчете допускается существование двух уровней подчиненных отчетов. Например, отчет может содержать подчиненный отчет, который в свою очередь содержит подчиненный отчет. Возможные комбинации подчиненных форм и подчиненных отчетов, содержащихся в главном отчете, представлены в следующей таблице.
Уровень 1 Уровень 2
Подчиненный отчет 1 Подчиненный отчет 2
Подчиненный отчет 1 Подчиненная форма 1
Подчиненная форма 1 Подчиненная форма 2
Задание 4. Создать связанный отчет, состоящий из главного и подчиненного отчетов. В качестве главного отчета создать отчет на базе запроса по связанным таблицам «Факультет-группа». В качестве подчиненного отчета использовать табличный отчет по таблице «Группа».
Технология.
2. Сохранить отчет, присвоив ему имя Подчиненный. Отредактировать отчет в режиме конструктора. Уменьшить ширину столбцов и длину линий обрамления заголовка.
3. Создать с помощью мастера ступенчатый главный отчет по запросу Группа-Факультет, упорядоченный по факультетам и номерам групп, включив в него поля:
4. Сохранить отчет, присвоив ему имя «Главный». Отредактировать в режиме конструктора. Уменьшить ширину столбцов и длину линий обрамления заголовка.
5. Включить режим конструктора для главного отчета. Не закрывая окна конструктора отчета Главный, перетащить мышью из окна базы данных (вкладка: отчеты) значок отчета Подчиненный в область данных главного отчета.
Цель работы: Освоение некоторых возможностей автоматизации управления базой данных. Создание и применение макросов. Создание пользовательского ниспадающего меню.
Автоматизация управления базой данных
Макросы
Макросы удобно использовать для упрощения работы с БД. С помощью макросов можно выполнять определенные действия, например открытие какой либо формы, таблицы или отчета, выход из Aсcess и др.
Макросу присваивается заданное пользователем имя. Если макрос имеет стандартное имя Autoexec, то такой макрос выполняется автоматически сразу после загрузки Aсcess. Макросы состоят из макрокоманд. Макрокоманды записываются в строки первого столбца таблицы. Второй столбец служит для записи примечаний.
Если щелкнуть мышью по ячейке первого столбца макроса, то раскроется список возможных макрокоманд, из которого следует выбрать нужную макрокоманду..
При создании формы в нее можно поместить кнопку запуска макроса. Это можно сделать буксировкой имени макроса из окна БД непосредственно в окно конструктора формы.
Задание 1. Создать форму-меню с кнопками для выполнения ранее составленных запросов, вывода форм и отчетов, а также выхода из Aсcess. Форма-меню должна появляться автоматически сразу после загрузки базы данных. В форме должна быть также кнопка для закрытия базы данных и выхода из Aсcess.
Технология.
- в окне базы данных в списке объектов выбрать Макросы. Щелкнуть по кнопке Создать.
- в окне макроса в столбце Макрокоманды развернуть список и выбрать макрокоманду Открыть форму.
- в строку Имя формы ввести текст: МЕНЮ.
- закрыть и сохранить макрос, присвоив ему имя Autoexec.
Создание пользовательского ниспадающего меню
Задание 2. Создать ниспадающее меню для управления базой данных, содержащее категории "Формы" и "Отчеты" с пунктами (командами) для открытия ранее составленных форм и отчетов.
Технология
Цель работы: Конструирование и использование SQL запросов к базе данных
Запрос - это средство Access для выборки данных из базы данных в форме таблицы, выполняемой по заданному условию, а также для выполнения определенных действий над табличными данными.
Запросы по существу являются псевдотаблицами и их можно использовать также как и таблицы. Применение запросов позволяет избежать дублирования данных в таблицах и обеспечивает максимальную гибкость при поиске и отображении данных БД. С помощью запроса создается временная таблица - динамический набор данных.
Запросы делятся на:
В Access 2000 используется версия SQL Jet SQL (Microsoft Jet Database Engine SQL).
Все запросы можно разделить на 2 группы:
- запросы-выборки;
- запросы-действия.
Запросы-выборки извлекают данные из таблиц в соответствии с заданными условиями
Запросы-действия предназначены для выполнения требуемых действий над данными таблиц. Они позволяют добавлять, изменять или удалять данные.
Задание 1. Просмотреть запрос Выборка 2, созданный в лабораторной работе №2, в командах SQL.
Технология
Появится окно SQL, содержащее эквивалентную QBE-запросу инструкцию SQL.
Задание 2. Изменить структуру запроса Выборка 2, удалив из запроса поле Номер зачетной книжки.
Технология
SQL-запросы на выборку
SQL-запросы на выборку создаются инструкцией SELECT. При выполнении этой операции ядро базы данных Microsoft Jet находит указанную таблицу или таблицы, извлекает заданные столбцы, выделяет строки, соответствующие условию отбора, и сортирует или группирует результирующие строки в указанном порядке. Инструкция SELECT не изменяет данные в базе данных.
Команда имеет синтаксис:
SELECT [предикат] список_полей
FROM имена_таблиц
[WHERE критерий_поиска]
[GROUP BY критерий_группировки ]
[HAVING групповой_критерий]
[ORDER BY критерий_столбца]
Аргументы инструкции SELECT имеют следующий смысл:
В этом случае :
таблица указывает имя таблицы, из которой должны быть отобраны записи.
поле_1, поле_2 указывают имена полей, из которых должны быть отобраны данные. Если включить несколько полей, они будут извлекаться в указанном порядке. Поля в списке разделяются запятой.
псевдоним_1, псевдоним_2 задают имена, которые станут заголовками столбцов вместо исходных названий полей (столбцов) в таблице.
Примечание. Если имена полей, таблиц, псевдонимы содержат пробелы, или знаки разделители, то они должны заключаться в квадратные скобки (например, Студент.[Номер зачетной книжки]).
Задание 3. Создать SQL-запрос с именем Задание 3 для выборки всех сведений о студентах из таблицы Студент.
Технология
SELECT *
FROM Студент;
Примечание. Если при наборе SQL-запроса требуется перейти на новую строку, следует использовать клавишную команду Ctrl+Enter . Инструкции SQL должны заканчиваться ;.
Задание 4. Создать SQL-запрос Задание 4 для выборки фамилий и дат рождения студентов из таблицы Студент.
ALL используется для выбора всех записей, удовлетворяющих условию отбора, и действует по умолчанию.
DISTINCT используется для пропуска записей из выборки, содержащих повторяющиеся данные в перечисленных в запросе полях.
DISTINCTROW используется для пропуска всех записей, содержащих повторяющиеся данные в перечисленных в запросе полях. При этом просматриваются все, а не только выбранные записи.
TOP позволяет ограничить количество выводимых записей. Например, следующим запросом из выборки будут отобраны ФИО и дата рождения только из трех первых записей:
SELECT TOP 3 Фамилия, [Дата рождения]
FROM Студент;
Задание 5. Создать SQL-запрос Задание 5, с помощью которого вывести номера тех групп, сведения о студентах, из которых хранятся в таблице Студент.
Критерий_поиска задается выражением. Элементами выражения могут быть операторы, идентификаторы, функции, литералы и константы.
Операторы определяют операцию, выполняемую над одним или несколькими элементами. Используются операторы: >, <, =, <> (не равно), &, And, Or, Like, In, Between. Предложение WHERE может содержать до 40 выражений, связанных логическими операторами, такими как And и Or.
Оператор Like используется для сравнения строкового выражения с образцом в выражении SQL. Синтаксис оператора: выражение Like "образец"
Образец может содержать следующие подстановочные знаки:
Оператор In проверяет, совпадает ли значение выражения с одним из элементов указанного списка. Синтаксис оператора: выражение [Not] In (значение_1, значение_2, . . .)
Например, оператор Студент.ФИО In ('Иванов','Петров','Смирнов') определяет совпадает ли значение поля «ФИО» со значением одного из элементов списка.
Оператор Between определяет принадлежность значения выражения указанному диапазону.
Синтаксис оператора: выражение [Not] Between значение_1 And значение_2
Например, оператор Студент.[Дата рождения] Between #01/01/80# And #31/12/80# определяет принадлежность значения поля «Дата рождения» интервалу дат 1980 года.
Если один из аргументов оператора Between...And, выражение, значение_1 или значение_2, имеет значение Null, то оператор Between...And возвращает значение Null.
Поскольку подстановочные знаки, такие как символ звездочки * считаются текстовыми символами, их нельзя использовать в операторе Between...And.
Идентификаторы в выражении задают ссылку на значение поля и заключаются в квадратные скобки, если содержат пробелы или знака препинания.
Функция в выражении возвращает значение, найденное в результате расчета или другой операции.
Литерал в выражении представляет значение, например, число, строку или дату, которое используется именно в том виде, как оно записано. Даты заключаются в символы номера (#), а строки в прямые кавычки (") или одинарные кавычки (например,100, #1-янв-94#, "New York").
Константа (True, False, Да, Нет, Null) представляет значение, остающееся неизменным.
Задание 6. С помощью SQL-запроса Задание 6 сформировать список студентов заданной группы. Список должен содержать полные сведения о студенте.
Запрос должен содержать следующий текст:
SELECT *
FROM Студент
WHERE [Номер группы]=n;,
где n номер группы.
Примечание. Если номер группы требуется задавать во время выполнения запроса, то в Access критерий поиска можно задать условием [Номер группы] =[Введите номер группы]. Такой запрос является запросом с параметром.
Задание 7. С помощью SQL-запроса Задание 7 сформировать список студентов, фамилии которых начинаются на «К». Список должен содержать полные сведения о студенте.
Задание 8. С помощью SQL-запроса Задание 8 сформировать список студентов, фамилии которых начинаются на «А», «Б» и «В». Список должен содержать номер группы, фамилию и номер зачетной книжки студента.
Задание 9. С помощью SQL-запроса Задание 9 сформировать список студентов родившихся в заданном году. Список должен содержать номер группы, фамилию и дату рождения студента.
Задание 10. С помощью SQL-запроса Задание 10 найти студентов, обучающихся на коммерческой основе в заданной группе. Список должен содержать полные сведения о студенте.
ASC по возрастанию значений (действует по умолчанию);
DESC по убыванию
Задание 11. С помощью SQL-запроса Задание 11 сформировать список студентов родившихся в заданном году. Список должен содержать номер группы, фамилию и дату рождения студента и отсортирован по номеру группы.
Задание 12. С помощью SQL-запроса Задание 12 сформировать список студентов родившихся в заданном году. В список выводить полные сведения о студентах упорядоченные по убыванию значений поля коммерческий, а внутри поля коммерческий по полю номер группы.
статистическая_функция(поле) AS псевдоним
Статистические функции, например Sum, Count (количество записей, возвращаемых запросом), Avg (арифметическое среднее набора чисел), Min, Max (минимальное и максимальное значения из набора значений, содержащихся в указанном поле запроса), используются для вычисления итоговых значений.
Совместно с предложением GROUP BY инструкция SELECT может содержать предложения WHERE и HAVING. В этом случае предложение WHERE выявляет множество записей, соответствующих критерию_поиска. Только после этого в соответствии с критерием_группировки, множество записей объединяется в группы. Предложение HAVING определяет условия, которые накладываются на значения полученные в результате выполнения групповой операции (значение столбца статистическая_функция).
Задание 13. Составить QBE-запрос для подсчета количества коммерческих студентов в каждой группе.
Технология.
Количество коммерческих:Коммерческий
(новое и старое названия столбца разделены символом «двоеточие»).
Задание 14. Создать SQL-запрос с именем Задание 14, выполняющий подсчет количества коммерческих студентов в каждой группе, используя данные из таблицы Студент.
Запрос должен содержать следующий текст:
SELECT [Номер группы], count(Коммерческий) AS [Количество коммерческих]
FROM Студент
WHERE Коммерческий=TRUE
GROUP BY [Номер группы]
ORDER BY [Номер группы];
Выполнить запрос. Сравнить результаты работы запросов из заданий 13 и 14. Просмотреть, сравнить и проанализировать структуры этих запросов сначала в режиме SQL, затем в режиме конструктора.
Примечание. При создании сложного SQL-запроса можно с целью проверки синтаксиса запроса открывать его в окне конструктора QBE-запроса. Если команды запроса содержат орфографические или синтаксические ошибки, то Access не сможет преобразовать SQL-запрос в QBE-запрос и выведет окно сообщения с описанием ошибки.
Соединение таблиц
SQL позволяет конструировать запросы к данным одной или нескольких таблиц.
В результате выполнения такого запроса осуществляется соединение таблиц. При выполнении соединения имена таблиц перечисляются в предложении запроса FROM.
Пример. SELECT*
FROM Группа,Студент;
Так как в запросе не определены связи между таблицами, то результатом запроса будет декартово произведение таблиц (каждая запись таблицы Группа будет соединена со всеми записями таблицы Студент).
Связи между таблицами в SQL могут быть установлены с помощью предложений WHERE и INNER JOIN.
1. Связь между таблицами с помощью предложения WHERE.
Если в качестве критерия поиска в предложении WHERE задаются условия, основанные на равенствах, то выполняется внутреннее соединение 2-х таблиц. Такое соединение называется эквисоединением.
Синтаксис запроса на соединение будет иметь вид:
SELECT список_полей
FROM таблица_1 , таблица_2
WHERE таблица_1.поле_1 оператор таблица_2.поле_2
где:
таблица_1, таблица_2 - имена таблиц, записи которых подлежат объединению;
поле_1, поле_2 - имена объединяемых полей. Если эти поля не являются числовыми, то должны иметь одинаковый тип данных и содержать данные одного рода, однако, поля могут иметь разные имена.
оператор -любой оператор сравнения: "=," "<," ">," "<=," ">=," или "<>".
Соединение может выполняться и по нескольким полям. В этом случае условие объединения задается:
таблица_1.поле_1 оператор таблица_2.поле_1 AND таблица_1.поле_2 оператор таблица_2.поле_2)
Пример. SELECT*
FROM Группа,Студент
WHERE Группа.[Номер группы]=Студент.[Номер группы];
Множественное соединения (более чем двух) таблиц будет выполняется, если пары связанных полей связать логической операцией AND.
Синтаксис запроса на множественное соединение:
SELECT список_полей
FROM таблица_1 , таблица_2 , таблица 3
WHERE таблица_1.поле_1 оператор таблица_2.поле_2 AND таблица_2.поле_1 оператор таблица_3.поле_1
Задание 15. Составить SQL-запрос для подсчета количества коммерческих студентов по каждой специальности.
Запрос должен содержать поля: Наименование специальности и количество коммерческих студентов.
Множество записей полученных по запросу должно представлять собой соединение таблиц Студент, Группа и Специальность.
При разработке этого запроса следует придерживаться следующей технологии: создать внутреннее объединение двух таблиц, затем выполнить внутреннее объединение трех таблиц и если оно будет выполнено верно, отредактировать запрос в соответствии с заданием.
Технология.
Текст запроса:
SELECT Группа.[Номер специальности], Студент.[Номер группы], Студент.Фамилия,
Студент.Коммерческий
FROM Студент, Группа
WHERE Студент.[Номер группы]=Группа.[Номер группы];
SELECT Специальность.[Наименование специальности], Группа.[Номер специальности], Студент.[Номер группы], Студент.Фамилия, Студент.Коммерческий
FROM Студент, Группа, Специальность
WHERE Специальность.[Номер специальности]=Группа.[Номер специальности] AND Студент.[Номер группы]=Группа.[Номер группы];
Вероятно текст запроса будет иметь следующий вид:
SELECT Специальность.[Наименование специальности], COUNT(ФИО) AS [Количество коммерческих студентов]
FROM Студент, Группа, Специальность
WHERE Специальность.[Номер специальности]=Группа.[Номер специальности] AND Студент.[Номер группы]=Группа.[Номер группы] AND Студент.Коммерческий=Yes
GROUP BY Специальность.[Наименование специальности];
Задание 16. Составить SQL-запрос для подсчета количества бюджетных (некоммерческих) студентов по каждому факультету
Запрос должен содержать поля: Наименование факультета и Количество бюджетных студентов.
Задание 17. Составить SQL-запрос для подсчета итоговой стоимости платы за обучение коммерческими студентами по каждой специальности.
Запрос должен содержать поля: Наименование специальности и Итого по специальности.
Итого по специальности рассчитывать исходя из стоимости обучения по специальности и количества коммерческих студентов, обучающихся по специальности.
2. Связь между таблицами с помощью предложения INNER JOIN.
В этом случае синтаксис запроса на соединение будет иметь вид:
SELECT список_полей
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2
Пример. SELECT*
FROM Группа INNER JOIN Студент
ON Группа.[Номер группы]=Студент.[Номер группы];
Если задаются условия, основанные на равенствах, то выполняется внутреннее соединение 2-х таблиц.
Чтобы установить связь по нескольким полям, следует связать несколько предложений ON в инструкции JOIN:
SELECT список_полей
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_1 {AND| OR}
ON таблица_1.поле_2 оператор таблица_2.поле_2;
Предложения JOIN могут быть вложенными, в таком случае будет выполняться множественное соединение. Синтаксис запроса:
SELECT список_полей
FROM таблица_1 INNER JOIN (таблица_2 INNER JOIN таблица_3
ON таблица_2.поле_1 оператор таблица_3.поле)_
ON таблица_1.поле_1 оператор таблица_2.поле_1 {AND| OR}
ON таблица_1.поле_2 оператор таблица_2.поле_2;
Задание 18. С помощью SQL-запроса сформировать список групп с указанием наименования факультетов, к которым они относятся.
Запрос должен содержать поля: Номер группы и Наименование факультета.
В запросе использовать предложение INNER JOIN.
Задание 19. С помощью SQL-запроса сформировать список коммерческих студентов на оплату за обучение, упорядоченный по наименованию специальности. Список должен содержать поля Наименование специальности, Фамилия и Стоимость обучения. В запросе использовать предложение INNER JOIN.
Задание 20. Составить SQL-запрос для подсчета итоговой стоимости платы за обучение коммерческими студентами по каждой специальности в разрезе факультетов.
Запрос должен содержать поля: Наименование факультета, Наименование специальности и Итого по специальности.
В запросе использовать предложение INNER JOIN.
Внешнее соединение таблиц
Для выполнения внешнего соединения таблиц в любом предложении FROM используют предложения LEFT JOIN или RIGHT JOIN.
Синтаксис запроса на внешнее соединение:
SELECT список_полей
FROM таблица_1 {LEFT | RIGHT } JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2
LEFT JOIN используется для создания левого внешнего объединения, при котором все записи из главной таблицы включаются в динамический набор, даже если в подчиненной таблице нет соответствующих им записей.
RIGHT JOIN используется для создания правого внешнего объединения, при котором все записи из подчиненной таблицы включаются в динамический набор, даже если в главной таблице нет соответствующих им записей.
Примечание. Операции LEFT JOIN или RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в операцию LEFT JOIN или RIGHT JOIN.
Задание 21. Составить SQL-запрос для определения по каждой специальности номеров групп.
Запрос должен содержать поля Наименование специальности и Номер группы.
В запросе использовать предложение LEFT JOIN.
Задание 22. Создать копию запроса по заданию 21. Присвоить ему имя Задание 22. Изменить запрос так, чтобы результатом являлось правое внешнее объединение таблиц Группа и Факультет.
Задание 23. Составить SQL-запрос, определяющий на основании таблиц Группа и Студент количество студентов в группах. С помощью запроса определить по каким группам отсутствуют сведения о студентах.
Задание 24. Составить SQL-запрос, формирующий список старост групп.
Перед составлением запроса внести следующие изменения в базу данных:
Список студентов, создаваемый запросом должен содержать следующие поля: Наименование факультета, Номер группы, Фамилия, Дата рождения и Номер зачетной книжки старосты.
В объединение включить все группы из таблицы Группа, и те факультеты из таблицы Факультет, сведения о которых имеются в таблице Группа.
Сведения о старостах упорядочить в разрезе факультетов, по номерам групп.
Использование вычисляемых полей в SQL-запросах
Список полей в команде SELECT кроме полей может содержать выражения. Например, для вычисления стоимости обучения с учетом НДС в список полей следует включить выражение:
Специальность.[Стоимость обучения]*(1+НДС) AS [Стоимость с учетом НДС]
Заголовком столбца для значений, полученных в результате вычисления выражения, будет Стоимость с учетом НДС.
Для вычисляемых полей допускается сортировка, задание условий отбора, расчет итоговых значений.
Например, необходимо упорядочить выборку по возрастанию значений стоимости с учетом НДС, в запрос следует добавить предложение
ORDER BY Специальность.[Стоимость обучения]*(1+НДС)
Если требуется найти итоговую стоимость в разрезе факультетов, необходимо выполнить группировку полученного по запросу объединения по наименованию факультета
GROUP BY Группа.[Номер факультета], в список полей включить групповую операцию SUM(Специальность.[Стоимость обучения]*(1+НДС))
Пример. Определить итоговые стоимости обучения с учетом НДС по номерам специальностей.
SELECT Специальность.[Номер специальности], sum(Специальность.[Стоимость обучения] * (1+НДС)) AS [Итоговая стоимость с учетом НДС]
FROM Специальность INNER JOIN ( Группа INNER JOIN Студент
ON Студент.[Номер группы] = Группа.[Номер группы])
ON Группа.[Номер специальности] = Специальность.[Номер специальности]
WHERE Студент.Коммерческий=Yes
GROUP BY Специальность.[Номер специальности];
Задание 25. Составить SQL-запрос для получения справки по стоимости обучения коммерческих студентов с учетом НДС. Принять, что стоимость обучения с учетом НДС коммерческого студента равна стоимости обучения по выбранной им специальности, умноженной на (1+0,2), где 0,2 величина НДС.
В справку выводить следующие сведения о студенте: Номер группы, Наименование специальности, Номер зачетной книжки, Фамилия и Стоимость обучения с учетом НДС.
Сведения о студентах упорядочить по убыванию значений Стоимость обучения с учетом НДС.
Задание 26. Составить SQL-запрос для получения справки, содержащей итоговые данные о стоимости обучения с учетом НДС по специальностям.
В справку выводить Наименование специальности и Итоговую стоимость обучения с учетом НДС.
Создание новой таблицы
Создание новой таблицы выполняется командой CREATE TABLE. В этой команде выполняется описания новой таблицы, ее полей и индексов.
Синтаксис команда:
CREATE TABLE таблица (поле_1 тип [(размер)] [NOT NULL] [индекс_1]
[, поле_2 тип [(размер)][NOT NULL] [индекс_2] [, ...]]
[, CONSTRAINT составнойИндекс [, ...]])
где:
Примечание: Если для поля добавлено ограничение NOT NULL, то при добавлении новых записей это поле должно содержать допустимые данные.
Пример. Создается новая таблица с двумя текстовыми полями и числовым полем. Поле SSN делается ключевым полем.
CREATE TABLE НоваяТаблица (Имя TEXT, Фамилия TEXT, SSN INTEGER
CONSTRAINT МойИндекс PRIMARY KEY);
Задание 27. Составить SQL-запрос на создание новой таблицы с именем Дисциплина1. Таблица Дисциплина1 должна иметь следующий состав полей:
После выполнения запроса проверить существование таблицы Дисциплина1.
Задание 28. Составить SQL-запрос на создание новой таблицы с именем Вспомогательная1.
В таблицу Вспомогательная1 включите только одно поле:
- Оценка - числовое, байтовое.
Задание 29. Составить SQL-запрос на создание новой таблицы с именем Ведомость_1.
Таблица должна иметь следующий состав полей:
QSL-запросы на изменение
Синтаксис запроса на добавление одной записи:
INSERT INTO таблица [(поле_1[, поле_2[, ...]])]
VALUES (значение_1[, значение_2[, ...])
Примечание. Если создать в режиме SQL запрос на добавление с помощью инструкции INSERT INTO...VALUES, сохранить и закрыть его, а затем открыть снова, то предложение VALUES будет преобразовано в предложение SELECT. Это не повлияет на результат выполнения запроса.
Если требуется запросом выполнить добавление в таблицу нескольких записей, данные которых уже имеются в других таблицах, то следует составить запрос в соответствии со следующим синтаксисом:
INSERT INTO таблица_приемник
SELECT список_полей
FROM таблица_источник
Задание 30. Составить SQL-запрос на добавление записи в таблицу Дисциплина.
С помощью запроса добавить следующие данные:
Код дисциплины |
Наименование дисциплины |
Лекции |
Практика |
1 |
Информатика |
100 |
20 |
2 |
Математика |
200 |
50 |
Задание 31. Составить SQL-запрос на добавление записи в таблицу Вспомогательная.
Полю Оценка задать значение NULL (нет значения).
Задание 32. Составить SQL-запрос на добавление записей в таблицу Ведомость_1.
В таблицу Ведомость_1 необходимо поместить данные, полученные в результате объединения таблиц Студент, Дисциплина и Вспомогательная. Причем в объединение следует включить сведения только об одной дисциплине, код которой равен 1. Запрос на объединение должен иметь вид:
SELECT Студент.[Номер группы], Дисциплина1.[Код дисциплины], Дисциплина1.[Наименование дисциплины], ФИО, [Номер зачетной книжки], Оценка
FROM Студент, Дисциплина1, Вспомогательная1
WHERE Дисциплина1.[Код дисциплины]=1;
Изменить запрос таким образом, чтобы он выполнял добавление записей, полученных в результате объединения в таблицу Ведомость_1.
В режиме таблицы заполните столбец Оценка таблицы Ведомость_1 оценками.
Создание новой таблицы на основе данных других таблиц
Выполняется командой SELECT...INTO. Синтаксис команды:
SELECT поле_1[, поле_2[, ...]] INTO новая_таблица
FROM таблица_источник
Задание 33. Отладить следующий запрос на создание новой таблицы с именем Ведомость_2.
SELECT Студент.[Номер группы], Дисциплина1.[Код дисциплины],
Дисциплина1.[Наименование дисциплины], Фамилия, Студент.[Номер зачетной книжки], Оценка
INTO Ведомость_2
FROM Студент, Дисциплина1, Вспомогательная1
WHERE Дисциплина1.[Код дисциплины]=2;
Задание 34. Составить SQL-запрос на создание новой таблицы Староста. В таблицу поместить сведения из таблицы Студент о тех студентах, кто является старостами. Сведения о старостах содержаться в таблице Группа.
Таблица должна иметь следующий состав полей:
Изменение значений полей
Выполняется командой Update. С помощью этой команды можно изменять некоторые или все значения в одной или нескольких записях. Команда содержит предложение Update, позволяющее указать имя таблицы, для которой выполняется операция, и предложение Set, определяющее изменение, которое необходимо выполнить для определенного поля.
Задание 35.
Составить SQL-запрос на увеличение стоимости обучения на 20 % для двух номеров специальности.
Текст запроса:
UPDATE Специальность
SET [стоимость обучения]=[стоимость обучения]*1.2
WHERE [номер специальности]=n1 or [номер специальности]=n2,
где n1 и n2 номера специальностей
Задание 36. Составить SQL-запрос на перевод всех коммерческих студентов, обучающихся в заданной группе, в новую группу.
Задание 37. Составить SQL-запрос на перевод коммерческого студента, имеющего заданный номер зачетной книжки, на обучение на бюджетной основе.
Исключение записей из таблицы
Записи из таблицы можно исключить с помощью команды обновления Delete. По этой команде удаляются только целые записи, а не отдельные значения полей. Синтаксис команды:
DELETE FROM <имя_таблицы>.
В результате выполнения этой команды заданная таблица очистится. Если требуется удалить не все, а только некоторые записи, в команде можно использовать предложение WHERE.
Задание 38. Составить SQL-запрос для удаления из таблицы Группа той группы, в которой не учатся студенты.
Текст запроса:
DELETE
FROM Группа
WHERE [Группа].[Номер группы]=n,
где n номер нужной группы.
Задание 39. Составить SQL-запрос на удаление из таблицы Студент студента с заданным номером зачетной книжки.
СОДЕРЖАНИЕ
[0.0.1] Методические указания [0.0.1.1] Утверждено [0.1] Лабораторная работа № 1. Создание таблиц [0.2] Лабораторная работа № 2. Конструирование запросов [0.3] Лабораторная работа № 3. Конструирование форм [0.4] Лабораторная работа № 4. Конструирование отчетов [0.5] Лабораторная работа № 5. Создание макросов [0.6] Лабораторная работа № 6. Конструирование SQL запросов [0.7] Библиографический список |
N группы
Наименование cgспспец
Стоимость
N специальности
Специальность
Наименование
Декан
фак-та
Факультет
Коммерческий
Дата рождения
N группы
Фамилия
N зачетн. книжки
Студент
Курс
N cпециальности
N факуль-тета
Группа
EMBED Word.Picture.8