Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс по ОБД 13.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
692.46 Кб
Скачать

Запросы

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

Зная структуру БД, таблиц в БД и полей, можно посылать следующие запросы в MySQL.

Select запросы

слово select, говорит само за себя, и становится понятно, что пользуясь данными запросами, мы будем выбирать (читать) информацию из БД.

Insert запросы

данные запросы позволяют вставить запись в таблицу БД. Другими словами создать строку в таблице или добавить информацию в таблицу БД.

Также есть запросы, которые не были использованы в курсовой работе:

Update запросы

направлены на изменение уже имеющихся данных в таблице БД.

Delete запросы

удаляют записи из таблицы БД.

Ограничения

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

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

Более сложные ограничения вводятся ключевым словом CHECK. Таким образом вводятся ограничения на значения поля кортежа, которые могут быть описаны как список или диапазон.

Формат задания ограничений для поля следующий:

имя_поля тип_поля CHECK (условие_проверки)

условие_проверки может основываться лишь на значении имя_поля, и не содержать подзапросов.

Ограничения для столбца могут быть заданы для него на этапе создания. Если есть необходимость дополнить заполненную таблицу условиями проверки необходимо описать ограничения, используя следующую конструкцию:

CONSTRAINT имя_ограничения CHECK (условие_проверки)

имя_ограничения должно быть уникальным.

Используя конструкцию CONSTRAINT можно вводить ограничения для всего кортежа, то есть использовать любые поля определённые в таблице.

Пример ограничения

Создание ограничения на ввод ФИО только с помощью кириллицы:

alter table BA_STAFF add check (regexp_like(rt_name||rt_patronymic||rt_surname, '^[А-Яа-я]*$'));

Проверка работоспособности ограничения.

update BA_STAFF

set rt_name = 'ALEKS'

where rt_name = 'Алексей';

Ключи

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

Выделяют три типа ключей:

• Первичный ключ (Primary key)

• Уникальный ключ (Unique key)

• Внешний ключ (Foreign key)

Выбор первичных ключей

С помощью первичного ключа в реляционных таблицах можно однозначно идентифицировать кортеж. Для выбора первичного ключа следует руководствоваться следующими правилами:

1. Значения столбца-ключа должны быть уникальными

2. Значения столбца-ключа не должны никогда меняться в процессе работы

3. Столбец-ключ не должен содержать NULL-значений

4. Значения первичного ключа должны быть простыми (к примеру, числовым)

5. Следует избегать использования составных первичных ключей

Выбор уникальных ключей

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

Значения ключа этого типа не могут дублироваться. Хотя для них разрешено значений NULL, тем не менее, остальные поля в составе составного уникального ключа должны иметь определённое значение (хотя бы для одного поля). Не следует путать уникальные ключи с первичными, уникальные вводятся только того чтобы обеспечить уникальность строк, в то время как первичный позволяет однозначно идентифицировать их. Другими словами, определяя уникальный ключ мы говорим, что значения данных полей должны быть уникальным в таблице, и запрещаем ввод строк с повторяющимися значениями.

Внешний ключ

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

Создание ключей

Ключи являются ограничениями таблицы и задаются для неё во время создания или модификации. При этом следует помнить, что Oracle не позволит модифицировать таблицу (создать ключ), если хранящиеся в ней данные противоречат вводимым условиям.

Полный формат следующий:

CONSTRAINT название_ограничения FOREIGN KEY (поля_внешнего_ключа)

REFERENCES родительская_таблица (название_ключа) [ON DELETE CASCADE];

Если на основании первичных или уникальных ключей родительской таблицы, были заполнены дочерние таблицы, то система Oracle запретит удалять «связанные» записи из родительской таблицы, гарантируя целостность данных. Для удаления этих записей необходимо сначала удалить все дочерние.

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