SlideShare a Scribd company logo
1 of 28
Download to read offline
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФГБОУ ВПО «УФИМСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ЭКОНОМИКИ И СЕРВИСА»
Кафедра «Информатикаи ИКТ»
БАЗЫ ДАННЫХ:
МАНИПУЛИРОВАНИЕ ДАННЫМИ
НА ЯЗЫКЕ SQL в СУБД MS Aсcess 2007
Практикум
Уфа
2013
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2
Составитель: М.А. Абросимова
УДК 004.9
А16
Базы данных: Манипулирование данными на языке SQL в СУБД MS
Aсcess 2007: Практикум / Сост.: М.А. Абросимова. – Уфа: Уфимский государ-
ственный университет экономики и сервиса, 2013. – 26 с.
Практикум подготовленв соответствиис федеральным государственным
стандартом высшего профессионального образования для направления подго-
товки 080500.62 Бизнес-информатика и 230700.62 Прикладная информатика.
Практикум содержит пошаговое описание технологии создания и вы-
полнения инструкций SQL в СУБД MS Access для выборки, соединения и объ-
единения данных, а также включает задания для самостоятельного выполне-
ния.
Илл.: 11. Табл.: 5. Библиогр.: 7.
Рецензенты:
ГалиаскаровФ.М.,д-р физ.-мат. наук, профессор, заведующий кафед-
рой«Информатика и ИТ» УФ РГТУ
Абрамова М.В., канд. техн. наук, доцент доцент кафедры «Информаци-
онные технологии в управлении» БАГСУ
© АбросимоваМ.А., 2013
© Уфимский государственныйуниверситет
экономикии сервиса, 2013
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
3
ОГЛАВЛЕНИЕ
ОСНОВНЫЕ ПОНЯТИЯ ..............................................................................4
НАЧАЛО РАБОТЫ........................................................................................5
ЭЛЕМЕНТЫ SQL...........................................................................................5
ИНСТРУКЦИИ И ИМЕНА В SQL............................................................................ 6
ТИПЫ ДАННЫХ SQL........................................................................................... 8
СИНТАКСИС SQL............................................................................................... 8
РЕЛЯЦИОННЫЕ ОПЕРАЦИИ .................................................................................. 8
ИНТЕРФЕЙС СОЗДАНИЯ ЗАПРОСОВ SQL............................................................. 10
ВЫБОРКА ДАННЫХ..................................................................................11
Ограничение отношения................................................................................11
Проекция отношения .....................................................................................11
СОЗДАНИЕ ЗАПРОСА НА ВЫБОРКУ ДАННЫХ........................................................ 11
СОХРАНЕНИЕ ЗАПРОСА ..................................................................................... 13
МОДИФИКАЦИЯ ЗАПРОСА ................................................................................. 13
ИСПОЛЬЗОВАНИЕ ЛОГИЧЕСКИХ ВЫРАЖЕНИЙ ..................................................... 14
Поиск в диапазоне ..........................................................................................14
Поиск в списке................................................................................................15
Неточный поиск.............................................................................................15
Вычисления в запросе .....................................................................................16
Группировка данных в запросе .......................................................................17
ВЫБОРКА ИЗ НЕСКОЛЬКИХ ТАБЛИЦ.................................................................... 19
СОЕДИНЕНИЕ ОТНОШЕНИЙ.................................................................19
ОБЪЕДИНЕНИЕ ДАННЫХ........................................................................21
УДАЛЕНИЕ ЗАПРОСОВ ............................................................................22
КОНТРОЛЬНЫЕ ВОПРОСЫ ....................................................................23
ЛИТЕРАТУРА..............................................................................................23
ПРИЛОЖЕНИЕ............................................................................................25
ТИПЫ ДАННЫХ В ЯЗЫКЕ SQL MS ACCESS ......................................................... 25
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
4
Практикум нацелен на формирование компетенции студента манипули-
ровать информационными ресурсами средствами СУБД, представлять содер-
жание прикладных и информационных процессов.
Основные понятия
База данных(БД) - поименованная совокупность взаимосвязанных дан-
ных, отображающая состояние объектов и их отношений в некоторой пред-
метной области, и используемая для удовлетворения информационных по-
требностейпользователей. Базы данных в СУБД МS Access принадлежат к ти-
пу реляционных баз данных.
Объект предметной области – любой различимый объект реального
мира, информациюо котором нужно хранить в базе данных. Например, объект
«Сотрудники», объект «Товары».
Реляционная база данных - база данных, состоящая из связанных
таблиц - отношений. К таблицам баз данных можно обращаться с запросамии
выводить найденную информацию на экран. Реляционная модель управления
данными была предложена Эдгаром Коддом (1923 – 2003) в начале 1970-х го-
дов. Подавляющее количество баз данных в сфере экономики и управления
построено по реляционной модели данных.
Реляционнаяалгебра - набор операций над отношениями базы данных,
результатом каждой из которых является отношением: объединение, пересе-
чение, разность, декартово произведение, ограничение (выборка), проекция,
соединение, деление. Операции реляционнойалгебры также называют реляци-
онными операциями.
СУБД – программная система, предназначенная для создания баз дан-
ных и централизованного управления их ресурсами с целью предоставления
данных пользователям и программным средствам по их запросам.
База данных в СУБД - файл, состоящий из таблиц и других информа-
ционных объектов (запросов, форм, отчетов, индексов и пр.).
Таблица базы данных (отношение) - информационная объект базы
данных, состоящий из записей.
Запись (кортеж) - это полный набор данных об объекте предметной об-
ласти: клиенте, книге, событии и т.д. Запись представляется в виде строки.
Структура всех записейтаблицы одинакова. Количество записей в таблице яв-
ляется переменным.
Поле (домен) – это набор данных одного типа в таблице, представляю-
щих значения атрибутов (свойств) объекта предметной области. Например,
фамилии всех сотрудников. Для представления поля используется столбец.
Поле имеет имя и значения.
Тип данных— атрибут, определяющий, какого рода данные могут хра-
ниться в поле: целые числа, символы, данные денежного типа, метки времени
и даты, двоичные строки и пр.
Реляционные операции – операции над отношениями в реляционных
базах данных, совершаемые по запросу пользователя: выборка, проекция,
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
5
объединение, соединение и пр.
Запрос – сообщение, направляемое СУБД пользователем или приложе-
нием, которое активизирует действия выборки, вставки или удаления данных.
Запрос адресуется к таблице.
Язык запросов – язык программирования в СУБД, обеспечивающий
извлечение данных из базы данных.
SQL – стандартныйязык запросов, используемый для взаимодействия с
данными в реляционных СУБД.
Инструкция (оператор) - наименьшая автономная часть языка про-
граммирования, описывающая действие с данными, создаваемая пользовате-
лем и выполняемая СУБД по команде пользователя.
Результирующая таблица - временная таблица базы данных, образо-
ванная на основе информации, хранящейся в базовых таблицах, в результате
работы запроса.
Агрегатная функция – функции, которая совершает действие над сово-
купностью одинаковых полей в группе записей
Практикум содержит пошаговое описание технологии создания и вы-
полнения инструкции SQL в СУБД MS Access для создания запросов на вы-
борку данных (записей), а также включает задания для самостоятельного вы-
полнения.
Начало работы
СУБД – программная система, предназначенная для создания баз дан-
ных и централизованного управления их ресурсами с целью предоставления
данных пользователям и программным средствам по их запросам.
Основным инструментарием СУБД MS Access являются конструкторы
таблиц, запросов, экранныхформ, отчётов, макросов и модулей. Арсенал этих
средств позволяет создавать все информационные объекты баз данных, а так-
же создавать скрипты на языке VBA и, следовательно, разрабатывать неболь-
шие приложения баз данных. Профессиональному использованию MS Access
мешает отсутствие ряда механизмов, необходимых в многопользовательских
БД (например, триггеров, генератора exe-файлов и др.). На сегодняшний день
MS Access является файл-сервернойСУБД со всеми ограничениями, характер-
ными для данного класса СУБД.
Однако в силу доступности MS Access удобно использовать для приоб-
ретения первых навыков работы с базой данных и языком SQL, конструктор
которого также входит в состав этой СУБД.
Для получения представления о SQL будем использовать учебную базу
данных СУБД MS Access «Борей 2007».
Задание 1. Запустите СУБД MS Access.
ЭлементыSQL
SQL (Structured Query Language - язык структурированных запросов) -
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
6
язык, используемыйдля взаимодействия с данными в реляционных СУБД [1].
SQL является единственным стандартным языком для реляционных СУБД,
официальный стандарт языка был опубликован в 1986 г., разработан IBM.
SQL - это язык программирования, предназначенный для работы с
наборамифактов и отношениями между ними. Как любой язык программиро-
вания, хотя он не объявляется полноценным языком программирования, а ха-
рактеризуется как язык взаимодействия с СУБД, включает множество ин-
струкций, предписывающих СУБД выполнить определенное действие с дан-
ными: создание новых или изменение существующих данных, извлечение
данных, управление доступом к данным и пр. [3].
В SQL определены несколько подмножеств языка:
DDL (Data Definition Language) - язык определения структур и ограничений
целостности баз данных. Сюда относятся команды создания и удаления баз
данных; создания, изменения и удаления таблиц; управления пользователями
и т.д.
DML (Data Manipulation Language) - язык манипулирования данными: добав-
ление, изменение, удаление и извлечение данных, управления транзакциями.
DQL (Data Query Language) – язык выборки данных: формирование запросов.
DCL Data Control Language) - язык управления данными: управление доступом
к информации, находящейся внутри базы данных.
SQL характеризуется как непроцедурный язык (описательный, деклара-
тивный), в нем нет операторов проверки условий и ветвления, перехода, цик-
лов и т.д. Запрос к базе данных не содержит инструкций по выполнению кон-
кретных операций, а содержит лишь информацию о желаемом результате.
Примечание. В СУБД МS Access доступен также язык запросов QBE (Query
By Example - запрос по образцу). QBE – также непроцедурный язык, но это
язык запросов для начинающих пользователей. QBE можно характеризовать
как визуальный язык, т.к. он основан на использовании бланка, заполняемого с
использованием визуальных средств МS Access, в результате чего создается
структура таблицы, удовлетворяющей критерию отбора записей из исход-
ной таблицы. При создании такого запроса автоматически формируется за-
прос на стандартном для СУБД языке SQL.
Инструкции и имена в SQL
Инструкция SQL начинается с команды.
Команда - ключевое слово, описывающее действие с данными в инструкции.
Типичные ключевые слова, представляющие команды в инструкциях:
CREATE создать
INSERT добавить
DELETE удалить
SELECT выбрать
Далее за командой указывается одно или несколько предложений.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
7
Предложение описывает данные, с которыми должна работать инструкция,
или уточняет действие, выполняемое инструкцией [2].
Каждое предложение начинается с ключевого слова. Ключевые слова в
предложениях инструкций:
WHERE где
FROM откуда
INTO куда
Многие предложения в качестве параметров содержат имена таблиц или
полей, в общем, называемые идентификаторами.
Идентификатор - имя, используемое для идентификации объекта.
Некоторые предложения могут содержать дополнительные ключевые
слова, константы и выражения.
Константа - значение, которое не изменяется, например число или
NULL.
Выражения - сочетание идентификаторов, операторов, констант и
функций, предназначенное для вычисления одного значения. Например, для
вычисления размера стипендии с учетом районного коэффициента нужно со-
здать выражение: Размер_стипендии_с_коэфф=Размер_стипендии*1,15. Для
поиска студента с фамилией «Иванов» Вы используете выражение: Фами-
лия='Иванов'
Имена таблиц и полей таблиц могут быть полными и краткими. Пра-
вила таковы:
 полное имя таблицы включает имя пользователя и имя таблицы, раз-
деленные точкой:
<имя_пользователя>.<имя_таблицы>
Примечание. Угловые скобки используются для описания шаблона имени таб-
лицы. При вводе конкретных имен они опускаются.
 при однопользовательскойработес базой данных можно в инструкции
имя пользователя опустить и использовать краткоеимя таблицы, т.е. только ее
название.
 полное имя поля состоит из полного (или краткого) имени таблицы,
которой принадлежит поле и имени поля, разделенных точкой:
<имя_таблицы>.<имя_поля>
 краткое имя поля, т.е. без указания имени таблицы в инструкциях SQL
недопустимо при выполнении действий с двумя или более таблицами.
 имена таблиц и полей могут вводиться и на английском, и на русском
языках.
 имена таблиц и полей могут вводится как с прописной буквы, так и со
строчной (маленькой) буквы.
 если имя поля состоит из нескольких слов, то между словами нужно
вставить нижнюю черту, например, Код_студента.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
8
Типыданных SQL
Тип данных— атрибут, определяющий, какого рода данные могут хра-
ниться в поле: целые числа, символы, данные денежного типа, метки времени
и даты, двоичные строки и пр. Тип данных влияет на правила указания крите-
риев отбора. Типы данных, используемые в SQL MS Access, приведены в
ПРИЛОЖЕНИИ.
Синтаксис SQL
Синтаксис языка — это набор правил, позволяющих правильно соче-
тать элементы языка.
Синтаксис SQL основан на синтаксисе английского языка. Например,
простая инструкция SQL, извлекающая список фамилий студентов с именем
Сергей, может выглядеть следующим образом:
SELECT Фамилия FROM Студенты WHERE Имя = 'Сергей';
При описании инструкций предполагается, что:
 текст, набранный прописными (большими) буквами (например,
SELECT, FROM, WHERE) является обязательным;
 текст, набранный строчными(маленькими) буквами и заключенный в
угловые скобки (например, <имя_базы_данных>) обозначает переменную,
вводимую пользователем. При написании имени переменной они опускаются;
 в квадратные скобки (например, [NOT NULL]) заключается необяза-
тельная часть инструкции;
 взаимоисключающиеэлементы инструкции разделяются вертикальной
чертой (например, [UNIQUE | PRIMARY KEY]);
 Access игнорируетразрывы строк в инструкции SQL. Чтобы инструк-
цию SQL было удобно читать как тому, кто ее написал, так и всем остальным,
можно каждое предложение рекомендуется начинать с новой строки;
 каждая инструкция заканчивается точкой с запятой (;). Точка с запя-
той может стоять как в конце последнего предложения, так и на отдельной
строке в конце инструкции SQL;
 если в запросе указывается одна инструкция, то точку с запятой мож-
но не вводить.
Задание 2. Откройте учебную базу данных «Борей 2007». Закройте за-
ставку базу данных «Борей 2007».
Реляционныеоперации
Операции, совершаемыенад отношениямив базе данных, описываются с
помощью законов реляционной алгебры/
Реляционнаяалгебра - набор операций над отношениями базы данных,
результатом каждой из которых также является отношением. Операции реля-
ционной алгебры также называют реляционными операциями. Реляционная
алгебра в том виде, в котором она была определена Э.Ф. Коддом, состоит из
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
9
двух групп по четыре оператора [4].
1. Теоретико-множественные операции - традиционные операции над множе-
ствами (но модифицированныес учетом того, что их операндами являются от-
ношения, а не произвольные множества): объединение, пересечение, разность
и декартово произведение.
Таблица 1
Реляционная опера-
ция
Описание
1. Объединение
отношений
возвращает отношение, содержащее все кортежи, которые принад-
лежат либо одному из двух заданных отношений, либо им обоим.
2. Пересечение
отношений
возвращает отношение, содержащее все кортежи, которые принад-
лежат одновременно двум заданным отношениям.
3. Вычитание от-
ношений
возвращает отношение, содержащее все кортежи, которые принад-
лежат первому из двух заданных отношений и не принадлежат вто-
рому.
4. Декартово про-
изведение отноше-
ний
возвращает отношение, содержащее все возможные кортежи, кото-
рые являются сочетанием двух кортежей, принадлежащих соответ-
ственно двум заданным отношениям.
2. Специальные реляционные операции: ограничение, проекция, соединение,
деление:
Таблица 2
Реляционная опе-
рация
Описание
1. Ограничение
отношения (вы-
борка)
возвращает отношение, содержащее все кортежи из заданного отно-
шения, которые удовлетворяют указанным условиям.
2. Проекция от-
ношения
возвращает отношение, содержащее все кортежи (подкортежи) задан-
ного отношения, которые остались в этом отношении после исключе-
ния из него некоторых атрибутов.
3. Соединение
отношений
возвращает отношение, содержащее все кортежи, которые принадле-
жат либо одному из двух заданных отношений, либо им обоим.
4. Деление отно-
шения
возвращает отношение, которое включает в себя атрибуты делимого
отношения, отличные от атрибутов отношения-делителя, и только те
кортежи, декартовы произведения которых с отношением-делителем
дают делимое отношение.
Часть операторов Кодда можно определить через другие операторы.
Например, соединение – это проекция выборки произведения, пересечение
выражается через разность, деление выражается через операторы вычитания,
декартового произведения и проекции/
Для описания реляционных операций в СУБД используются инструкции
языка запросов SQL. Результатом выполнения инструкций является таблица,
называемая «результирующая таблица».
Результирующая таблица - временная таблица базы данных, образо-
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
10
ванная на основе информации, хранящейся в базовых таблицах, в результате
работы запроса.
В лабораторном практикуме рассматриваются наиболее часто использу-
емые реляционные операции: выборка, проекция, объединение, соединение.
Для их реализации используется инструкция SELECT языка манипулирования
данными SQL.
Интерфейс созданиязапросовSQL
Создание и выполнение запросов SQL происходит с использованием
вкладки меню «Конструктор», доступнойпослекоманды «Конструктор запро-
сов» с вкладки меню «Создание».
Для перехода в режим работы с SQL нужно:
1. Предварительно включить содержимое базы данных, которое отключено
при созданиизапросов в целях безопасности. Для этого на Панели сообщений
нажмите кнопку «Параметры» и выберите параметр «Включить это содержи-
мое» (Рис.1).
Рис. 1. Панель сообщений
2. На вкладке «Создание» в группе «Другие» щелкнуть «Конструктор запро-
сов».
3. Закрыть диалоговое окно «Добавление таблицы».
Бланк запроса будет скрыт, отобразится вкладка создаваемого объекта в ре-
жиме SQL (Рис. 2).
Рис. 2. Окно конструктора запросов в режиме SQL
Примечание. Порядок создания запроса для извлечения данных аналогичен по-
рядкусоздания запросов для работы со структурой таблицами с одной лишь
О Б Л А С Т Ь Р Е Д А К Т И Р О В А Н И Я
В к л а д к а з а п р о с а
д л я в в о д а и н -
с т р у к ц и и S Q L
О Б Л А С Т Ь
П Е Р Е Х О Д А
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
11
разницей. При создании запроса для извлечения данных SQL используется по
прямому назначению, т.е. как язык запроса, поэтому при создании запроса
нет необходимости включать режим создания управляющего запроса и для
перехода в режим SQL щелкать на кнопке «Управление» вкладки меню «Кон-
структор».
4. Ввести инструкцию SQL.
5. На вкладке «Конструктор» в группе «Результаты» выбрать команду «Вы-
полнить».
В области редактирования появляется результирующая таблица - резуль-
тат выполнения запроса в виде таблицы с
записями, удовлетворяющими условию
запроса.
Задание 3. Перейдите в режим рабо-
ты с SQL.
Выборка
Ограничениеотношения
Ограничение возвращает отношение, содержащее все кортежи из задан-
ного отношения, которые удовлетворяют указанным условиям (Рис. 3) [4].
Синтаксис инструкции SELECT следующий:
SELECT * FROM <имя_таблицы>
что означает: получить все записи указанной таблицы. Символ звездочка (*)
указывает на то, что выбираются все записи.
Синтаксис инструкции SELECT может быть таким:
SELECT * FROM <имя_таблицы> WHERE <условие_отбора>
что означает: получить все записи таблицы, но удовлетворяющие условию
обора.
Проекция отношения
Операция проекции позволяет выделить
подмножество полей таблицы (Рис. 4). Синтак-
сис инструкции SELECT в этом случае следу-
ющий:
SELECT <список_выбора>FROM <имя_таблицы>
Что означает: получить содержимое по-
лей, указанных в списке выбора.
Создание запроса на выборку данных
Чаще всего в результате запроса требует-
ся получить некое подмножество записей и по-
лей таблицы, т.е. выполнить комбинацию вы-
борки и проекции.
Рис. 4. Проекция отношения
Рис. 3. Ограничение отношения
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
12
Полный синтаксис инструкции выборки данных
SELECT [ALL | DISTINCT] <список_выбора> FROM <имя_таблицы>, ...
[ WHERE <условие_отбора1> ] [ GROUP BY <условие_группировки>,... ]
[ HAVING <условие_отбора2>] [ORDERBY <условие_сортировки>[ASC | DESC],.
]
Описание разделов инструкции:
Таблица 3
Раздел Описание
ALL | DISTINCT в случае ALL в результат запроса выводятся все записи, удовлетво-
ряющие условиям отбора, в случае DISTINCT в результат запроса не
будут включаться повторяющиеся записи
<список_выбора> определяется поле или поля, включаемые в результат. Он может со-
стоять из имен одного или нескольких столбцов, или из одного сим-
вола * (звездочка), определяющего все поля. Элементы списка раз-
деляются запятыми.
FROM ключевое слово, определяющее источник данных, с которым будет
работать запрос, т.е. таблицу.
WHERE ключевое слово, задающее правило отбора записей, включаемых в
результат выборки.
<условие_отбора1> условие отбора записей по значению элемента данного, например,
записи, где значение поля «Фамилия» равно «Иванов». Синтаксис
раздела:
<имя_поля><оператор><’значение_поля’>
Операторы, используемые в выражениях приведены в табл. 2.
GROUP BY позволяет выполнять группировку по определенному критерию.
Обычно в качестве условия_группировки указывается имя поля.
HAVING позволяет построить записи из значений полей указанных в GROUP
BY и значений агрегатных функций, вычисленных для каждой
группы, образованной GROUP BY. Агрегатная функция – функция
статистической обработки данных: MAX, SUM, AVG и т.д.
<условие_отбора2> условие отбора записей для обработки агрегатной функцией агре-
гатной функции. Например,
HAVING AVG (Размер_платы_обучен) > 27,0
ORDER BY позволяет упорядочить данные, возвращаемые по результатам за-
проса, т.е. отсортировать. Обычно в качестве условия_сортировки
указывается имя_поля.
ASC ключевое слово, задающее прямой порядок сортировки по полю.
DESC ключевое слово, задающее обратный порядок сортировки по полю.
Как правило, используются сокращенныеформы инструкции, например,
для отборазаписей из таблицы «Студенты» по студентам из конкретной груп-
пы с сортировкой по полю «Фамилия» нужно написать и выполнить инструк-
цию:
SELECT Фамилия, Имя, Отчество, Группа FROMСтуденты WHERE Группа=’БИД-
21’ ORDERBY Фамилия;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
13
Необходимо помнить, что порядок предложений в операторе SELECT
должен строго соблюдаться (например,
GROUP BY должно всегда предшество-
вать ORDER BY), иначе это приведет к
появлению ошибок.
Задание 12.
1. Откройте таблицу «Товары» и пере-
именуйте поле «Цена по прейскуранту»
в «Цена_по_прейскуранту».
2. Создайтезапрос по выборке товаров с
их категориями, наименованиями и це-
ной по прейскуранту из таблицы «Това-
ры».
3. Выполните запрос.
4. Просмотрите результаты запроса в
полученной в результате выполнения
запроса таблице.
Сохранение запроса
Для сохранения запроса исполь-
зуйте команду «Сохранить как» систем-
ного меню MS Access.
Задание. Сохраните запрос под именем «Дешевые товары SQL». За-
кройте запрос.
Модификациязапроса
Вы можете модифицировать созданные уже запросы и выполнять их.
Для этого Вы должны:
1. открыть запрос;
2. перейти в режим SQL выбрав его на панели меню «Главная» в списке режи-
мов (Рис.5).
Задание 13.
1. Модифицируйте запрос внесением условия отбора записей: цена по прейс-
куранту должна быть меньшей 10 р.
2. Просмотрите результаты выполнения запроса.
3. Модифицируйте запрос внесением условия отборазаписей: сделайте выбор-
ку товаров категории «Напитки» с ценой по прейскуранту меньше 15 р.
4. Сохраните запрос.
5. Модифицируйте запрос "Дешевые товары SQL" путем задания сортировки
по возрастаниюпо полю «Цена_по_прейскуранту». Сохранитеего под именем
«Дешевые товары: сортировка».
Рис. 5. Переход из режима про-
смотра результирующей табли-
цы в режим редактирования за-
проса
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
14
Использованиелогических выражений
При составлении логических выражениях используются операторы:
Таблица 4
Операторы Описание
> , < , >= , <= , =
, <> , !=
операторы сравнения, могут применяться не только к чис-
ловым значениям, но и к строкам ("<" означает раньше, а
">" позже в алфавитном порядке) и датам ("<" раньше и
">" позже в хронологическом порядке).
IS NULL, IS NOT NULL операторы проверки поля на значение NULL
BETWEEN и NOT BE-
TWEEN.
операторы проверки на вхождение в диапазон
IN и NOT IN операторы проверки на вхождение в список
LIKE и NOT LIKE операторы проверки на вхождение подстроки
AND, OR, NOT операторы соединения отдельных операций
Поиск в диапазоне
Для отборазаписей, удовлетворяющих некоторому диапазону значений,
существует несколько способов:
 с использованием оператора AND и операторов сравнения
SELECT <список_выбора> FROM <имя_таблицы>
WHERE <имя_поля> >=Значение_1 AND <имя_поля> <= Значение_2
Например,
SELECT Краткое_наимен, Год_образования FROMИнституты
WHERE Год_образования >=1934 AND <= 1976;
 с использованием оператора BETWEEN AND
SELECT <список_выбора> FROM <имя_таблицы>
WHERE <имя_поля> BETWEEN Значение_1 AND Значение_2
Например,
SELECT Краткое_наимен, Год_образования FROMИнституты
WHERE Год_образования BETWEEN 1934 AND 1976;
 при использовании этих предложений с оператором NOT, указанным
перед определением диапазона, т.е., например, используется предложение
NOT BETWEEN AND, находятся все строки, не входящие в указанный диапа-
зон.
Задание 14.
1. Создайте новый запрос к таблице «Товары» для выборки товаров с мини-
мальным запасом не менее 10 единиц и с ценами в интервале от 10 до 80 руб.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
15
Используйте для этого оператор AND и операторы сравнения. В выборке
отобразить категорию, наименование цену по прейскуранту, минимальный за-
пас.
2. Сохраните запрос под именем «Товары умеренной стоимости». Не забудьте
прежде внести изменения в имена полей таблицы «Товары», если они состоят
из нескольких, еще несоединенных нижней чертой.
3. Модифицируйте запрос «Товары умереннойстоимости» под использование
оператора BETWEEN AND. Сохраните запрос.
4. Модифицируйте запрос «Товары умереннойстоимости» под использование
оператора NOT BETWEEN AND. Сохраните запрос.
Поиск в списке
Если несложно указать в качестве диапазона список значений, то можно
использовать для выборки данных оператор IN. Он проверяет записи на хож-
дение в список значений.
SELECT <список_выбора> FROM <имя_таблицы>
WHERE <имя_поля> IN (значение_1,… значение_N);
Например,
SELECT Краткое_наимен, Год_образования FROMИнституты
WHERE Год_образования IN(1934, 1967,1976);
Задание 15. Создайтеновыйзапрос к таблице «Товары» для выборкито-
варов с ценой по прейскуранту 10 и 30 руб. Сохраните запрос под именем
«Товары из списка».
Неточный поиск
Для поиска с символьным критерием, когда неизвестно точное написа-
ние подстроки, например, наименования института, фамилии и пр., использу-
ется оператор LIKE.
SELECT <список_выбора> FROM <имя_таблицы>
WHERE <имя_поля> LIKE <образец>;
Образец заключается в кавычки и должен содержать шаблон подстроки
для поиска. Обычно в шаблонах используются два символа:
 *(звездочка) - заменяет любое количество символов;
 _ (подчеркивание) - заменяет одиночный символ.
Символы в шаблонах можно указывать как в начале подстроки, так и в
конце. Например,
SELECT Краткое_наимен, Год_образования FROMИнституты
WHERE Краткое_наимен LIKE ‘ИТ*’;
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
16
Задание 16. Создайтеновыйзапрос к таблице «Товары» для выборкито-
варов, в наименовании которыхесть общий фрагмент «Ко». В выборкеотобра-
зить категорию, наименование цену по прейскуранту, минимальный запас. Со-
хранить запрос под именем «Товары на Ко».
Вычисления взапросе
При создании запроса можно предусмотреть вычисления над полями. В
конструкции<список_выбора>можно использовать константы, функции и их
комбинации с арифметическими операциями и скобками.
Выполнение арифметических операций
Синтаксис следующий:
SELECT <имя_поля1, f(имя_поля2) AS <новое_имя_поля2, имя_поля3,… >
FROM <имя_таблицы>
Например, чтобы узнать, сколько стоит обучение в год, выполнить ко-
манду:
SELECT Краткое_наимен, Год_образования, Размер_оплаты_обучен*2
AS Размер_оплаты_обучен_год FROMИнституты
AS – квалификатор, обеспечиваетсоздание нового имени поля. Если Вы
не используете его, то СУБД присвоит самостоятельно формальное имя.
В арифметических выражениях допускаются операции сложения (+),
вычитания (-), деления (/), умножения (*), а также различные функции (COS,
SIN, ABS - абсолютноезначение и т.д.). Также в запрос можно добавить стро-
ковую константу:
Задание 17. Создайте новый запрос к таблице «Товары». Включите в
бланк запроса поля «Категория», «Наименование», «Цена по прейскуранту».
Введите формулу расчета новой цены при условии, что она повышается на
10%. сохраните запрос под именем «Повышение цен».
Использование агрегатных функций
В SQL также определены агрегатные функции – функции, которые со-
вершают действия над совокупностью одинаковых полей в группе записей:
Таблица 5
Агрегатная функция Описание
AVG(<имя поля>) среднее по всем значениям данного поля
COUNT(<имя поля>) или
COUNT (*)
число записей в группе
MAX(<имя поля>) максимальное из всех значений данного поля
MIN(<имя поля>) минимальное из всех значений данного поля
SUM(<имя поля>) сумма всех значений данного поля
FIRST(<имя поля>) значение поля в первой записи группы
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
17
LAST(<имя поля>) значение поля в последней записи группы
Следует учитывать, что каждая агрегатная функция возвращает един-
ственное значение. Поэтому синтаксис инструкции аналогичен предыдущее-
му, за той лишь разницей, что вместо списка полей нужно указывать агрегат-
ные функцию от значения поля.
Например, запрос
SELECT Min(Размер_оплаты_обучен) AS Минимальн_оплата FROMИнституты;
вернет результат:
Задание 18.
1. Подсчитайте количество записей в таблице «Товары», в которых в имени
поля «Наименование» есть общий фрагмент «Ко».
2. Проверьте, правильно ли произведен расчет по результирующей таблице
созданного Вами выше запроса «Товары на Ко».
Группировка данныхв запросе
Группировка данных в операторе SELECT осуществляется с помощью
ключевого слова GROUP BY и ключевого слова HAVING, с помощью которо-
го задаются условия разбиения записей на группы.
GROUP BY неразрывно связано с агрегатными функциями, без них оно
практически не используется. GROUP BY разделяет таблицу на группы, а аг-
регатными функция вычисляет для каждой из них итоговое значение.
Например, инструкция:
SELECT Категория FROMТовары GROUP BY Категория;
вернет таблицу, где записи сгруппированы по категориям (Рис. 6а)
Для определения количества записейв каждой категории товаров нужно
определить агрегатную функцию COUNT(*) через запятую после определения
имени_поля, по которому выполняется группировка:
SELECT Категория, COUNT(*) AS Количество_товаров FROM Товары GROUP BY
Категория;
Тогда будет возвращена таблица, приведенная на Рис. 6б)
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
18
а) б)
Рис. 6. Результат выполнения операции выборки а) с группировкой данных;
б) с группировкой данных и применением агрегатной функции COUNT
Если требуется наложить ограничение на количество товаров в катего-
рии, то используется ключевое слово HAVING:
SELECT Категория, COUNT(*) AS Количество_товаров FROM Товары GROUP BY
Категория HAVING COUNT(*)>2;
Результатом выполнения такой инструкции будет следующая таблица
(Рис.7):
Рис. 7. Результат выполнения операции выборки с группировкой данных и
применением агрегатной функции COUNT и условием
на значение агрегатной функции
Задание 19. Создайте запрос с группировкой по полю «Должность» в
таблице «Сотрудники», при этом количество сотрудников с одной и той же
должностью в каждой группе должно быть > 3. Затем снимите ограничение.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
19
Сохраните запрос под именем «Сотрудники_группировка».
Выборка из нескольких таблиц
Очень часто возникает ситуация, когда выборку данных надо произво-
дить из нескольких связанных таблиц. В этом случае:
Синтаксис инструкции SELECT к связанным таблицам:
SELECT <список_ полных_ имен_ полей> FROM <список_ таблиц>;
Задание 20.
1. Создайте запрос к связанным таблицам «Заказы» и «Доставка». Выберите
данные по полю «Получатель из таблицы «Заказы» и полям «Организация» и
«Город» из таблицы «Доставка». Посмотрите результирующую таблицу. Со-
храните запрос под именем «Заказы и доставка».
2. Модифицируйте запрос, дополнив условием выборки: получателем должен
быть Березин.
3. Модифицируйте запрос, дополнив условием выборки: получателями долж-
ны быть Березин и Тимофеева.
Соединение отношений
Соединение - это процесс, когда две или более таблицы объединяются в
одну [5]. Операция соединения позволяет соединять строки из более чем од-
ной таблицы (по некоторому условию) для образования новых строк данных.
По сути производится выборка данных из двух таблиц и включение их в одну
результирующую таблицу, для чего используется инструкция SELECT.
Операция соединения возвращаетотношение, кортежи которого являют-
ся сцеплением кортежей первого и второго отношений и удовлетворяют неко-
торому условию. При этом является обязательным присутствие в кортежах
одинаковых значений атрибутов. Общие значения в
результирующем кортеже появляются один раз, а не
дважды (Рис. 8).
Операции соединения подразделяются на два
вида: внешние и внутренние. Внешние соединения
поддерживаются стандартом ANSI-92 и задаются
зарезервированным словом JOIN, в то время как
внутренние соединения (или просто соединения)мо-
гут задаваться как без использованиятакого слова(в стандарте ANSI-89), так и
с использованием слова JOIN (в стандарте ANSI-92).
Примечание. СтандартANSI-92 – стандарт SQL92. Сейчас действует стан-
дарт SQL2003.
Условие соединения, то есть условие сопоставления строк исходных
таблиц друг с другом, представляет собой логическое выражение.
Внешнее соединениевозвращает все записи из первой таблицы и только
те записииз второйтаблицы, для которых условие соединения принимает зна-
Рис. 8. Соединение
отношений
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
20
чение TRUE. Строки второй таблицы, не удовлетворяющие условию соедине-
ния (т.е. имеющие значение FALSE), получают значение NULL в результиру-
ющей таблице. Существует два вида внешнего соединения: левое и правое:
 левое внешнее соединение выбирает все записи первой (левой) табли-
цы, даже если они не соответствуют записям во второй (правой) таблице. Ис-
пользуется словосочетание LEFT JOIN.
 правоевнешнее соединение выбирает все записи второй (правой) таб-
лицы, даже если они не соответствуют записям в первой (левой) таблице. Ис-
пользуется словосочетание RIGHT JOIN.
Внутренние соединения объединяетзаписи из двух таблиц, если в связу-
ющих полях этих таблиц содержатся одинаковые значения. Используется сло-
восочетание INNER JOIN.
Синтаксис инструкции соединения в стандарте SQL92:
SELECT <список_ полных_ имен_ полей>
FROM <имя_таблицы_1> {INNER | LEFT | RIGHT} JOIN <имя_таблицы_2>
ON <условие_соединения>
В СУБД MS Access не поддерживает использование слова JOIN. Поэто-
му возможно реализовать операцию внутреннего соединения только с исполь-
зованием конструкции:
Синтаксис инструкции соединения в стандарте SQL89:
SELECT <список_ полных_ имен_ полей_таблицы_1>, <список_ полных_
имен_ полей_таблицы_2>
FROM <имя_таблицы_1>, <имя_таблицы_2> WHERE <условие_соединения>
Например, запрос:
SELECT Сотрудники.Фамилия, Поставщики.Фамилия, Поставщики.Имя, По-
ставщики.Должность FROMСотрудники, ПоставщикиWHERE Поставщи-
ки.Должность='Маркетолог'
позволяет получить новое отношение, содержащее соединенные записи:
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
21
Рис. 9. Результат выполнения операции соединения двух таблиц
Задание 21. Создайтезапрос к таблицам «Сотрудники» и «Поставщики»
для соединения данных по полям «Фамилия», «Имя», «»Отчество», «Долж-
ность», при этом в результирующую таблицу должны отобраться только
начальники отдела сбыта. Сохраните запрос под именем «Объединение».
Объединениеданных
Объединение возвращает отношение, содержащее все кортежи, которые
принадлежат либо одному из двух заданных отношений, либо им обоим (Рис.
9). Для объединения используется инструкция UNION.
Синтаксис операции объединения:
SELECT <список_ выбираемых_ полных_ имен_ полей1> FROM <пол-
ное_имя_таблицы1>[WHERE <условие_отбора>] UNION
SELECT <список_ полных_ имен_ полей2> FROM <полное_имя_таблицы2>
[WHERE <условие_отбора>];
Чтобы к результатам запросов можно было
применить операцию объединения, нужно, чтобы
они соответствовали следующим требованиям:
 запросы должны возвращать одинаковый
набор полей, причем порядок следования полей в
каждом запросе должен быть одинаковым;
 типы данных соответствующих полей в
запросах должны совпадать. Рис. 10. Объединение
отношений
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
22
Например, запрос на объединение, обращенный к таблицам «Сотрудни-
ки» и «Поставщики», содержащиеодинаковыепо смыслу и типу данных поля,
а именно «Фамилия», «Имя», «Должность»:
SELECT Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Должность FROM
СотрудникиUNIONSELECTПоставщики.Фамилия, Поставщики.Имя, Поставщи-
ки.Должность FROMПоставщики;
позволяет получить список и тех, и других работников по указанным полям
(Рис. 11):
Рис. 11. Результат выполнения операции объединения двух таблиц
Задание 22. Создайтезапрос к таблицам «Сотрудники» и «Поставщики»
для объединения данных по полям «Фамилия», «Имя», «»Отчество», «Долж-
ность», при этом в результирующую таблицу должны отобраться только
начальники отдела сбыта. Сохраните запрос под именем «Соединение».
Удаление запросов
При завершении лабораторногопрактикума у Вас должны быть созданы
запросы:
1. Дешевые товары SQL
2. Дешевые товары: сортировка
3. Товары умеренной стоимости
4. Товары из списка
5. Повышение цен
6. Товары на букву Ко
7. Сотрудники_группировка.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
23
8. Заказы и доставка.
9. Объединение
10. Соединение.
Для удаления запроса, выделите его в области перехода и щелкните
«Удаление» на вкладке меню «Конструктор» или нажмите клавишу DELETE
на клавиатуре.
Задание 23. Всезапросы удалять только ПОСЛЕ просмотра их препо-
давателем.
Контрольные вопросы
1. Что такое результирующая таблица?
2. Что такое инструкция SQL?
3. Охарактеризуйте два вида SQL?
4. Приведите минимальную инструкцию оператора выборки данных.
5. Что означает в инструкции SELECT ключевое слово ORDER BY?
6. Что означает в инструкции SELECT ключевое слово GROUP BY?
7. Что означают в инструкции SELECT ключевые слова ALL | DISTINCT?
8. Приведите инструкцию оператора выборки данных из списка.
9. В каком случае используются ключевые слова BETWEEN и NOT BE-
TWEEN в инструкции SELECT.
10.Приведите инструкцию оператора выборки данных при невозможности
точно указать поисковый текстовый контекст.
11.Какое ключевое слово в инструкции SELECT используется для создания
нового имени поля, в котором будут размещены данные после вычислений?
12.Объясните смысл выполнения инструкции SELECT с группировкой дан-
ных. Приведите синтаксис инструкции.
13.Приведите примеры агрегатных функций.
14.Приведите инструкцию оператора выборки данных с одновременным вы-
полнением вычислений.
15.В каком случае используются полные имена полей?
16.Что дает запрос на объединение, приведите синтаксис инструкции в стан-
дарте ANSI 89?
17.Что дает запрос на объединение, какой оператор используется? Приведите
синтаксис инструкции.
Литература
1. Агальцов В.П. Базыданных:ДопущеноУМО вузов по университетскомуполи-
техническомуобразованию в качестве учебника для вузов. В 2-х кн.; Кн. 1: Ло-
кальные базы данных. - 2-е изд., перераб. М.: ФОРУМ; ИНФРА-М, 2012.
2. ГолицынаО.Л.,МаксимовН.В., Попов И.И. Базы данных. Учебное пособие -
М: ИНФРА-М, 2011.
3. Базы данных:Учебник.Под ред. ХомоненкоА.Д. - 5-е изд., доп. М., СПб: Би-
ном-Пресс; КОРОНА принт, 2006.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
24
4. http://www.citforum.ru/ - сервер центра информационных технологий.
5. http://www.intuit.ru/department/database/ -интернет-университет информацион-
ных технологий.
6. http://office.microsoft.com/ru-ru/access-help/ - справочная система MS Access.
7. http://ru.wikipedia.org/ - Свободная энциклопедия «Википедия».
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
25
ПРИЛОЖЕНИЕ
Типы данных в языке SQL MS Access
Символьные типы данных
Содержат буквы, цифры и специальные символы.
TEXT Текстовые данные большого размера. Выделяется 2 байта на символ. Объем текста от
0 до 2,14 Гбайт. Другое название — MEMO.
CHAR Символьные строки фиксированной длины. Длина строки определяется параметром
n. CHAR без параметра соответствует CHAR(1). Для хранения выделяется 2 байта на
символ. Можно ввести от 0 до 255 символов. Другое название — TEXT(n).
Графические типы данных
IMAGE Используется для объектов OLE.
Целые типы данных
Поддерживают только целые числа (дробные части и десятичные точки не допускаются). Над этими
типами разрешается выполнять арифметические операции и применять к ним агрегирующие функции
(определение максимального, минимального, среднего и суммарного значения столбца реляционной
таблицы).
INTEGER
или INT
Длинное целое число. Для хранения длинного целого числа отводится 4 байта.
TINYINT Целое число от 0 до 255. Для хранения целого числа отводится 1 байт.
SMALLINT Короткое целое (2 байта), интервал значений от - 32767 до +32768.
Вещественные типы данных
Описывают числа с дробной частью.
REAL Значения обычной точности с плавающей запятой. Для хранения отводится обычно 4
байта
FLOAT Числа с плавающей точкой (для хранения отводится обычно 8 байтов).
DECIMAL Десятичные числа. Точный числовой тип данных, включающий значения от 1028 - 1
до -1028 - 1. Можно использовать при необходимости описания денежных величин.
Денежные типы данных
Описывают денежные величины.
CURRENCY Тип с плавающей запятой с 4 десятичными числами, используемыми для финансовых
значений
MONEY Масштабируемое целое число. Можно применять специальные методы форматирова-
ния.
Дата и время
Используются для хранения даты, времени и их комбинаций. Можно определять интервал между
двумя датами, а также уменьшать или увеличивать дату на определенное количество времени.
DATETIME Тип данных для хранения даты и времени, относящиеся к годам с 100 по 9999.
Двоичные типы данных
Позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняе-
мые файлы и т.д.).
BINARY В таком поле могут быть сохранены данные любого типа. Преобразование данных
(например, в текст) не производится. От способа ввода данных в бинарное поле зави-
сит способ вывода выходных данных.
Логические типы данных
BIT Для хранения значений «Да» и «Нет», или других двух возможных значений.
Последовательные типы данных
Используются для представления возрастающих числовых последовательностей.
COUNTER Тип данных на основе INTEGER, позволяющий сформировать уникальное значение
(например, для первичного ключа). При добавлении записи СУБД автоматически
присваивает полю данного типа значение, получаемое из возрастающей последова-
тельности целых чисел.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
26
АБРОСИМОВА Марина Александровна
БАЗЫ ДАННЫХ:
МАНИПУЛИРОВАНИЕ ДАННЫМИ
НА ЯЗЫКЕ SQL в СУБД MS Aсcess 2007
Практикум
Технический редактор: С.А. Юдина
Подписано в печать 20.06.2013. Формат 60х84 1/16.
Бумага писчая. Гарнитура «Таймс».
Усл. печ. л. 1,51. Уч.-изд. л. 2. Тираж 100 экз.
Цена свободная. Заказ № 69.
Отпечатано на ризографе в редакционно-издательском отделе
Уфимского государственного университета экономики и сервиса
450078, г. Уфа, ул. Чернышевского, 145, к. 206; тел. (347) 241-69-85.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
27
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
28
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

More Related Content

Similar to 484.базы данных манипулирование данными на языке sql в субд ms access 2007

презентация семинар по бд
презентация семинар по бдпрезентация семинар по бд
презентация семинар по бдanna_pal
 
001
001001
001JIuc
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data ServicesMedia Gorod
 
презентация 2007
презентация 2007презентация 2007
презентация 2007Dmitry Danilov
 
0041
00410041
0041JIuc
 
основные понятия
основные понятияосновные понятия
основные понятия23padopi
 
654.базы данных создание отчетов в субд ms access 2007
654.базы данных создание отчетов в субд ms access 2007654.базы данных создание отчетов в субд ms access 2007
654.базы данных создание отчетов в субд ms access 2007ivanov1566353422
 
Новая платформа сбора показателей
Новая платформа сбора показателейНовая платформа сбора показателей
Новая платформа сбора показателейBars Group
 
Росстат - внедрение КРОК-НСИ
Росстат - внедрение КРОК-НСИРосстат - внедрение КРОК-НСИ
Росстат - внедрение КРОК-НСИКРОК
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных23padopi
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных23padopi
 
Где и как хранить данные в процессе их анализа:  SQL и не только…
Где и как хранить данные в процессе их анализа: SQL и не только… Где и как хранить данные в процессе их анализа: SQL и не только…
Где и как хранить данные в процессе их анализа:  SQL и не только… Alexey Neznanov
 
2. СУБД MS Access
2. СУБД MS Access2. СУБД MS Access
2. СУБД MS AccessArtyukhova
 
Базы данных
Базы данныхБазы данных
Базы данныхValiaKuba
 

Similar to 484.базы данных манипулирование данными на языке sql в субд ms access 2007 (20)

презентация семинар по бд
презентация семинар по бдпрезентация семинар по бд
презентация семинар по бд
 
001
001001
001
 
лекция 10
лекция 10лекция 10
лекция 10
 
Ais Lecture 2
Ais Lecture 2Ais Lecture 2
Ais Lecture 2
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data Services
 
презентация 2007
презентация 2007презентация 2007
презентация 2007
 
0041
00410041
0041
 
основные понятия
основные понятияосновные понятия
основные понятия
 
654.базы данных создание отчетов в субд ms access 2007
654.базы данных создание отчетов в субд ms access 2007654.базы данных создание отчетов в субд ms access 2007
654.базы данных создание отчетов в субд ms access 2007
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
Microsoft access 2007
Microsoft access 2007Microsoft access 2007
Microsoft access 2007
 
Новая платформа сбора показателей
Новая платформа сбора показателейНовая платформа сбора показателей
Новая платформа сбора показателей
 
Росстат - внедрение КРОК-НСИ
Росстат - внедрение КРОК-НСИРосстат - внедрение КРОК-НСИ
Росстат - внедрение КРОК-НСИ
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных
 
основные понятия баз данных
основные понятия баз данныхосновные понятия баз данных
основные понятия баз данных
 
Где и как хранить данные в процессе их анализа:  SQL и не только…
Где и как хранить данные в процессе их анализа: SQL и не только… Где и как хранить данные в процессе их анализа: SQL и не только…
Где и как хранить данные в процессе их анализа:  SQL и не только…
 
2. СУБД MS Access
2. СУБД MS Access2. СУБД MS Access
2. СУБД MS Access
 
Mymanager
MymanagerMymanager
Mymanager
 
10 субд
10 субд10 субд
10 субд
 
Базы данных
Базы данныхБазы данных
Базы данных
 

More from ivanov15548 (20)

100206
100206100206
100206
 
100221
100221100221
100221
 
100201
100201100201
100201
 
100200
100200100200
100200
 
100208
100208100208
100208
 
100202
100202100202
100202
 
100203
100203100203
100203
 
100205
100205100205
100205
 
100210
100210100210
100210
 
100207
100207100207
100207
 
100209
100209100209
100209
 
100211
100211100211
100211
 
100212
100212100212
100212
 
100218
100218100218
100218
 
100215
100215100215
100215
 
100219
100219100219
100219
 
100214
100214100214
100214
 
100217
100217100217
100217
 
100216
100216100216
100216
 
100222
100222100222
100222
 

484.базы данных манипулирование данными на языке sql в субд ms access 2007

  • 1. МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ ФГБОУ ВПО «УФИМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ЭКОНОМИКИ И СЕРВИСА» Кафедра «Информатикаи ИКТ» БАЗЫ ДАННЫХ: МАНИПУЛИРОВАНИЕ ДАННЫМИ НА ЯЗЫКЕ SQL в СУБД MS Aсcess 2007 Практикум Уфа 2013 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 2. 2 Составитель: М.А. Абросимова УДК 004.9 А16 Базы данных: Манипулирование данными на языке SQL в СУБД MS Aсcess 2007: Практикум / Сост.: М.А. Абросимова. – Уфа: Уфимский государ- ственный университет экономики и сервиса, 2013. – 26 с. Практикум подготовленв соответствиис федеральным государственным стандартом высшего профессионального образования для направления подго- товки 080500.62 Бизнес-информатика и 230700.62 Прикладная информатика. Практикум содержит пошаговое описание технологии создания и вы- полнения инструкций SQL в СУБД MS Access для выборки, соединения и объ- единения данных, а также включает задания для самостоятельного выполне- ния. Илл.: 11. Табл.: 5. Библиогр.: 7. Рецензенты: ГалиаскаровФ.М.,д-р физ.-мат. наук, профессор, заведующий кафед- рой«Информатика и ИТ» УФ РГТУ Абрамова М.В., канд. техн. наук, доцент доцент кафедры «Информаци- онные технологии в управлении» БАГСУ © АбросимоваМ.А., 2013 © Уфимский государственныйуниверситет экономикии сервиса, 2013 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 3. 3 ОГЛАВЛЕНИЕ ОСНОВНЫЕ ПОНЯТИЯ ..............................................................................4 НАЧАЛО РАБОТЫ........................................................................................5 ЭЛЕМЕНТЫ SQL...........................................................................................5 ИНСТРУКЦИИ И ИМЕНА В SQL............................................................................ 6 ТИПЫ ДАННЫХ SQL........................................................................................... 8 СИНТАКСИС SQL............................................................................................... 8 РЕЛЯЦИОННЫЕ ОПЕРАЦИИ .................................................................................. 8 ИНТЕРФЕЙС СОЗДАНИЯ ЗАПРОСОВ SQL............................................................. 10 ВЫБОРКА ДАННЫХ..................................................................................11 Ограничение отношения................................................................................11 Проекция отношения .....................................................................................11 СОЗДАНИЕ ЗАПРОСА НА ВЫБОРКУ ДАННЫХ........................................................ 11 СОХРАНЕНИЕ ЗАПРОСА ..................................................................................... 13 МОДИФИКАЦИЯ ЗАПРОСА ................................................................................. 13 ИСПОЛЬЗОВАНИЕ ЛОГИЧЕСКИХ ВЫРАЖЕНИЙ ..................................................... 14 Поиск в диапазоне ..........................................................................................14 Поиск в списке................................................................................................15 Неточный поиск.............................................................................................15 Вычисления в запросе .....................................................................................16 Группировка данных в запросе .......................................................................17 ВЫБОРКА ИЗ НЕСКОЛЬКИХ ТАБЛИЦ.................................................................... 19 СОЕДИНЕНИЕ ОТНОШЕНИЙ.................................................................19 ОБЪЕДИНЕНИЕ ДАННЫХ........................................................................21 УДАЛЕНИЕ ЗАПРОСОВ ............................................................................22 КОНТРОЛЬНЫЕ ВОПРОСЫ ....................................................................23 ЛИТЕРАТУРА..............................................................................................23 ПРИЛОЖЕНИЕ............................................................................................25 ТИПЫ ДАННЫХ В ЯЗЫКЕ SQL MS ACCESS ......................................................... 25 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 4. 4 Практикум нацелен на формирование компетенции студента манипули- ровать информационными ресурсами средствами СУБД, представлять содер- жание прикладных и информационных процессов. Основные понятия База данных(БД) - поименованная совокупность взаимосвязанных дан- ных, отображающая состояние объектов и их отношений в некоторой пред- метной области, и используемая для удовлетворения информационных по- требностейпользователей. Базы данных в СУБД МS Access принадлежат к ти- пу реляционных баз данных. Объект предметной области – любой различимый объект реального мира, информациюо котором нужно хранить в базе данных. Например, объект «Сотрудники», объект «Товары». Реляционная база данных - база данных, состоящая из связанных таблиц - отношений. К таблицам баз данных можно обращаться с запросамии выводить найденную информацию на экран. Реляционная модель управления данными была предложена Эдгаром Коддом (1923 – 2003) в начале 1970-х го- дов. Подавляющее количество баз данных в сфере экономики и управления построено по реляционной модели данных. Реляционнаяалгебра - набор операций над отношениями базы данных, результатом каждой из которых является отношением: объединение, пересе- чение, разность, декартово произведение, ограничение (выборка), проекция, соединение, деление. Операции реляционнойалгебры также называют реляци- онными операциями. СУБД – программная система, предназначенная для создания баз дан- ных и централизованного управления их ресурсами с целью предоставления данных пользователям и программным средствам по их запросам. База данных в СУБД - файл, состоящий из таблиц и других информа- ционных объектов (запросов, форм, отчетов, индексов и пр.). Таблица базы данных (отношение) - информационная объект базы данных, состоящий из записей. Запись (кортеж) - это полный набор данных об объекте предметной об- ласти: клиенте, книге, событии и т.д. Запись представляется в виде строки. Структура всех записейтаблицы одинакова. Количество записей в таблице яв- ляется переменным. Поле (домен) – это набор данных одного типа в таблице, представляю- щих значения атрибутов (свойств) объекта предметной области. Например, фамилии всех сотрудников. Для представления поля используется столбец. Поле имеет имя и значения. Тип данных— атрибут, определяющий, какого рода данные могут хра- ниться в поле: целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и пр. Реляционные операции – операции над отношениями в реляционных базах данных, совершаемые по запросу пользователя: выборка, проекция, Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 5. 5 объединение, соединение и пр. Запрос – сообщение, направляемое СУБД пользователем или приложе- нием, которое активизирует действия выборки, вставки или удаления данных. Запрос адресуется к таблице. Язык запросов – язык программирования в СУБД, обеспечивающий извлечение данных из базы данных. SQL – стандартныйязык запросов, используемый для взаимодействия с данными в реляционных СУБД. Инструкция (оператор) - наименьшая автономная часть языка про- граммирования, описывающая действие с данными, создаваемая пользовате- лем и выполняемая СУБД по команде пользователя. Результирующая таблица - временная таблица базы данных, образо- ванная на основе информации, хранящейся в базовых таблицах, в результате работы запроса. Агрегатная функция – функции, которая совершает действие над сово- купностью одинаковых полей в группе записей Практикум содержит пошаговое описание технологии создания и вы- полнения инструкции SQL в СУБД MS Access для создания запросов на вы- борку данных (записей), а также включает задания для самостоятельного вы- полнения. Начало работы СУБД – программная система, предназначенная для создания баз дан- ных и централизованного управления их ресурсами с целью предоставления данных пользователям и программным средствам по их запросам. Основным инструментарием СУБД MS Access являются конструкторы таблиц, запросов, экранныхформ, отчётов, макросов и модулей. Арсенал этих средств позволяет создавать все информационные объекты баз данных, а так- же создавать скрипты на языке VBA и, следовательно, разрабатывать неболь- шие приложения баз данных. Профессиональному использованию MS Access мешает отсутствие ряда механизмов, необходимых в многопользовательских БД (например, триггеров, генератора exe-файлов и др.). На сегодняшний день MS Access является файл-сервернойСУБД со всеми ограничениями, характер- ными для данного класса СУБД. Однако в силу доступности MS Access удобно использовать для приоб- ретения первых навыков работы с базой данных и языком SQL, конструктор которого также входит в состав этой СУБД. Для получения представления о SQL будем использовать учебную базу данных СУБД MS Access «Борей 2007». Задание 1. Запустите СУБД MS Access. ЭлементыSQL SQL (Structured Query Language - язык структурированных запросов) - Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 6. 6 язык, используемыйдля взаимодействия с данными в реляционных СУБД [1]. SQL является единственным стандартным языком для реляционных СУБД, официальный стандарт языка был опубликован в 1986 г., разработан IBM. SQL - это язык программирования, предназначенный для работы с наборамифактов и отношениями между ними. Как любой язык программиро- вания, хотя он не объявляется полноценным языком программирования, а ха- рактеризуется как язык взаимодействия с СУБД, включает множество ин- струкций, предписывающих СУБД выполнить определенное действие с дан- ными: создание новых или изменение существующих данных, извлечение данных, управление доступом к данным и пр. [3]. В SQL определены несколько подмножеств языка: DDL (Data Definition Language) - язык определения структур и ограничений целостности баз данных. Сюда относятся команды создания и удаления баз данных; создания, изменения и удаления таблиц; управления пользователями и т.д. DML (Data Manipulation Language) - язык манипулирования данными: добав- ление, изменение, удаление и извлечение данных, управления транзакциями. DQL (Data Query Language) – язык выборки данных: формирование запросов. DCL Data Control Language) - язык управления данными: управление доступом к информации, находящейся внутри базы данных. SQL характеризуется как непроцедурный язык (описательный, деклара- тивный), в нем нет операторов проверки условий и ветвления, перехода, цик- лов и т.д. Запрос к базе данных не содержит инструкций по выполнению кон- кретных операций, а содержит лишь информацию о желаемом результате. Примечание. В СУБД МS Access доступен также язык запросов QBE (Query By Example - запрос по образцу). QBE – также непроцедурный язык, но это язык запросов для начинающих пользователей. QBE можно характеризовать как визуальный язык, т.к. он основан на использовании бланка, заполняемого с использованием визуальных средств МS Access, в результате чего создается структура таблицы, удовлетворяющей критерию отбора записей из исход- ной таблицы. При создании такого запроса автоматически формируется за- прос на стандартном для СУБД языке SQL. Инструкции и имена в SQL Инструкция SQL начинается с команды. Команда - ключевое слово, описывающее действие с данными в инструкции. Типичные ключевые слова, представляющие команды в инструкциях: CREATE создать INSERT добавить DELETE удалить SELECT выбрать Далее за командой указывается одно или несколько предложений. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 7. 7 Предложение описывает данные, с которыми должна работать инструкция, или уточняет действие, выполняемое инструкцией [2]. Каждое предложение начинается с ключевого слова. Ключевые слова в предложениях инструкций: WHERE где FROM откуда INTO куда Многие предложения в качестве параметров содержат имена таблиц или полей, в общем, называемые идентификаторами. Идентификатор - имя, используемое для идентификации объекта. Некоторые предложения могут содержать дополнительные ключевые слова, константы и выражения. Константа - значение, которое не изменяется, например число или NULL. Выражения - сочетание идентификаторов, операторов, констант и функций, предназначенное для вычисления одного значения. Например, для вычисления размера стипендии с учетом районного коэффициента нужно со- здать выражение: Размер_стипендии_с_коэфф=Размер_стипендии*1,15. Для поиска студента с фамилией «Иванов» Вы используете выражение: Фами- лия='Иванов' Имена таблиц и полей таблиц могут быть полными и краткими. Пра- вила таковы:  полное имя таблицы включает имя пользователя и имя таблицы, раз- деленные точкой: <имя_пользователя>.<имя_таблицы> Примечание. Угловые скобки используются для описания шаблона имени таб- лицы. При вводе конкретных имен они опускаются.  при однопользовательскойработес базой данных можно в инструкции имя пользователя опустить и использовать краткоеимя таблицы, т.е. только ее название.  полное имя поля состоит из полного (или краткого) имени таблицы, которой принадлежит поле и имени поля, разделенных точкой: <имя_таблицы>.<имя_поля>  краткое имя поля, т.е. без указания имени таблицы в инструкциях SQL недопустимо при выполнении действий с двумя или более таблицами.  имена таблиц и полей могут вводиться и на английском, и на русском языках.  имена таблиц и полей могут вводится как с прописной буквы, так и со строчной (маленькой) буквы.  если имя поля состоит из нескольких слов, то между словами нужно вставить нижнюю черту, например, Код_студента. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 8. 8 Типыданных SQL Тип данных— атрибут, определяющий, какого рода данные могут хра- ниться в поле: целые числа, символы, данные денежного типа, метки времени и даты, двоичные строки и пр. Тип данных влияет на правила указания крите- риев отбора. Типы данных, используемые в SQL MS Access, приведены в ПРИЛОЖЕНИИ. Синтаксис SQL Синтаксис языка — это набор правил, позволяющих правильно соче- тать элементы языка. Синтаксис SQL основан на синтаксисе английского языка. Например, простая инструкция SQL, извлекающая список фамилий студентов с именем Сергей, может выглядеть следующим образом: SELECT Фамилия FROM Студенты WHERE Имя = 'Сергей'; При описании инструкций предполагается, что:  текст, набранный прописными (большими) буквами (например, SELECT, FROM, WHERE) является обязательным;  текст, набранный строчными(маленькими) буквами и заключенный в угловые скобки (например, <имя_базы_данных>) обозначает переменную, вводимую пользователем. При написании имени переменной они опускаются;  в квадратные скобки (например, [NOT NULL]) заключается необяза- тельная часть инструкции;  взаимоисключающиеэлементы инструкции разделяются вертикальной чертой (например, [UNIQUE | PRIMARY KEY]);  Access игнорируетразрывы строк в инструкции SQL. Чтобы инструк- цию SQL было удобно читать как тому, кто ее написал, так и всем остальным, можно каждое предложение рекомендуется начинать с новой строки;  каждая инструкция заканчивается точкой с запятой (;). Точка с запя- той может стоять как в конце последнего предложения, так и на отдельной строке в конце инструкции SQL;  если в запросе указывается одна инструкция, то точку с запятой мож- но не вводить. Задание 2. Откройте учебную базу данных «Борей 2007». Закройте за- ставку базу данных «Борей 2007». Реляционныеоперации Операции, совершаемыенад отношениямив базе данных, описываются с помощью законов реляционной алгебры/ Реляционнаяалгебра - набор операций над отношениями базы данных, результатом каждой из которых также является отношением. Операции реля- ционной алгебры также называют реляционными операциями. Реляционная алгебра в том виде, в котором она была определена Э.Ф. Коддом, состоит из Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 9. 9 двух групп по четыре оператора [4]. 1. Теоретико-множественные операции - традиционные операции над множе- ствами (но модифицированныес учетом того, что их операндами являются от- ношения, а не произвольные множества): объединение, пересечение, разность и декартово произведение. Таблица 1 Реляционная опера- ция Описание 1. Объединение отношений возвращает отношение, содержащее все кортежи, которые принад- лежат либо одному из двух заданных отношений, либо им обоим. 2. Пересечение отношений возвращает отношение, содержащее все кортежи, которые принад- лежат одновременно двум заданным отношениям. 3. Вычитание от- ношений возвращает отношение, содержащее все кортежи, которые принад- лежат первому из двух заданных отношений и не принадлежат вто- рому. 4. Декартово про- изведение отноше- ний возвращает отношение, содержащее все возможные кортежи, кото- рые являются сочетанием двух кортежей, принадлежащих соответ- ственно двум заданным отношениям. 2. Специальные реляционные операции: ограничение, проекция, соединение, деление: Таблица 2 Реляционная опе- рация Описание 1. Ограничение отношения (вы- борка) возвращает отношение, содержащее все кортежи из заданного отно- шения, которые удовлетворяют указанным условиям. 2. Проекция от- ношения возвращает отношение, содержащее все кортежи (подкортежи) задан- ного отношения, которые остались в этом отношении после исключе- ния из него некоторых атрибутов. 3. Соединение отношений возвращает отношение, содержащее все кортежи, которые принадле- жат либо одному из двух заданных отношений, либо им обоим. 4. Деление отно- шения возвращает отношение, которое включает в себя атрибуты делимого отношения, отличные от атрибутов отношения-делителя, и только те кортежи, декартовы произведения которых с отношением-делителем дают делимое отношение. Часть операторов Кодда можно определить через другие операторы. Например, соединение – это проекция выборки произведения, пересечение выражается через разность, деление выражается через операторы вычитания, декартового произведения и проекции/ Для описания реляционных операций в СУБД используются инструкции языка запросов SQL. Результатом выполнения инструкций является таблица, называемая «результирующая таблица». Результирующая таблица - временная таблица базы данных, образо- Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 10. 10 ванная на основе информации, хранящейся в базовых таблицах, в результате работы запроса. В лабораторном практикуме рассматриваются наиболее часто использу- емые реляционные операции: выборка, проекция, объединение, соединение. Для их реализации используется инструкция SELECT языка манипулирования данными SQL. Интерфейс созданиязапросовSQL Создание и выполнение запросов SQL происходит с использованием вкладки меню «Конструктор», доступнойпослекоманды «Конструктор запро- сов» с вкладки меню «Создание». Для перехода в режим работы с SQL нужно: 1. Предварительно включить содержимое базы данных, которое отключено при созданиизапросов в целях безопасности. Для этого на Панели сообщений нажмите кнопку «Параметры» и выберите параметр «Включить это содержи- мое» (Рис.1). Рис. 1. Панель сообщений 2. На вкладке «Создание» в группе «Другие» щелкнуть «Конструктор запро- сов». 3. Закрыть диалоговое окно «Добавление таблицы». Бланк запроса будет скрыт, отобразится вкладка создаваемого объекта в ре- жиме SQL (Рис. 2). Рис. 2. Окно конструктора запросов в режиме SQL Примечание. Порядок создания запроса для извлечения данных аналогичен по- рядкусоздания запросов для работы со структурой таблицами с одной лишь О Б Л А С Т Ь Р Е Д А К Т И Р О В А Н И Я В к л а д к а з а п р о с а д л я в в о д а и н - с т р у к ц и и S Q L О Б Л А С Т Ь П Е Р Е Х О Д А Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 11. 11 разницей. При создании запроса для извлечения данных SQL используется по прямому назначению, т.е. как язык запроса, поэтому при создании запроса нет необходимости включать режим создания управляющего запроса и для перехода в режим SQL щелкать на кнопке «Управление» вкладки меню «Кон- структор». 4. Ввести инструкцию SQL. 5. На вкладке «Конструктор» в группе «Результаты» выбрать команду «Вы- полнить». В области редактирования появляется результирующая таблица - резуль- тат выполнения запроса в виде таблицы с записями, удовлетворяющими условию запроса. Задание 3. Перейдите в режим рабо- ты с SQL. Выборка Ограничениеотношения Ограничение возвращает отношение, содержащее все кортежи из задан- ного отношения, которые удовлетворяют указанным условиям (Рис. 3) [4]. Синтаксис инструкции SELECT следующий: SELECT * FROM <имя_таблицы> что означает: получить все записи указанной таблицы. Символ звездочка (*) указывает на то, что выбираются все записи. Синтаксис инструкции SELECT может быть таким: SELECT * FROM <имя_таблицы> WHERE <условие_отбора> что означает: получить все записи таблицы, но удовлетворяющие условию обора. Проекция отношения Операция проекции позволяет выделить подмножество полей таблицы (Рис. 4). Синтак- сис инструкции SELECT в этом случае следу- ющий: SELECT <список_выбора>FROM <имя_таблицы> Что означает: получить содержимое по- лей, указанных в списке выбора. Создание запроса на выборку данных Чаще всего в результате запроса требует- ся получить некое подмножество записей и по- лей таблицы, т.е. выполнить комбинацию вы- борки и проекции. Рис. 4. Проекция отношения Рис. 3. Ограничение отношения Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 12. 12 Полный синтаксис инструкции выборки данных SELECT [ALL | DISTINCT] <список_выбора> FROM <имя_таблицы>, ... [ WHERE <условие_отбора1> ] [ GROUP BY <условие_группировки>,... ] [ HAVING <условие_отбора2>] [ORDERBY <условие_сортировки>[ASC | DESC],. ] Описание разделов инструкции: Таблица 3 Раздел Описание ALL | DISTINCT в случае ALL в результат запроса выводятся все записи, удовлетво- ряющие условиям отбора, в случае DISTINCT в результат запроса не будут включаться повторяющиеся записи <список_выбора> определяется поле или поля, включаемые в результат. Он может со- стоять из имен одного или нескольких столбцов, или из одного сим- вола * (звездочка), определяющего все поля. Элементы списка раз- деляются запятыми. FROM ключевое слово, определяющее источник данных, с которым будет работать запрос, т.е. таблицу. WHERE ключевое слово, задающее правило отбора записей, включаемых в результат выборки. <условие_отбора1> условие отбора записей по значению элемента данного, например, записи, где значение поля «Фамилия» равно «Иванов». Синтаксис раздела: <имя_поля><оператор><’значение_поля’> Операторы, используемые в выражениях приведены в табл. 2. GROUP BY позволяет выполнять группировку по определенному критерию. Обычно в качестве условия_группировки указывается имя поля. HAVING позволяет построить записи из значений полей указанных в GROUP BY и значений агрегатных функций, вычисленных для каждой группы, образованной GROUP BY. Агрегатная функция – функция статистической обработки данных: MAX, SUM, AVG и т.д. <условие_отбора2> условие отбора записей для обработки агрегатной функцией агре- гатной функции. Например, HAVING AVG (Размер_платы_обучен) > 27,0 ORDER BY позволяет упорядочить данные, возвращаемые по результатам за- проса, т.е. отсортировать. Обычно в качестве условия_сортировки указывается имя_поля. ASC ключевое слово, задающее прямой порядок сортировки по полю. DESC ключевое слово, задающее обратный порядок сортировки по полю. Как правило, используются сокращенныеформы инструкции, например, для отборазаписей из таблицы «Студенты» по студентам из конкретной груп- пы с сортировкой по полю «Фамилия» нужно написать и выполнить инструк- цию: SELECT Фамилия, Имя, Отчество, Группа FROMСтуденты WHERE Группа=’БИД- 21’ ORDERBY Фамилия; Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 13. 13 Необходимо помнить, что порядок предложений в операторе SELECT должен строго соблюдаться (например, GROUP BY должно всегда предшество- вать ORDER BY), иначе это приведет к появлению ошибок. Задание 12. 1. Откройте таблицу «Товары» и пере- именуйте поле «Цена по прейскуранту» в «Цена_по_прейскуранту». 2. Создайтезапрос по выборке товаров с их категориями, наименованиями и це- ной по прейскуранту из таблицы «Това- ры». 3. Выполните запрос. 4. Просмотрите результаты запроса в полученной в результате выполнения запроса таблице. Сохранение запроса Для сохранения запроса исполь- зуйте команду «Сохранить как» систем- ного меню MS Access. Задание. Сохраните запрос под именем «Дешевые товары SQL». За- кройте запрос. Модификациязапроса Вы можете модифицировать созданные уже запросы и выполнять их. Для этого Вы должны: 1. открыть запрос; 2. перейти в режим SQL выбрав его на панели меню «Главная» в списке режи- мов (Рис.5). Задание 13. 1. Модифицируйте запрос внесением условия отбора записей: цена по прейс- куранту должна быть меньшей 10 р. 2. Просмотрите результаты выполнения запроса. 3. Модифицируйте запрос внесением условия отборазаписей: сделайте выбор- ку товаров категории «Напитки» с ценой по прейскуранту меньше 15 р. 4. Сохраните запрос. 5. Модифицируйте запрос "Дешевые товары SQL" путем задания сортировки по возрастаниюпо полю «Цена_по_прейскуранту». Сохранитеего под именем «Дешевые товары: сортировка». Рис. 5. Переход из режима про- смотра результирующей табли- цы в режим редактирования за- проса Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 14. 14 Использованиелогических выражений При составлении логических выражениях используются операторы: Таблица 4 Операторы Описание > , < , >= , <= , = , <> , != операторы сравнения, могут применяться не только к чис- ловым значениям, но и к строкам ("<" означает раньше, а ">" позже в алфавитном порядке) и датам ("<" раньше и ">" позже в хронологическом порядке). IS NULL, IS NOT NULL операторы проверки поля на значение NULL BETWEEN и NOT BE- TWEEN. операторы проверки на вхождение в диапазон IN и NOT IN операторы проверки на вхождение в список LIKE и NOT LIKE операторы проверки на вхождение подстроки AND, OR, NOT операторы соединения отдельных операций Поиск в диапазоне Для отборазаписей, удовлетворяющих некоторому диапазону значений, существует несколько способов:  с использованием оператора AND и операторов сравнения SELECT <список_выбора> FROM <имя_таблицы> WHERE <имя_поля> >=Значение_1 AND <имя_поля> <= Значение_2 Например, SELECT Краткое_наимен, Год_образования FROMИнституты WHERE Год_образования >=1934 AND <= 1976;  с использованием оператора BETWEEN AND SELECT <список_выбора> FROM <имя_таблицы> WHERE <имя_поля> BETWEEN Значение_1 AND Значение_2 Например, SELECT Краткое_наимен, Год_образования FROMИнституты WHERE Год_образования BETWEEN 1934 AND 1976;  при использовании этих предложений с оператором NOT, указанным перед определением диапазона, т.е., например, используется предложение NOT BETWEEN AND, находятся все строки, не входящие в указанный диапа- зон. Задание 14. 1. Создайте новый запрос к таблице «Товары» для выборки товаров с мини- мальным запасом не менее 10 единиц и с ценами в интервале от 10 до 80 руб. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 15. 15 Используйте для этого оператор AND и операторы сравнения. В выборке отобразить категорию, наименование цену по прейскуранту, минимальный за- пас. 2. Сохраните запрос под именем «Товары умеренной стоимости». Не забудьте прежде внести изменения в имена полей таблицы «Товары», если они состоят из нескольких, еще несоединенных нижней чертой. 3. Модифицируйте запрос «Товары умереннойстоимости» под использование оператора BETWEEN AND. Сохраните запрос. 4. Модифицируйте запрос «Товары умереннойстоимости» под использование оператора NOT BETWEEN AND. Сохраните запрос. Поиск в списке Если несложно указать в качестве диапазона список значений, то можно использовать для выборки данных оператор IN. Он проверяет записи на хож- дение в список значений. SELECT <список_выбора> FROM <имя_таблицы> WHERE <имя_поля> IN (значение_1,… значение_N); Например, SELECT Краткое_наимен, Год_образования FROMИнституты WHERE Год_образования IN(1934, 1967,1976); Задание 15. Создайтеновыйзапрос к таблице «Товары» для выборкито- варов с ценой по прейскуранту 10 и 30 руб. Сохраните запрос под именем «Товары из списка». Неточный поиск Для поиска с символьным критерием, когда неизвестно точное написа- ние подстроки, например, наименования института, фамилии и пр., использу- ется оператор LIKE. SELECT <список_выбора> FROM <имя_таблицы> WHERE <имя_поля> LIKE <образец>; Образец заключается в кавычки и должен содержать шаблон подстроки для поиска. Обычно в шаблонах используются два символа:  *(звездочка) - заменяет любое количество символов;  _ (подчеркивание) - заменяет одиночный символ. Символы в шаблонах можно указывать как в начале подстроки, так и в конце. Например, SELECT Краткое_наимен, Год_образования FROMИнституты WHERE Краткое_наимен LIKE ‘ИТ*’; Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 16. 16 Задание 16. Создайтеновыйзапрос к таблице «Товары» для выборкито- варов, в наименовании которыхесть общий фрагмент «Ко». В выборкеотобра- зить категорию, наименование цену по прейскуранту, минимальный запас. Со- хранить запрос под именем «Товары на Ко». Вычисления взапросе При создании запроса можно предусмотреть вычисления над полями. В конструкции<список_выбора>можно использовать константы, функции и их комбинации с арифметическими операциями и скобками. Выполнение арифметических операций Синтаксис следующий: SELECT <имя_поля1, f(имя_поля2) AS <новое_имя_поля2, имя_поля3,… > FROM <имя_таблицы> Например, чтобы узнать, сколько стоит обучение в год, выполнить ко- манду: SELECT Краткое_наимен, Год_образования, Размер_оплаты_обучен*2 AS Размер_оплаты_обучен_год FROMИнституты AS – квалификатор, обеспечиваетсоздание нового имени поля. Если Вы не используете его, то СУБД присвоит самостоятельно формальное имя. В арифметических выражениях допускаются операции сложения (+), вычитания (-), деления (/), умножения (*), а также различные функции (COS, SIN, ABS - абсолютноезначение и т.д.). Также в запрос можно добавить стро- ковую константу: Задание 17. Создайте новый запрос к таблице «Товары». Включите в бланк запроса поля «Категория», «Наименование», «Цена по прейскуранту». Введите формулу расчета новой цены при условии, что она повышается на 10%. сохраните запрос под именем «Повышение цен». Использование агрегатных функций В SQL также определены агрегатные функции – функции, которые со- вершают действия над совокупностью одинаковых полей в группе записей: Таблица 5 Агрегатная функция Описание AVG(<имя поля>) среднее по всем значениям данного поля COUNT(<имя поля>) или COUNT (*) число записей в группе MAX(<имя поля>) максимальное из всех значений данного поля MIN(<имя поля>) минимальное из всех значений данного поля SUM(<имя поля>) сумма всех значений данного поля FIRST(<имя поля>) значение поля в первой записи группы Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 17. 17 LAST(<имя поля>) значение поля в последней записи группы Следует учитывать, что каждая агрегатная функция возвращает един- ственное значение. Поэтому синтаксис инструкции аналогичен предыдущее- му, за той лишь разницей, что вместо списка полей нужно указывать агрегат- ные функцию от значения поля. Например, запрос SELECT Min(Размер_оплаты_обучен) AS Минимальн_оплата FROMИнституты; вернет результат: Задание 18. 1. Подсчитайте количество записей в таблице «Товары», в которых в имени поля «Наименование» есть общий фрагмент «Ко». 2. Проверьте, правильно ли произведен расчет по результирующей таблице созданного Вами выше запроса «Товары на Ко». Группировка данныхв запросе Группировка данных в операторе SELECT осуществляется с помощью ключевого слова GROUP BY и ключевого слова HAVING, с помощью которо- го задаются условия разбиения записей на группы. GROUP BY неразрывно связано с агрегатными функциями, без них оно практически не используется. GROUP BY разделяет таблицу на группы, а аг- регатными функция вычисляет для каждой из них итоговое значение. Например, инструкция: SELECT Категория FROMТовары GROUP BY Категория; вернет таблицу, где записи сгруппированы по категориям (Рис. 6а) Для определения количества записейв каждой категории товаров нужно определить агрегатную функцию COUNT(*) через запятую после определения имени_поля, по которому выполняется группировка: SELECT Категория, COUNT(*) AS Количество_товаров FROM Товары GROUP BY Категория; Тогда будет возвращена таблица, приведенная на Рис. 6б) Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 18. 18 а) б) Рис. 6. Результат выполнения операции выборки а) с группировкой данных; б) с группировкой данных и применением агрегатной функции COUNT Если требуется наложить ограничение на количество товаров в катего- рии, то используется ключевое слово HAVING: SELECT Категория, COUNT(*) AS Количество_товаров FROM Товары GROUP BY Категория HAVING COUNT(*)>2; Результатом выполнения такой инструкции будет следующая таблица (Рис.7): Рис. 7. Результат выполнения операции выборки с группировкой данных и применением агрегатной функции COUNT и условием на значение агрегатной функции Задание 19. Создайте запрос с группировкой по полю «Должность» в таблице «Сотрудники», при этом количество сотрудников с одной и той же должностью в каждой группе должно быть > 3. Затем снимите ограничение. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 19. 19 Сохраните запрос под именем «Сотрудники_группировка». Выборка из нескольких таблиц Очень часто возникает ситуация, когда выборку данных надо произво- дить из нескольких связанных таблиц. В этом случае: Синтаксис инструкции SELECT к связанным таблицам: SELECT <список_ полных_ имен_ полей> FROM <список_ таблиц>; Задание 20. 1. Создайте запрос к связанным таблицам «Заказы» и «Доставка». Выберите данные по полю «Получатель из таблицы «Заказы» и полям «Организация» и «Город» из таблицы «Доставка». Посмотрите результирующую таблицу. Со- храните запрос под именем «Заказы и доставка». 2. Модифицируйте запрос, дополнив условием выборки: получателем должен быть Березин. 3. Модифицируйте запрос, дополнив условием выборки: получателями долж- ны быть Березин и Тимофеева. Соединение отношений Соединение - это процесс, когда две или более таблицы объединяются в одну [5]. Операция соединения позволяет соединять строки из более чем од- ной таблицы (по некоторому условию) для образования новых строк данных. По сути производится выборка данных из двух таблиц и включение их в одну результирующую таблицу, для чего используется инструкция SELECT. Операция соединения возвращаетотношение, кортежи которого являют- ся сцеплением кортежей первого и второго отношений и удовлетворяют неко- торому условию. При этом является обязательным присутствие в кортежах одинаковых значений атрибутов. Общие значения в результирующем кортеже появляются один раз, а не дважды (Рис. 8). Операции соединения подразделяются на два вида: внешние и внутренние. Внешние соединения поддерживаются стандартом ANSI-92 и задаются зарезервированным словом JOIN, в то время как внутренние соединения (или просто соединения)мо- гут задаваться как без использованиятакого слова(в стандарте ANSI-89), так и с использованием слова JOIN (в стандарте ANSI-92). Примечание. СтандартANSI-92 – стандарт SQL92. Сейчас действует стан- дарт SQL2003. Условие соединения, то есть условие сопоставления строк исходных таблиц друг с другом, представляет собой логическое выражение. Внешнее соединениевозвращает все записи из первой таблицы и только те записииз второйтаблицы, для которых условие соединения принимает зна- Рис. 8. Соединение отношений Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 20. 20 чение TRUE. Строки второй таблицы, не удовлетворяющие условию соедине- ния (т.е. имеющие значение FALSE), получают значение NULL в результиру- ющей таблице. Существует два вида внешнего соединения: левое и правое:  левое внешнее соединение выбирает все записи первой (левой) табли- цы, даже если они не соответствуют записям во второй (правой) таблице. Ис- пользуется словосочетание LEFT JOIN.  правоевнешнее соединение выбирает все записи второй (правой) таб- лицы, даже если они не соответствуют записям в первой (левой) таблице. Ис- пользуется словосочетание RIGHT JOIN. Внутренние соединения объединяетзаписи из двух таблиц, если в связу- ющих полях этих таблиц содержатся одинаковые значения. Используется сло- восочетание INNER JOIN. Синтаксис инструкции соединения в стандарте SQL92: SELECT <список_ полных_ имен_ полей> FROM <имя_таблицы_1> {INNER | LEFT | RIGHT} JOIN <имя_таблицы_2> ON <условие_соединения> В СУБД MS Access не поддерживает использование слова JOIN. Поэто- му возможно реализовать операцию внутреннего соединения только с исполь- зованием конструкции: Синтаксис инструкции соединения в стандарте SQL89: SELECT <список_ полных_ имен_ полей_таблицы_1>, <список_ полных_ имен_ полей_таблицы_2> FROM <имя_таблицы_1>, <имя_таблицы_2> WHERE <условие_соединения> Например, запрос: SELECT Сотрудники.Фамилия, Поставщики.Фамилия, Поставщики.Имя, По- ставщики.Должность FROMСотрудники, ПоставщикиWHERE Поставщи- ки.Должность='Маркетолог' позволяет получить новое отношение, содержащее соединенные записи: Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 21. 21 Рис. 9. Результат выполнения операции соединения двух таблиц Задание 21. Создайтезапрос к таблицам «Сотрудники» и «Поставщики» для соединения данных по полям «Фамилия», «Имя», «»Отчество», «Долж- ность», при этом в результирующую таблицу должны отобраться только начальники отдела сбыта. Сохраните запрос под именем «Объединение». Объединениеданных Объединение возвращает отношение, содержащее все кортежи, которые принадлежат либо одному из двух заданных отношений, либо им обоим (Рис. 9). Для объединения используется инструкция UNION. Синтаксис операции объединения: SELECT <список_ выбираемых_ полных_ имен_ полей1> FROM <пол- ное_имя_таблицы1>[WHERE <условие_отбора>] UNION SELECT <список_ полных_ имен_ полей2> FROM <полное_имя_таблицы2> [WHERE <условие_отбора>]; Чтобы к результатам запросов можно было применить операцию объединения, нужно, чтобы они соответствовали следующим требованиям:  запросы должны возвращать одинаковый набор полей, причем порядок следования полей в каждом запросе должен быть одинаковым;  типы данных соответствующих полей в запросах должны совпадать. Рис. 10. Объединение отношений Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 22. 22 Например, запрос на объединение, обращенный к таблицам «Сотрудни- ки» и «Поставщики», содержащиеодинаковыепо смыслу и типу данных поля, а именно «Фамилия», «Имя», «Должность»: SELECT Сотрудники.Фамилия, Сотрудники.Имя, Сотрудники.Должность FROM СотрудникиUNIONSELECTПоставщики.Фамилия, Поставщики.Имя, Поставщи- ки.Должность FROMПоставщики; позволяет получить список и тех, и других работников по указанным полям (Рис. 11): Рис. 11. Результат выполнения операции объединения двух таблиц Задание 22. Создайтезапрос к таблицам «Сотрудники» и «Поставщики» для объединения данных по полям «Фамилия», «Имя», «»Отчество», «Долж- ность», при этом в результирующую таблицу должны отобраться только начальники отдела сбыта. Сохраните запрос под именем «Соединение». Удаление запросов При завершении лабораторногопрактикума у Вас должны быть созданы запросы: 1. Дешевые товары SQL 2. Дешевые товары: сортировка 3. Товары умеренной стоимости 4. Товары из списка 5. Повышение цен 6. Товары на букву Ко 7. Сотрудники_группировка. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 23. 23 8. Заказы и доставка. 9. Объединение 10. Соединение. Для удаления запроса, выделите его в области перехода и щелкните «Удаление» на вкладке меню «Конструктор» или нажмите клавишу DELETE на клавиатуре. Задание 23. Всезапросы удалять только ПОСЛЕ просмотра их препо- давателем. Контрольные вопросы 1. Что такое результирующая таблица? 2. Что такое инструкция SQL? 3. Охарактеризуйте два вида SQL? 4. Приведите минимальную инструкцию оператора выборки данных. 5. Что означает в инструкции SELECT ключевое слово ORDER BY? 6. Что означает в инструкции SELECT ключевое слово GROUP BY? 7. Что означают в инструкции SELECT ключевые слова ALL | DISTINCT? 8. Приведите инструкцию оператора выборки данных из списка. 9. В каком случае используются ключевые слова BETWEEN и NOT BE- TWEEN в инструкции SELECT. 10.Приведите инструкцию оператора выборки данных при невозможности точно указать поисковый текстовый контекст. 11.Какое ключевое слово в инструкции SELECT используется для создания нового имени поля, в котором будут размещены данные после вычислений? 12.Объясните смысл выполнения инструкции SELECT с группировкой дан- ных. Приведите синтаксис инструкции. 13.Приведите примеры агрегатных функций. 14.Приведите инструкцию оператора выборки данных с одновременным вы- полнением вычислений. 15.В каком случае используются полные имена полей? 16.Что дает запрос на объединение, приведите синтаксис инструкции в стан- дарте ANSI 89? 17.Что дает запрос на объединение, какой оператор используется? Приведите синтаксис инструкции. Литература 1. Агальцов В.П. Базыданных:ДопущеноУМО вузов по университетскомуполи- техническомуобразованию в качестве учебника для вузов. В 2-х кн.; Кн. 1: Ло- кальные базы данных. - 2-е изд., перераб. М.: ФОРУМ; ИНФРА-М, 2012. 2. ГолицынаО.Л.,МаксимовН.В., Попов И.И. Базы данных. Учебное пособие - М: ИНФРА-М, 2011. 3. Базы данных:Учебник.Под ред. ХомоненкоА.Д. - 5-е изд., доп. М., СПб: Би- ном-Пресс; КОРОНА принт, 2006. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 24. 24 4. http://www.citforum.ru/ - сервер центра информационных технологий. 5. http://www.intuit.ru/department/database/ -интернет-университет информацион- ных технологий. 6. http://office.microsoft.com/ru-ru/access-help/ - справочная система MS Access. 7. http://ru.wikipedia.org/ - Свободная энциклопедия «Википедия». Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 25. 25 ПРИЛОЖЕНИЕ Типы данных в языке SQL MS Access Символьные типы данных Содержат буквы, цифры и специальные символы. TEXT Текстовые данные большого размера. Выделяется 2 байта на символ. Объем текста от 0 до 2,14 Гбайт. Другое название — MEMO. CHAR Символьные строки фиксированной длины. Длина строки определяется параметром n. CHAR без параметра соответствует CHAR(1). Для хранения выделяется 2 байта на символ. Можно ввести от 0 до 255 символов. Другое название — TEXT(n). Графические типы данных IMAGE Используется для объектов OLE. Целые типы данных Поддерживают только целые числа (дробные части и десятичные точки не допускаются). Над этими типами разрешается выполнять арифметические операции и применять к ним агрегирующие функции (определение максимального, минимального, среднего и суммарного значения столбца реляционной таблицы). INTEGER или INT Длинное целое число. Для хранения длинного целого числа отводится 4 байта. TINYINT Целое число от 0 до 255. Для хранения целого числа отводится 1 байт. SMALLINT Короткое целое (2 байта), интервал значений от - 32767 до +32768. Вещественные типы данных Описывают числа с дробной частью. REAL Значения обычной точности с плавающей запятой. Для хранения отводится обычно 4 байта FLOAT Числа с плавающей точкой (для хранения отводится обычно 8 байтов). DECIMAL Десятичные числа. Точный числовой тип данных, включающий значения от 1028 - 1 до -1028 - 1. Можно использовать при необходимости описания денежных величин. Денежные типы данных Описывают денежные величины. CURRENCY Тип с плавающей запятой с 4 десятичными числами, используемыми для финансовых значений MONEY Масштабируемое целое число. Можно применять специальные методы форматирова- ния. Дата и время Используются для хранения даты, времени и их комбинаций. Можно определять интервал между двумя датами, а также уменьшать или увеличивать дату на определенное количество времени. DATETIME Тип данных для хранения даты и времени, относящиеся к годам с 100 по 9999. Двоичные типы данных Позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняе- мые файлы и т.д.). BINARY В таком поле могут быть сохранены данные любого типа. Преобразование данных (например, в текст) не производится. От способа ввода данных в бинарное поле зави- сит способ вывода выходных данных. Логические типы данных BIT Для хранения значений «Да» и «Нет», или других двух возможных значений. Последовательные типы данных Используются для представления возрастающих числовых последовательностей. COUNTER Тип данных на основе INTEGER, позволяющий сформировать уникальное значение (например, для первичного ключа). При добавлении записи СУБД автоматически присваивает полю данного типа значение, получаемое из возрастающей последова- тельности целых чисел. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 26. 26 АБРОСИМОВА Марина Александровна БАЗЫ ДАННЫХ: МАНИПУЛИРОВАНИЕ ДАННЫМИ НА ЯЗЫКЕ SQL в СУБД MS Aсcess 2007 Практикум Технический редактор: С.А. Юдина Подписано в печать 20.06.2013. Формат 60х84 1/16. Бумага писчая. Гарнитура «Таймс». Усл. печ. л. 1,51. Уч.-изд. л. 2. Тираж 100 экз. Цена свободная. Заказ № 69. Отпечатано на ризографе в редакционно-издательском отделе Уфимского государственного университета экономики и сервиса 450078, г. Уфа, ул. Чернышевского, 145, к. 206; тел. (347) 241-69-85. Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 27. 27 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
  • 28. 28 Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»