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

5. Транзакция

Транзакция - группа логически связанных операторов SQL, результаты которых могут быть зафиксированы или отменены как единое целое. Используется для многопользовательских баз данных. То есть при сетевых запросах к ней. Вот к примеру, в инете есть БД авиакомпании. Клиент делает запрос на наличие свободного 14го места на такой то такойто рейс. Место свободно, и он его бронирует. Вот вся эта группа команд и будет транзакцией. Ее результат можно сохранить. То есть вызвать оператор commit и место будет забронировано в базе данных. А можно ROLLBACKом откатить изменения и место останется свободным, если клиент передумал покупать это место. У нее есть 4 свойства: 1)Атомарность.Это когда все входящие в транзакцию операторы SQL рассматриваются как единая неделимая группа. То есть либо она выполняется ВСЯ, либо никакой из операторов не выполнится. 2)НепротиворечивостьЭто означает, что состояние БД остается согласованным и непротиворечивым после завершения транзакции. 3)ИзолированностьВот это самое интересное Это свойство при котором множество транзакций, которые выполняются одновременно не должны взаимодействовать. Рассмотрим когда 2 клиента у БД авиакомпании запрашивают место 14 на одном и том же рейсе. При этом тот кто забронирует это место первым должен быть единственным лицом забронировавшим его, а не так что Клиент1 забронировал, Клиент2 тоже забронировал, и в результате они летят друг у друга на коленках  4)ДолговременностьПосле фиксации транзакции изменения в БД сохраняются при отключении компьютера или при выходе его из строя.

6. Group By and Order By

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

Код SQL

1

2

3

SELECT department_id, COUNT(*)

FROM employees

GROUP BY department_id

Сортировка - это выведение данных в определенном порядке, например, служащие отсортированы по ФИО

Код SQL

1

2

3

SELECT last_name, first_name

FROM employees

ORDER BY last_name, first_name

GROUP BY — используется для объединения строк с общими значениями в элементы меньшего набора строк. ORDER BY — используется для определения, какие столбцы используются для сортировки результирующего набора данных.

7. Between

BETWEEN - данный оператор используется в условии WHERE для выбора данных между двумя значениями. Данные могут быть: тестом, числами, даты.

Синтаксис sql between

1

2

3

4

SELECT column_name(s)

FROM table_name

WHERE column_name

BETWEEN value1 AND value2

8. Insert into

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

Используя перечисление значений, с указанием столбцов:

INSERT INTO <название таблицы> ([<Имя столбца>, ... ]) VALUES (<Значение>,...)

9. Триггеры

Три́ггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.

Момент запуска триггера определяется с помощью ключевых слов BEFORE (триггер запускается до выполнения связанного с ним события; например, до добавления записи) илиAFTER (после события). В случае, если триггер вызывается до события, он может внести изменения в модифицируемую событием запись (конечно, при условии, что событие — не удаление записи). Некоторые СУБД накладывают ограничения на операторы, которые могут быть использованы в триггере (например, может быть запрещено вносить изменения в таблицу, на которой «висит» триггер, и т. п.)

Кроме того, триггеры могут быть привязаны не к таблице, а к представлению (VIEW). В этом случае с их помощью реализуется механизм «обновляемого представления». В этом случае ключевые слова BEFORE и AFTER влияют лишь на последовательность вызова триггеров, так как собственно событие (удаление, вставка или обновление) не происходит.

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

Пример (Oracle):

/* Триггер на уровне таблицы */

CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger

AFTER UPDATE ON district

BEGIN

INSERT INTO info VALUES ('table "district" has changed');

END;

В этом случае для отличия табличных триггеров от строчных вводится дополнительные ключевые слова при описании строчных триггеров. В Oracle это словосочетание FOR EACH ROW.

Пример:

/* Триггер на уровне строки */

CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger

AFTER UPDATE ON district FOR EACH ROW

BEGIN

INSERT INTO info VALUES ('one string in table "district" has changed');

END;

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