Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информационное обеспечение3.Х.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
806.75 Кб
Скачать
      1. Удаление таблицы

Удаление таблицы осуществляется командой вида:

DROP TABLE имя_таблицы

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

      1. Создание представления

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

CREATE VIEW имя_представления [ (поле1 [ ,...полеn ] ) ] AS команда_select

Поле1 [ ,...полеn ] – имя, которое будет иметь столбец в представлении. Имя столбца требуется только в тех случаях, когда столбец формируется на основе арифметического выражения, функции или константы, если два или более столбцов могут по иной причине получить одинаковые имена (как правило, в результате соединения), или если столбцу представления назначается имя, отличное от имени столбца, от которого он произведен. Назначать столбцам имена можно также в инструкции SELECT.

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

Команда_select – команда SELECT, которая определяет представление. Представление не обязательно является простым подмножеством строк и столбцов одной конкретной таблицы. С помощью предложения SELECT можно создавать представление, использующее более одной таблицы, или другие представления любой степени сложности. В команде нельзя использовать ключевое слово ORDER BY, кроме специального случая, не рассматриваемого в рамках данного материала.

Ниже приведен пример создания представления по запросу, выводящему на экран список рейсов (номер рейса) и пунктов прибытия этих рейсов (этот пример рассматривался ранее):

CREATE VIEW Представление_рейсы AS

SELECT Рейсы.№Рейса, Пункты.Пункт_прибытия

FROM Рейсы, Пункты

WHERE Рейсы.№Пункта = Пункты.№Пункта

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

SELECT Представление_рейсы.№Рейса, Представление_рейсы.Пункт_прибытия

FROM Представление_рейсы

или

SELECT *

FROM Представление_рейсы

      1. Удаление представления

Удаление представления осуществляется командой вида:

DROP VIEW имя_представления

      1. Изменение представления

Внесение изменений в представление осуществляется командой ALTER VIEW. Формат команды полностью совпадает с форматом команды CREATE VIEW. И является фактически комбинацией удаления и создания представления.

      1. Создание триггера

Ниже приведена упрощенная структура команды создания триггера:

CREATE TRIGGER Имя_тригера ON { таблица }

{ FOR | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }

AS { sql-команда}

Имя_тригера – уникальное имя, удовлетворяющее стандарту названий SQL-объектов: комбинация латинских символов и цифр, исключая символы разделители: пробел, запятая, точка запятая и д.р. В дальнейшем, это имя будет использоваться для идентификации триггера в командах изменения и удаления.

Таблица – название таблицы, при изменении данных которой будет срабатывать триггер.

FOR | INSTEAD OF – признак момента исполнения триггера.

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

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

[ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] - определяет команды изменения данных, по которым срабатывает триггер. Необходимо указать как минимум одну инструкцию. В определении триггера разрешены любые их сочетания в любом порядке.

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

Триггеры используют логические (концептуальные) таблицы deleted и inserted. По своей структуре они подобны таблице, на которой определен триггер, то есть таблице, к которой применяется действие пользователя. В таблицах deleted и inserted содержатся старые или новые значения строк, которые могут быть изменены действиями пользователя. При операции INSERT таблица inserted будет содержать строку с вводимой строкой, а таблица deleted будет пустой. При операции DELETE таблица deleted будет содержать удаляемую строку с вводимой строкой, а таблица inserted будет пустой. При операции UPDATE таблица deleted будет содержать строку со значениями до изменения, а таблица inserted содержать строку с новыми значениями.

Transact-SQL – расширенный язык SQL, требующий отдельного рассмотрения. Помимо команд SELECT, Команд управления структурой и манипулирования данными, для выполнения работы, приведенной в приложении, необходимы следующие конструкции:

  • внутренние переменные, их объявление и применение;

  • оператор сравнения.

Объявление внутренних переменных осуществляется в секции DECLARE. При этом указывается имя переменной, обязательно начинающееся с символа @ и тип переменной.

Например:

DECLARE

@id int,

@LAST_NAME varchar(100),

@floatdata float

Присвоение значений внутренних переменных осуществляется через команду select.

Присвоение константы:

SELECT @id = 12

Присвоение значения выражения:

SELECT @floatdata = @id+1.3

Присвоение нескольких значений одной командой:

SELECT @floatdata = 1, @id = @id +1

Присвоение значений из базы данных (пример по базе данных для лабораторной работы №1):

SELECT @floatdata = (COMMISSION+ SALARY), @id = JOB_ID FROM employee Where EMPLOYEE_ID = 1

При этом запрос должен возвращать либо одну строку, либо не одной. В случае, если запрос не возвращает строк, то внутренним переменным будет присвоено значение NULL.

Оператор сравнения

IF {условие}

{sql-команда}

[Else

{sql-команда}]

sql-команда – одна команда Transact-SQL, однако можно применять составную команду, образуемую оборачиванием группы команд в конструкцию BEGIN … END.

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

IF @id > 10

SELECT @floatdata = 10

ELSE

SELECT @floatdata = 11

Ниже приведен пример триггера, выполняющегося вместо операции изменения данных. При срабатывании триггера осуществляется проверка нового значения поля intdata. Если его значение меньше 0, то вместо нового значения в таблицу заносится предыдущее значение, увеличенное на 1. В противном случае новое значение поля intdata не изменяется. Новое значение поля id записывается в таблицу безусловно.

Сначала определим команду создающую таблицу:

CREATE TABLE mydata_1 (

id INT PRIMARY KEY,

intdata INT NOT NULL);

Далее создадим триггер.

Create TRIGGER mydata_1_tr

ON mydata_1

INSTEAD OF UPDATE

AS

-- определим действие триггера – вместо операции изменения

DECLARE

@new_id int,

@new_intdata int

begin

--запросили новые значения полей

SELECT @new_id = id, @new_intdata = intdata from inserted

IF @new_intdata < 0 -- проверили значение поля inddata

-- вернули в переменную старое значение поля intdata

SELECT @new_intdata = intdata + 1 from deleted

--проведем реальное изменение значений записи

Update mydata1 set id = @new_id, intdata=@new_intdata

Where id = @new_id

end

      1. Удаление триггера

Удаление триггера осуществляется командой вида:

DROP TRIGGER имя_триггера

      1. Изменение триггера

Внесение изменений в представление осуществляется командой ALTER TRIGGER. Формат команды полностью совпадает с форматом команды CREATE TRIGGER. И является фактически комбинацией удаления и создания триггера.

    1. Манипулирование данными

      1. Ввод данных

Команда INSERT служит для добавления новых записей в таблицу базы данных. Формат команды:

INSERT INTO имя_таблицы [ ( поле1, поле2, поле3) ] VALUES ( знач1, знач2, знач3 );

Если после параметра имя_таблицы сразу следует ключевое слово VALUES, то система управления базами данных считает, что значения полей новой записи перечислены в том же порядке, что и поля таблицы при её создании – это неявное указание последовательности полей. Формат команды INSERT позволяет задать последовательность вводимых полей в явном виде перед ключевым полем VALUES.

Далее приведен пример заполнения таблицы «МАРКИ» с явным и неявным указанием последовательности полей. Пусть последовательность полей при создании таблицы совпадает с последовательностью, указанной на рисунке 6.

INSERT INTO Марки (Кол-во_мест, Марка_Cамолета, №Марки) VALUES(150,“ТУ-154”,1);

INSERT INTO Марки VALUES(2,“ТУ-134”,70);

В первой команде поля переставлены намеренно.