Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD шпорки.doc
Скачиваний:
112
Добавлен:
17.06.2021
Размер:
4.62 Mб
Скачать
  1. Основные и дополнительные правила ссылочной целостности

Целостность внешних ключей (ссылочная целостность) обеспечивается тем, что внешние ключи не могут ссылаться на строки, отсутствующие в родительских таблицах.

Ссылочную целостность могут нарушить следующие операции над данными:

  1. Обновление первичного ключа в строке родительской таблицы

  2. Удаление строки в родительской таблице

  3. Вставка новой строки в дочернюю таблицу

  4. Обновление внешнего ключа в дочерней таблице

Для поддержания ссылочной целостности используются следующие 2 стандартных правила:

  1. Ограничить (restrict) (не разрешать выполнение операции, приводящей к нарушению. Требует проверки существования связи между данными родительской и дочерней таблица)

  2. Каскадировать (cascade) (Разрешить выполнение требуемой операции, но внести при этом изменения в связанные таблицы так, чтобы не допустить нарушения ссылочной целостности. Изменения начинаются в главной родительской таблице и каскадом выполняются в подчинённых таблицах (сложное правило, но оно хорошо тем, что после выполнения операции с соответствующими каскадными изменениями будут сохранены все имеющиеся связи между данными))

Дополнительные правила:

        1. Установить в NULL (SET NULL) – разрешить выполнение требуемой операции, однако все некорректные значения внешнего ключа изменить на NULL значений

        2. Установить по умолчанию (SET DEFAULT). Разрешить выполнение требуемой операции, однако все некорректные значения внешнего ключа изменить на некоторое значение, принятое по умолчанию

Замечание

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

  1. Язык sql: основные команды манипулирования данными

Язык SQL (Structured Query Language - структурированный язык запросов) представляет собой стандартный высокоуровневый язык описания данных и манипулирования ими в системах управления базами данных (СУБД), построенных на основе реляционной модели данных.

Язык SQL был разработан фирмой IBM в конце 70-х годов. Первый международный стандарт языка был принят международной стандартизирующей организацией ISO в 1989 г., а новый (более полный) - в 1992 г. В настоящее время все производители реляционных СУБД поддерживают с различной степенью соответствия стандарт SQL92.

Основные категории команд языка SQL:

DDL, или язык определения данных

DML, или язык манипулирования данными

DQL, или язык запросов

DCL, или язык управления данными

Команды администрирования данных

Команды управления транзакциями

Язык манипулирования данными (DML) — это часть языка SQL, предназначенная для реального внесения пользователем изменений в информацию, содержащуюся в реляционной базе данных. С помощью команд языка манипулирования данными пользователь может загружать в таблицы новые данные, а также изменять и удалять существующие. Команды DML также могут быть использованы при выполнении простых запросов к базе данных.

В языке SQL существует три основных команды DML:INSERT, UPDATE, DELETE.

Единственной структурой представления данных (как прикладных, так и системных) в реляционной базе данных (БД) является двумерная таблица.

В реляционной модели данных таблица обладает следующими основными свойствами:

идентифицируется уникальным именем;

имеет конечное ненулевое количество столбцов;

имеет конечное (возможно, нулевое) число строк;

столбцы таблицы идентифицируются своими уникальными именами и номерами;

содержимое всех ячеек столбца принадлежит одному типу данных;

в общем случае ячейки таблицы могут оставаться пустыми, такое их состояние обозначается как NULL.

  1. Язык SQL: вставка новой записи в таблицу

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,...)]

VALUES (expression,...),(...),...

либо

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name

SET col_name=expression, col_name=expression, ...

либо

INSERT [LOW_PRIORITY | DELAYED] [IGNORE]

[INTO] tbl_name [(col_name,...)]

SELECT ...

Общие положения работы команды INSERT:

tbl_name

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

LOW_PRIORITY

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

DELAYED

- Если указан этот параметр, то после выполнения команды INSERT сценарий сразу же получит ответ от БД о успешной вставке новой записи, а запись будет вставлено только после завершения использования данной таблицы другим сценарием. Это может быть удобно, если требуется высокая скорость работы скрипта. Данный параметр работает только с таблицами типа ISAM и MyISAM. Следуем отметить, что если таблица, в которую происходит вставка записи, в данный момент не используется другими запросами, то команда INSERT DELAYED будет работать медленнее, нежели INSER. Так что рекомендуется использовать параметр DELAYED только при большой нагрузке на таблицу.

IGNORE

- Если некоторые поля таблицы имеют ключи PRIMARY или UNIQUE, и производится вставка новой строки, в которой эти поля имеют дублирующее значение, то действие команды аварийно завершается и выдается ошибка №1062 ("Duplicate entry 'val' for key N"). Если в команде INSERT указано ключевое слово IGNORE, то вставка записей не прерывается, а строки с дублирующими значениями просто не вставляются.

Для добавления новых записей в существующую таблицу при помощи команды INSERT существует три основных синтаксиса:

INSERT ... VALUES

- В этом случае в команде четко указывается порядок следования устанавливаемых полей и их значений.

INSERT INTO Поставщик (КодПоставщика, ИмяПоставщика, КодРегиона)

VALUES (123, 'ЗАО Магистраль', 101)

INSERT INTO Регион

VALUES (301, 'Украина', 'Крымская', 'Алушта', 'ул.Франко, 24',

NULL, '46-49-16')

GO

Соседние файлы в предмете Базы данных