Файл: Методическое пособие к выполнению самостоятельной и лабораторных работ и курсового проекта по дисциплине Организация баз данных для студентов направления подготовки бакалавров.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.10.2023

Просмотров: 263

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

Лабораторная работа № 1 «Построение структуры базы данных»

Лабораторная работа № 2 «Создание запросов с помощью построителя запросов в среде MS Access»

Лабораторная работа № 3 «Работа с формами»

Лабораторная работа № 4 «Работа с отчетами»

Лабораторная работа № 5 «Создание SQL- запросов» Тема:СозданиеSQL-запросов.Разделдисциплины:Реляционныеязыки.Цель работы: создать SQL-запросы на создание таблицы, на выборку с параметрами, на обновление записей, на удаление записей, на добавление данных, на удаление таблицы, на создание индексов.Основы SQL Запрос SQL — это запрос, создаваемый при помощи инструкций SQL. Язык SQL (Structured Query Language) используется при созда- нии запросов, а также для обновления и управления реляционными БД.В среде MS Access, когда пользователь создает запрос в режиме конструктора запроса (с помощью построителя запросов), MS Access автоматически создает эквивалентную инструкцию SQL. Фактически, для большинства свойств запроса, доступных в окне свойств в режиме конструктора, имеются эквивалентные предложения или параметры языка SQL, доступные в режиме SQL. При необходимости, пользова- тель имеет возможность просматривать и редактировать инструкции SQL в режиме SQL. После внесения изменений в запрос в режиме SQL его вид в режиме конструктора может измениться.Некоторые запросы, которые называют запросами SQL, невоз- можно создать в бланке запроса. Для запросов к серверу, управляю- щих запросов и запросов на объединение необходимо создавать ин- струкции SQL непосредственно в окно запроса в режиме SQL. Для подчиненного запроса пользователь должен ввести инструкцию SQL в строку Поле или Условие отбора в бланке запроса.Синтаксиса написания SQL-предложений: в описании команд слова, написанные прописными латински- ми буквами, являются зарезервированными словами SQL; фрагменты SQL-предложений, заключенные в фигурные скоб- ки и разделенные символом «», являются альтернативными. При формировании соответствующей команды для конкретного случая необходимо выбрать одну из них; фрагмент описываемого SQL-предложения, заключенный в квадратные скобки [ ], имеет необязательный характер и может не ис- пользоваться; многоточие …, стоящее перед закрывающейся скобкой, говорит о том, что фрагмент, указанный в этих скобках, может быть повторен; Описание команд SQL Выборка записей Инструкция SELECT. При выполнении инструкции SELECT СУБД находит указанную таблицу или таблицы, извлекает заданные столбцы, выделяет строки, соответствующие условию отбора, и сорти- рует или группирует результирующие строки в указанном порядке в виде набора записей.Синтаксис команды:SELECT [предикат] { * | таблица.* | [таблица.]поле_1[AS псевдоним_2] [, [таблица.]поле_2[AS псевдоним_2] [, ...]]} FROM выражение [, ...][WHERE... ][GROUP BY... ][HAVING... ][ORDER BY... ]где предикат — один из следующих предикатов отбора: ALL, DISTINCT, DISTINCTROW, TOP. Данные ключевые слова использу- ются для ограничения числа возвращаемых записей. Если они отсут- ствуют, по умолчанию используется предикат ALL;* указывает, что результирующий набор записей будет содержать все поля заданной таблицы или таблиц. Следующая инструкция отби- рает все поля из таблицы «Студенты»: SELECT * FROM Студенты;таблица — имя таблицы, из которой выбираются записи;поле_1, поле_2 — имена полей, из которых должны быть отобра- ны данные;псевдоним_1, псевдоним_2 — ассоциации, которые станут заго- ловками столбцов вместо исходных названий полей в таблице;выражение — имена одной или нескольких таблиц, которые со- держат необходимые для отбора записи;предложение GROUP BY в SQL-предложении объединяет записи с одинаковыми значениями в указанном списке полей в одну запись. Если инструкция SELECT содержит статистическую функцию SQL, например Sum или Count, то для каждой записи будет вычислено ито- говое значение;предложение HAVING определяет, какие сгруппированные запи- си, выданные в результате выполнения запроса, отображаются при использовании инструкции SELECT с предложением GROUP BY. По- сле того как записи результирующего набора будут сгруппированы с помощью предложения GROUP BY, предложение HAVING отберет теиз них, которые удовлетворяют условиям отбора, указанным в пред- ложении HAVING;предложение ORDER BY позволяет отсортировать записи, полу- ченные в результате запроса, в порядке возрастания или убыванияна основе значений указанного поля или полей.Следует отметить, что инструкции SELECT не изменяют данные в базе данных. Приведем минимальный синтаксис инструкции SELECT: SELECT поля FROM таблица.Если несколько таблиц, включенных в предложение FROM, со- держат одноименные поля, перед именем такого поля следует ввести имя таблицы и оператор « . » (точка). Предположим, что поле «Но- мер_группы» содержится в таблицах «Студенты» и «Группы». Следу- ющая инструкция SQL отберет поле «Номер_группы» и«ФИО_студента» из таблицы «Студенты» и «ФИО_куратора» из таб- лицы «Группы» при номере группы, равном 432-1:SELECT Группы.Номер_группы, Группы.ФИО_куратора, Сту- денты.ФИО_студентаFROM Группы, СтудентыWHERE Группы.Номер_группы = Студенты.Номер_группы AND На рисунке 17 приведен пример выполнения данного запроса.Таблицы БД СТУДЕНТЫ

Лабораторная работа № 6 «Создание концепту- альной модели данных в среде Power Designer»

Лабораторная работа № 7 «Генерация физической модели в среде Power Designer и структуры базы данных в СУБД MS Access»

Указания к выполнению курсового проекта

Самостоятельная работа

Рекомендуемая литература

Приложение 1

Приложение 2

качестве этих по- лей следует использовать поля, составляющие ключ внешней таблицы.

В следующем примере создается таблица ЗАДОЛЖЕН- НОСТЬ_ЗА_ОБУЧЕНИЕ с единственным полем НО- МЕР_ЗАЧЕТНОЙ_КНИЖКИ и внешним ключом f1_i, связанным с полем НОМЕР_ЗАЧЕТНОЙ_КНИЖКИ в таблице СТУДЕНТЫ:

CREATE TABLE Задолженность_за_обучение (Код_задолженности integer PRIMARY KEY, Но-

мер_зачетной_книжки integer, CONSTRAINT f1_i FOREIGN KEY (Номер_зачетной_книжки) REFERENCES Студенты (Но- мер_зачетной_книжки));

Внешний вид схемы БД, состоящей из таблиц СТУДЕНТЫ и ЗА- ДОЛЖЕННОСТЬ_ЗА_ОБУЧЕНИЕ, представлен на рисунке 23.




Рисунок 23 Схема данных
Изменениеструктурытаблицы

Инструкция ALTER TABLE изменяет структуру таблицы, со- зданной с помощью инструкции CREATE TABLE.

Синтаксис:

ALTER TABLE таблица {ADD {COLUMN поле тип[(размер)] [NOT NULL]

[CONSTRAINT индекс] | CONSTRAINT составной Индекс} | DROP {COLUMN поле I CONSTRAINT имя Индекса} }

где таблица имя изменяемой таблицы;

поле имя поля, добавляемого в таблицу или удаляемого из нее; тип — тип данных поля;

размер — размер поля; индекс индекс для поля;

составной Индекс — описание составного индекса, добавляемого к таблице;

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

С помощью инструкции ALTER TABLE существующую таблицу можно изменить несколькими способами:

  1. добавить новое поле в таблицу с помощью предложения ADD COLUMN. В этом случае необходимо указать имя поля, его тип и раз- мер. Например, следующая инструкция добавляет в таблицу СТУ- ДЕНТЫ текстовое поле ПРИМЕЧАНИЯ длиной 50 символов:


ALTER TABLE Студенты ADD COLUMN Примечания TEXT(50) Если для поля добавлено ограничение NOT NULL, то при добав-

лении новых записей это поле должно содержать допустимые данные;

  1. добавить составной индекс с помощью зарезервированных слов ADD CONSTRAINT;

  2. удалить поле с помощью зарезервированных слов DROP COLUMN. В этом случае необходимо указать только имя поля;

  3. удалить составной индекс с помощью зарезервированных слов DROP CONSTRAINT. В этом случае указывается только имя составного индекса, следующее за зарезервированным словом CONSTRAINT.
СозданиеиндексаспомощьюинструкцииCREATEINDEX

CREATE INDEX создает новый индекс для существующей таб- лицы. Синтаксис команды:

CREATE [UNIQUE] INDEX индекс

ON таблица (поле [ASC|DESC][, поле [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

где индекс имя создаваемого индекса;

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

декс. Для создания простого индекса, состоящего из одного поля, вво-

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

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

  • с помощью параметра DISALLOW NULL можно запретить значения Null в индексированных полях новых записей;

  • параметр IGNORE NULL позволяет запретить включение в индекс записей, имеющих значения Null в индексированных полях;

  • зарезервированное слово PRIMARY позволяет назначить индек- сированные поля ключом. Такой индекс по умолчанию является уникаль- ным, следовательно, зарезервированное слово UNIQUE можно опустить.

Удалениетаблицы/индекса

Инструкция DROP удаляет существующую таблицу из базы дан- ных или удаляет существующий индекс из таблицы. Синтаксис:

DROP {TABLE таблица | INDEX индекс ON таблица}

где таблица — имя таблицы, которую следует удалить или из которой следует удалить индекс;

индекс имя индекса, удаляемого из таблицы.

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

Инструкция DELETE создает запрос на удаление записей из од- ной или нескольких таблиц, перечисленных в предложении FROM и удовлетворяющих предложению WHERE.

Синтаксис команды:

DELETE [Таблица.*] FROM таблица

WHERE условие Отбора

где Таблица — необязательное имя таблицы, из которой удаляются записи;

таблица имя таблицы, из которой удаляются записи;

условие Отбора выражение, определяющее удаляемые записи.

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

Запрос на удаление удаляет записи целиком, а не только содержи- мое указанных полей. Нельзя восстановить записи, удаленные с помо- щью запроса на удаление. Чтобы узнать, какие записи будут удалены, необходимо посмотреть результаты запроса на выборку, использующего те же самые условие отбора в предложении Where, а затем выполнить запрос на удаление.



цу.
Добавлениезаписей

Инструкция INSERT INTO добавляет запись или записи в табли-
Синтаксис команды:

а) запрос на добавление нескольких записей: INSERT INTO назначение [(поле_1[, поле_2[, ...]])] SELECT [источник.]поле_1[, поле_2[, ...]

FROM выражение

б) запрос на добавление одной записи:

INSERT INTO назначение [(поле_1[, поле_2[, ...]])] VALUES (значение_1[, значение_2[, ...])


где назначение — имя таблицы или запроса, в который добавляются записи;

источник — имя таблицы или запроса, откуда копируются записи; поле_1, поле_2 имена полей для добавления данных, если они

следуют за аргументом «Назначение»; имена полей, из которых берутся данные, если они следуют за аргументом источник;

выражение — имена таблицы или таблиц, откуда вставляются данные. Это выражение может быть именем отдельной таблицы или результатом операции INNER JOIN, LEFT JOIN или RIGHT JOIN, а также сохраненным запросом;

значение_1, значение_2 значения, добавляемые в указанные по- ля новой записи. Каждое значение будет вставлено в поле, занимающее то же положение в списке: значение_1 вставляется в поле_1 в новой записи, значение_2 в поле_2 и т.д. Каждое значение текстового поля следует заключать в кавычки (' '), для разделения значений использу- ются запятые.

Инструкцию INSERT INTO можно использовать для добавления одной записи в таблицу с помощью запроса на добавление одной запи- си, описанного выше. В этом случае инструкция должна содержать имя и значение каждого поля записи. Нужно определить все поля записи, в которые будет помещено значение, и значения для этих полей. Если поля не определены, в недостающие столбцы будет вставлено значение по умолчанию или значение Null. Записи добавляются в конец таблицы.

Инструкцию INSERT INTO можно также использовать для до- бавления набора записей из другой таблицы или запроса с помощью предложения SELECT ... FROM, как показано выше в запросе на до- бавление нескольких записей. В этом случае предложение SELECT определяет поля, добавляемые в указанную таблицу НАЗНАЧЕНИЕ.

Инструкция INSERT INTO является необязательной, однако, если она присутствует, то должна находиться перед инструкцией SELECT.

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


Вместо добавления существующих записей из другой таблицы, можно указать значения полей одной новой записи с помощью пред- ложения VALUES. Если список полей опущен, предложение VALUES должно содержать значение для каждого поля таблицы; в противном случае инструкция INSERT не будет выполнена. Можно использовать дополнительную инструкцию INSERT INTO с предложением VALUES для каждой добавляемой новой записи.
Обновлениеданных

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

Синтаксис команды:

UPDATE таблица SET новое Значение

WHERE условие Отбора;

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

должно быть вставлено в указанное поле обновленных записей; условие Отбора — выражение, отбирающее записи, которые долж-

ны быть изменены.

При выполнении этой инструкции будут изменены только записи, удовлетворяющие указанному условию. Инструкцию UPDATE осо- бенно удобно использовать для изменения сразу нескольких записей или в том случае, если записи, подлежащие изменению, находятся в разных таблицах. Одновременно можно изменить значения нескольких полей. Следующая инструкция SQL увеличивает стипендию студентов группы 422-1 на 10 %:

UPDATE Студенты

SET Стипендия = стипендия * 1.1 WHERE Номер_группы = '422-1';
Запроснаобъединение

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

Синтаксис команды:

[TABLE] запрос_1 UNION [ALL] [TABLE] запрос_2 [UN- ION[ALL] [TABLE] запрос_n [...]]

где запрос_1-n — инструкция SELECT или имя сохраненной таблицы, перед которым стоит зарезервированное слово TABLE.

В одной операции UNION можно объединить в любом наборе ре- зультаты нескольких запросов, таблиц и инструкций SELECT. В сле- дующем примере объединяется существующая таблица СТУДЕНТЫ и инструкции SELECT:

TABLE Студенты UNION ALL SELECT *

FROM Абитуриенты WHERE Общий_балл