- •Структурированный язык запросов sql. Оператор delete. Структура оператора и примеры использования. Примеры использования delete с вложенными подзапросами.
- •Структурированный язык запросов sql. Оператор insert. Структура оператора и примеры использования. Использование insert с вложенными подзапросами.
- •Структурированный язык запросов sql. Оператор update. Структура оператора и примеры использования. Использование update с вложенными подзапросами.
- •Выборка данных оператором select. Структура оператора и примеры использования. Способы задания отображаемых полей. Использование distinct. Выборка значений с упорядочиванием.
- •Использование фразы where в операторах sql. Способы задания логических выражений в sql. Операторы in, like, between. Использование значения null в логических выражениях.
- •7 Вложенные подзапросы. Типы вложенных подзапросов. Способы включения вложенных подзапросов. Примеры использования вложенных подзапросов с разными способами включения.
- •Создание таблиц
- •Пример создания таблиц
- •Модификация таблиц
- •Удаление таблиц
- •Создание представлений. Правила создания модифицируемых представлений. Достоинства и недостатки представлений. Особенности определения полей представлений. Примеры использования.
- •Хранимые процедуры InterBase. Виды хранимых процедур. Расширения языка sql для использования в хранимых процедурах. Примеры создания хранимых процедур и их вызова.
- •Расширения языка sql для использования в хранимых процедурах и триггерах. Циклы и ветвления. Обработка исключений и ошибок.
- •Генераторы InterBase. Создание генераторов. Установка значений генераторов. Получение значений генераторов из
- •Триггеры InterBase. Типы триггеров. Контекстные переменные. Примеры создания триггеров для автоинкрементных полей и протоколирования изменений.
- •17. Транзакции в InterBase. Механизм транзакций. Параметры транзакций. Уровни изоляции и способы их задания в InterBase. Управление транзакциями. Примеры использования.
- •18. Библиотека доступа InterBase eXpress. Основные компоненты. Подключение к базе данных InterBase и организация просмотра и модификации данных.
- •20.Особенности системы защиты данных в InterBase. Пользователи и роли: создание и удаление. Вида прав. Раздача
Структурированный язык запросов sql. Оператор update. Структура оператора и примеры использования. Использование update с вложенными подзапросами.
SQL (Structured Query Language — «язык структурированных запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL основывается на исчислении кортежей. Все языки манипулирования данными (ЯМД), созданные до появления реляционных баз данных и разработанные для многих систем управления базами данных (СУБД) персональных компьютеров, были ориентированы на операции с данными, представленными в виде логических записей файлов. Это требовало от пользователей детального знания организации хранения данных и достаточных усилий для указания не только того, какие данные нужны, но и того, где они размещены и как шаг за шагом получить их. SQL (Structured Query Language - структуризованный язык запросов) ориентирован на операции с данными, представленными в виде логически взаимосвязанных совокупностей таблиц. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных. Язык SQL представляет собой совокупность операторов, инструкций и вычисляемых функций. Операторы SQL делятся на операторы определения данных (Data Definition Language, DDL): CREATE создает объект, БД (саму базу, таблицу, представление, пользователя и т. д.), ALTER изменяет объект, DROP удаляет объект.
Операторы манипуляции данными (Data Manipulation Language, DML): SELECT считывает данные, удовлетворяющие заданным условиям, INSERT добавляет новые данные, UPDATE изменяет существующие данные, DELETE удаляет данные. Операторы определения доступа к данным (Data Control Language, DCL): GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом
REVOKE отзывает ранее выданные разрешения, DENY задает запрет, имеющий приоритет над разрешением. Операторы управления транзакциями (Transaction Control Language, TCL): COMMIT применяет транзакцию, ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,
SAVEPOINT делит транзакцию на более мелкие участки.
Оператор UPDATE позволяет изменять значения в существующих строках базы данных. Например, всем сотрудникам можно добавить надбавку в размере $100:
UPDATE Employee SET Salary = Salary + 100
Количество строк, на которые распространяется действие оператора UPDATE, можно ограничить с помощью оператора WHERE, как было показано ранее. Например, с помощью следующего оператора можно
ввести новую минимальную зарплату:
UPDATE Employee SET Salary = 21000 WHERE Salary < 21000
Конечно, оператор UPDATE можно использовать одновременно для нескольких столбцов или даже для обнуления некоторого столбца. Например, предположим, сотрудница по имени Мэри вышла замуж,
изменила фамилию, и уехала в длительное свадебное путешествие. С помощью следующего оператора можно изменить ее имя, ее отделу присвоить значение NULL и изменить ее текущий статус:
UPDATE Employee
SET EmpName = 'Mary Jones'. Dept = NULL, Status = 'On Leave' WHERE EmpNum =324
Язык SQL разрешает использовать в других операторах языка DML подзапросы, которые являются внутренними запросами, определяемыми оператором SELECT.
Подзапрос - очень мощное средство языка SQL. Он позволяет строить сложные иерархии запросов, многократно выполняемые в процессе построения результирующего набора или выполнения одного из операторов изменения данных (DELETE, INSERT, UPDATE).
Подзапрос позволяет решать следующие задачи:
определять набор строк, добавляемый в таблицу на одно выполнение оператора INSERT;
определять данные, включаемые в представление, создаваемое оператором CREATE VIEW ;
определять значения, модифицируемые оператором UPDATE;
указывать одно или несколько значений во фразах WHERE и HAVING оператора SELECT;
определять во фразе FROM таблицу как результат выполнения подзапроса;
применять коррелированные подзапросы.
Подзапрос называется коррелированным, если запрос, содержащийся в предикате, имеет ссылку на значение из таблицы (внешней к данному запросу), которая проверяется посредством данного предиката.
Оператор UPDATE применяется для внесения изменений в данные таблиц.
Выражение expr, используемое для вычисления значения столбца, может быть как простым выражением, так и подзапросом, возвращающим единственное значение. В выражении можно ссылаться на старое значение изменяемого столбца и других столбцов текущей записи. При вычислении значений столбцов можно применять условное выражение CASE и выражение CAST для приведения типов.
Например:
SELECT f1, CAST (f2 AS CHAR),
CAST (f3 AS CHAR) from tbl1;
UPDATE tbl2 SET f2 = (SELECT CAST (f2 AS CHAR)
from tbl1 WHERE f1=1);
UPDATE tbl2 SET f5 = (SELECT CAST (f5 AS DATE)
from tbl1 WHERE f1=1),
f6= CAST ('10/12/2003' AS DATE);
Условное выражение CASE. Условное выражение CASE позволяет выбрать одно из нескольких значений на основании указываемого условия. Условное выражение CASE имеет следующее формальное описание:
{ CASE
{ expr WHEN expr THEN { expr | NULL }}
| { WHEN expr THEN { expr | NULL }}
[ ELSE { expr | NULL } ]
END}
| { NULLIF {expr1,expr2) }
| {COALESCE (expr .,:) }
Условное выражение CASE может быть записано, соответственно, в четырех формах:
CASE с выражениями:
SELECT f1, CASE f3
WHEN 'abc' THEN '1_abc' END FROM tbl1;
CASE с предикатами:
SELECT f1, CASE
WHEN f3= 'abc' THEN '1_abc'
ELSE f3 END FROM tbl1;
NULLIF - если выражения, указанные в скобках, не совпадают, то выбирается первое из этих значений, в противном случае устанавливается значение NULL:
UPDATE tbl2 SET f3 = (SELECT NULLIF (f3,'aaa')
FROM tbl1 WHERE f1=1);
COALESCE - выбирается первое значение в списке, не равное NULL:
INSERT INTO tbl1(f1,f2)
VALUES (1+ COALESCE(SELECT MAX(f1)
FROM tbl1, 0 ), 100);
Для успешного выполнения оператора UPDATE требуется ряд условий, включающий следующие:
наличие соответствующих привилегий;
для представления требуется определение его как изменяемого;
при изменении представлений применяются ограничения WITH CHECK OPTION или WITH CASCADED CHECK OPTION, установленные при создании этого представления;
в транзакциях "только чтение" изменение доступно только для временных таблиц;
выражения, используемые для определения значений, не могут содержать подзапросы с агрегирующими функциями;
для обновляемого курсора, указанного фразой FOR UPDATE, каждый изменяемый столбец также должен быть определен как FOR UPDATE;
в курсоре с фразой ORDER BY нельзя выполнять изменение столбцов, указанных в этой фразе.