Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
127.38 Кб
Скачать
  1. Языки манипулирования данными в субд. Операторы языка sql

Язык манипулирования данными содержит набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. Множество операций над данными можно классифицировать следующим образом:1)операции селекции; 2)действия над данными:

  • включение-ввод экземпляра записи в БД с установкой его связей;

  • удаление-исключение экземпляра записи из БД с установкой новых связей;

  • модификация-изменение содержимого экземпляра записи и коррекция связей при необходимости.

Язык манипулирования данными делятся на два типа. Это разделение обусловлено коренным различием в подходах к работе с данными, а, следовательно, различием в базовых конструкциях в работе с данными. Первый тип – это процедурный ЯМД. Второй тип – это декларативный(непроцедурный)ЯМД. К процедурным языкам манипулирования данными относятся и языки, поддерживающие операции реляционной алгебры. Реляционная алгебра – это процедурный язык обработки реляционных таблиц, где в качестве операндов выступают таблицы в целом. Декларативные языки представляют пользователю средства, позволяющие указать лишь то, какие данные требуются. Решение вопроса о том, как их следует извлекать, берет на себя процессор данного языка, работающий с целыми наборами записей. Реляционные СУБД обычно включают поддержку непроцедурных языков манипулирования данными – чаще всего это бывает язык структурированных запросов SQL или язык запросов по образцу QBE.

Операторы SQL делятся на:

операторы определения данных:

CREATE создает объект БД

ALTER изменяет объект

DROP удаляет объект

операторы манипуляции данными:

SELECT считывает данные, удовлетворяющие заданным условиям

INSERT добавляет новые данные

UPDATE изменяет существующие данные

DELETE удаляет данные

операторы определения доступа к данным :

GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом

REVOKE отзывает ранее выданные разрешения

DENY задает запрет, имеющий приоритет над разрешением

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

COMMIT применяет транзакцию.

ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции.

SAVEPOINT делит транзакцию на более мелкие участки.

2. Обновление данных в sql(insert, update, delete).

SELECT, UPDATE, INSERT, DELETE – выборка, изменение, вставка и удаление записей.

Команда INSERT

Команда INSERT добавляет записи в существующую таблицу. Существует три варианта синтаксиса INSERT (в квадратные скобки взяты те параметры/инструкции/разделы, которые являются необязательными):

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] имя_таблицы [(название_поля,...)]

VALUES (выражение,...),(...),...

или

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] имя_таблицы

SET название_поля=выражение, название_поля=выражение, ...- добавляет в таблицу новую строку с указанными значениями полей;

INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] имя_таблицы [(название_поля,...)]

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

Всем полям, для которых значения не указаны явно, присваиваются их значения по умолчанию. Например, вы указали в списке полей не все поля таблицы. Тогда полям, не указанным в списке, будут присвоены их значения по умолчанию.

Команда UPDATE

UPDATE [LOW_PRIORITY] имя_таблицы

SET название_поля1=выражение1,название_поля2=выражение2,...

[WHERE условное_выражение] [LIMIT количество_записей]

Команда UPDATE заменяет значения существующих полей таблицына новые. Выражение SET указывает какие поля изменять и значения, которые нужно присвоить этим полям. Выражение WHERE (если есть) - какие записи должны быть изменены. ЕслитWHERE нет, будут изменены все записи.

Команда DELETE

DELETE [LOW_PRIORITY] FROMимя_таблицы

[WHERE условное_выражение] [LIMIT количество_записей]

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

Если вы не используете выражение WHERE, все поля будут удалены. При этом DELETE возвращает 0 (MySQL не может показать сколько полей было удалено, т.к. для экономии времени создается новая таблица без записей вместо того чтобы удалять все записи из старой таблицы).

Если вы хотите знать сколько полей было удалено когда удаляете все поля из таблицы, используйте такую команду:

mysql> DELETE FROM имя_таблицы WHERE 1>0;

3. Отношение - это множество кортежей, соответствующих одной схеме отношения. Иногда, чтобы не путаться, говорят "отношение-схема" и "отношение-экземпляр", иногда схему отношения называют заголовком отношения, а отношение как набор кортежей - телом отношения. На самом деле, понятие схемы отношения ближе всего к понятию структурного типа данных в языках программирования. Было бы вполне логично разрешать отдельно определять схему отношения, а затем одно или несколько отношений с данной схемой. Схема отношения - это именованное множество пар {имя атрибута, имя домена (или типа, если понятие домена не поддерживается)}. Степень или "арность" схемы отношения - мощность этого множества. Степень отношения СОТРУДНИКИ равна четырем, то есть оно является 4-арным. Если все атрибуты одного отношения определены на разных доменах, осмысленно использовать для именования атрибутов имена соответствующих доменов (не забывая, конечно, о том, что это является всего лишь удобным способом именования и не устраняет различия между понятиями домена и атрибута).

Схема БД (в структурном смысле) - это набор именованных схем отношений. В SQL модификация схемы производится оператором ALTER SCHEMA. Его синтаксис и пример использования ниже.

Синтаксис

ALTER SCHEMA schema_name TRANSFER object_name

ALTER SCHEMA schema_name AUTHORIZATION user_name

Описание

schema_name - имя схемы внутри базы данных, куда будет перемещен объект;

object_name - имя объекта, подлежащего перемещению;

user_name - имя нового собственника схемы.

Для перемещения объектов пользователь должен иметь разрешение CONTROL на перемещаемый объект и ALTER на схему, в которую выполняется перемещение.

4.Группировка и упорядочивание данных в SQL (ORDER BY, GROUP BY). Используя предложение ORDER BY, в запросе также можно указать способ сортировки результатов при выполнении запроса. Если используется предложение ORDER BY, оно должно находиться в конце инструкции SQL.Предложение ORDER BY содержит список полей, для которых нужно выполнить сортировку, в том же порядке, в котором будут применена сортировка. Предположим, например, что результаты сначала нужно отсортировать по убыванию значения поля Организация, а затем, если присутствуют записи с одинаковым значением поля Организация, отсортировать их по возрастанию значения поля Адрес электронной почты. Предложение ORDER BY будет выглядеть следующим образом: ORDER BY Организация DESC, [Адрес электронной почты]По умолчанию в Access выполняется сортировка по возрастанию (A-Z, А-Я, от наименьшего к наибольшему). Чтобы вместо нее выполнить сортировку значений по убыванию, необходимо указать ключевое слово DESC. При использовании статистических функций обычно необходимо создать предложение GROUP BY. В предложении GROUP BY указываются все поля, к которым не применяется статистическая функция. Если статистические функции применяются ко всем полям в запросе, предложение GROUP BY создавать не нужно. Предложение GROUP BY должно следовать сразу же за предложением WHERE или FROM, если предложение WHERE отсутствует. В предложении GROUP BY поля указываются в том же порядке, что и в предложении SELECT.Продолжим предыдущий пример. Пусть в предложении SELECT статистическая функция применяется только к полю [Адрес электронной почты], тогда предложение GROUP BY будет выглядеть следующим образом:GROUP BY Организация Если в табличном выражении присутствует раздел GROUP BY, то следующим выполняется он. Синтаксисраздела GROUP BY следующий: <group by clause> ::= GROUP BY <column specification> [{,<column specification>}...] Если обозначить через R таблицу, являющуюся результатом предыдущего раздела (FROM или WHERE), то результатом раздела GROUP BY является разбиение R на множество групп строк, состоящего из минимального числа групп таких, что для каждого столбца из списка столбцов раздела GROUP BY во всех строках каждой группы, включающей более одной строки, значения этого столбца равны. Для обозначения результата раздела GROUP BY в стандарте используется термин "сгруппированная таблица".

5.   Первая нормальная форма – любое поле любой записи хранит только одно значение.

 Например, если в поле хранится список идентификаторов, разделённых запятыми, то это нарушение данного определения и база не находится в первой нормальной форме.

 Вторая нормальная форма – БД находится в первой нормальной форме и любое неключевое поле полностью зависит от ключа.

Например, у нас есть запись с полями (Идентификатор, Название CD-Диска, Название группы), где ключом является поле «Идентификатор». При этом, очевидно, что поле «Название группы» зависит не только от «Идентификатора» но и от поля «Название CD-Диска». Поэтому такая БД не находится во второй нормальной форме.

Третья нормальная форма – БД находится во второй нормальной форме и нет неключевых полей зависящих от значения других неключевых полей.

Например, у нас в записи хранятся код региона и его название (помимо самих полей с информацией о CD-диске). Понятно, что название региона зависит от кода, и наоборот, поэтому такая БД не будет находиться в третьей нормальной форме.

Аксиомы тестирования функциональных зависимостей:

1-я аксиома вывода. Рефлексивность (Любой атрибут функционального определяет сам себя)

В r всегда имеет место Х -> Х (так как отношение  всегда имеет не более одного кортежа).

2-я аксиома вывода. Пополнение 

Если r удовлетворяет Х -> Y, то r удовлетворяет F-зависимости XZ -> Y (Х -> Y влечет за собой XZ -> Y).

3-я аксиома вывода. Аддитивность (так же известна под названием – объединение).

Если отношение r удовлетворяет X -> Y и X -> Z, то r удовлетворяет F-зависимости Х -> YZ.

4-я аксиома вывода. Проективность .

Если отношение r удовлетворяет X -> YZ, то r удовлетворяет X -> Y и X -> Z.

5-я аксиома вывода. Транзитивность .

Х -> Y и Y -> Z влечет за собой X -> Z.

6-я аксиома. Псевдотранзитивность.

Если r удовлетворяет функциональным зависимостям Х -> Y и YZ -> W, тогда r удовлетворяет функциональным зависимостям XZ -> W.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]