Файл: Методическое пособие к выполнению самостоятельной и лабораторных работ и курсового проекта по дисциплине Организация баз данных для студентов направления подготовки бакалавров.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.10.2023
Просмотров: 263
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Лабораторная работа № 1 «Построение структуры базы данных»
Лабораторная работа № 2 «Создание запросов с помощью построителя запросов в среде MS Access»
Лабораторная работа № 3 «Работа с формами»
Лабораторная работа № 4 «Работа с отчетами»
Лабораторная работа № 6 «Создание концепту- альной модели данных в среде Power Designer»
качестве этих по- лей следует использовать поля, составляющие ключ внешней таблицы.
В следующем примере создается таблица ЗАДОЛЖЕН- НОСТЬ_ЗА_ОБУЧЕНИЕ с единственным полем НО- МЕР_ЗАЧЕТНОЙ_КНИЖКИ и внешним ключом 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 существующую таблицу можно изменить несколькими способами:
ALTER TABLE Студенты ADD COLUMN Примечания TEXT(50) Если для поля добавлено ограничение NOT NULL, то при добав-
лении новых записей это поле должно содержать допустимые данные;
CREATE INDEX создает новый индекс для существующей таб- лицы. Синтаксис команды:
CREATE [UNIQUE] INDEX индекс
ON таблица (поле [ASC|DESC][, поле [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
где индекс — имя создаваемого индекса;
таблица — имя существующей таблицы, для которой создается индекс; поле — имена одного или нескольких полей, включаемых в ин-
декс. Для создания простого индекса, состоящего из одного поля, вво-
дится имя поля в круглых скобках сразу после имени таблицы. Для со- здания составного индекса, состоящего из нескольких полей, перечисля- ются имена всех этих полей. Для расположения элементов индекса в убывающем порядке используется зарезервированное слово DESC; в противном случае будет принят порядок по возрастанию.
Чтобы запретить совпадение значений индексированных полей в разных записях, используется зарезервированное слово UNIQUE. Не- обязательное предложение WITH позволяет задать условия на значе- ния. Например:
Инструкция 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 Общий_балл
В следующем примере создается таблица ЗАДОЛЖЕН- НОСТЬ_ЗА_ОБУЧЕНИЕ с единственным полем НО- МЕР_ЗАЧЕТНОЙ_КНИЖКИ и внешним ключом 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 существующую таблицу можно изменить несколькими способами:
-
добавить новое поле в таблицу с помощью предложения ADD COLUMN. В этом случае необходимо указать имя поля, его тип и раз- мер. Например, следующая инструкция добавляет в таблицу СТУ- ДЕНТЫ текстовое поле ПРИМЕЧАНИЯ длиной 50 символов:
ALTER TABLE Студенты ADD COLUMN Примечания TEXT(50) Если для поля добавлено ограничение NOT NULL, то при добав-
лении новых записей это поле должно содержать допустимые данные;
-
добавить составной индекс с помощью зарезервированных слов ADD CONSTRAINT; -
удалить поле с помощью зарезервированных слов DROP COLUMN. В этом случае необходимо указать только имя поля; -
удалить составной индекс с помощью зарезервированных слов 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 Общий_балл