Управление данными
Рассматриваемые темы
Язык SQL
DDL
DDL. Создание таблиц
DDL. Типы данных атрибутов
DDL. Ограничения
DDL. Пример создания таблицы
DDL. Изменение объекта
DDL. Удаление объекта
DDL. Порядок создания и удаления объектов схемы:
DML
DML. Оператор SELECT
DML. Оператор SELECT
DML. Оператор SELECT
DML. Оператор SELECT
Примеры соединения:
Примеры соединения:
DML. Оператор SELECT
Примеры условий
Примеры условий на соединение
DML. Оператор SELECT
Примеры сортировки
DML. Оператор SELECT Агрегирующие функции
DML. Оператор SELECT
DML. Оператор SELECT
Примеры группировки
Реализация теоретико-множественных операций
DML. Оператор UPDATE
DML. Оператор UPDATE
Примеры обновления
DML. Оператор DELETE
DML. Оператор DELETE
Примеры удаления
DML. Оператор INSERT
DML. Оператор INSERT
Примеры вставки
Операторы управления пользователем БД
Привилегии пользователя
Управление транзакциями
Операторы управления транзакциями:
Операторы управления транзакциями:
Операторы управления транзакциями:
Примеры:
Хранимые процедуры и триггеры
Хранимые процедуры
Курсор
Пример хранимой процедуры
Триггеры
Пример триггера
249.00K
Category: databasedatabase

Управление данными. Язык SQL. (Лекция 6)

1. Управление данными

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
Лекция 6. Язык SQL
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Управление данными

2. Рассматриваемые темы

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
Операторы DDL: Create, Alter, Drop.
101011110101110110101010101010111000111101010101010011010101110001010110
Операторы DML: Insert, Update, Delete, Select.
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
Управление правами пользователя Grant,
010001010101010111010101010001010110101010110101010101011001011011110111
Revoke.
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Рассматриваемые темы
Язык SQL. Его назначение.
Подмножества языка DDL и DML.
Реализация специальной логики
приложений – триггеры и хранимые
процедуры.
Расширения ANSI SQL.

3. Язык SQL

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Язык SQL
Язык структурированных запросов
(Structured queries language);
Текстовый язык, семантически
приближенный к английскому языку;
Каждый запрос – отдельная команда для
СУБД (оператор) с фиксированным
синтаксисом.
Имеет подмножества операторов DDL
(определение данных) и DML
(манипулирование данными)

4. DDL

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
Операторы создания, изменения и удаления баз данных и
10111010101001010101101010110101010110101010101010110101010101101010101
объектов схемы данных
01010110101010110101010101011100010101101010101010101101101110101010010
Создание:
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
CREATE <OBJECT> <NAME> [параметры]
11000110110101000011010111101010111000101010101010100010101010000101010
Типы объектов:
101011110101110110101010101010111000111101010101010011010101110001010110
DATABASE – база данных;
10110101010101010101111010101010101011010101010101011010101010101010101
SCHEMA – схема данных;
010101011101101010100010110101010101010101011110101111010101011111111101
TABLE – таблица (отношение);
010001010101010111010101010001010110101010110101010101011001011011110111
CONSTRAINT – ограничение;
010101110101010101110000111001001101011010101001110100101011011110101010
ATTRIBUTE – атрибут;
110101010101111111111001010001010110111100001101010100010110100101010101
VIEW – представление;
0101000111000101101010101010110111010101000111111100101100111111100101000
INDEX – индекс;
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
SEQUENCE – последовательность;
10110101010101010100011010101011101110101100010101010110101010101010101
STORED PROCEDURE – хранимая процедура;
00101010111010101010010101011010101101110101010101011000110110101000011
TRIGGER – триггер;
010111101010111000101010101010100010101010000101010101011110101110110101
USER – пользователь БД.
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL

5. DDL. Создание таблиц

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
<attribute>: name <datatype> [<constraint>]
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
<constraint>: CONSTRAINT [name] <c_type>
010101110101010101110000111001001101011010101001110100101011011110101010
<parameters>
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL. Создание таблиц
CREATE TABLE <NAME> (<attributes>
[,<constraints>])

6. DDL. Типы данных атрибутов

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
Числовые:
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
Счетчик – counter, serial, auto_increment
00101010101110101010101010101110101010100101010110101011011101010101010
Целое – integer (+ unsigned)
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
Длинное целое – long (+ unsigned)
10110101010101010101111010101010101011010101010101011010101010101010101
C плавающей запятой – float, double
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
Логический – bit, boolean, smallint
010101110101010101110000111001001101011010101001110100101011011110101010
Строковые
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
Один символ – char
00011010101000010111001001010110100010101110101011110001010001100010101
Строка n символов – char[n], varchar[n]
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
Дата, время – date, time, datetime, timestamp
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
Бинарные данные – (long-)(var-)binary
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL. Типы данных атрибутов

7. DDL. Ограничения

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL. Ограничения
Default <val> – принимать значение по
умолчанию;
Not Null – запрет на отсутствие значений
Unique – запрет повторов
Primary key – первичный ключ (not null +
unique)
Foreign key references <table> (<PK
attribute>) <mode> – внешний ключ
(ссылка)
Check <condition> – требование соблюдать
условие

8. DDL. Пример создания таблицы

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
CREATE TABLE "Поезд"(
01010110101010110101010101011100010101101010101010101101101110101010010
"НомерПоезда" integer
NOT NULL,
10110101010101010111010101010101010101101010110110101001101010101011101
"Название"
character varying(150)
,
"Класс"
integer
NOT NULL,
00101010101110101010101010101110101010100101010110101011011101010101010
"Режим"
integer
NOT NULL,
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
CONSTRAINT train_pk
PRIMARY KEY ("НомерПоезда"),
CONSTRAINT train_class_fk FOREIGN KEY ("Класс")
10110101010101010101111010101010101011010101010101011010101010101010101
REFERENCES "КлассПоезда" ("КодКласса")
010101011101101010100010110101010101010101011110101111010101011111111101
ON UPDATE CASCADE ON DELETE CASCADE,
010001010101010111010101010001010110101010110101010101011001011011110111
CONSTRAINT train_regim_fk FOREIGN KEY ("Режим")
010101110101010101110000111001001101011010101001110100101011011110101010
REFERENCES "РежимКурсирования" ("КодРежима")
ON UPDATE CASCADE ON DELETE CASCADE
110101010101111111111001010001010110111100001101010100010110100101010101
);
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
(пример для СУБД PostgreSQL)
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL. Пример создания таблицы

9. DDL. Изменение объекта

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
ALTER TABLE “Станции” ADD COLUMN “НаселенныйПункт” CHAR(50)
00101010111010101010010101011010101101110101010101011000110110101000011
ALTER TABLE “Станции” ADD CONSTRAINT “U2” UNIQUE “НаселенныйПункт”
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL. Изменение объекта
ALTER <object> <name> [действия по
изменению]
Alter table (add column, alter column, drop
column) – изменение таблицы
Alter view – изменение представления
Alter database – изменение базы данных
Alter procedure – изменение процедуры

10. DDL. Удаление объекта

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
ALTER TABLE “Станции” DROP COLUMN “НаселенныйПункт”
101011110101110110101010101010111000111101010101010011010101110001010110
DROP TABLE “Станции”
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL. Удаление объекта
DROP <object> <name>

11. DDL. Порядок создания и удаления объектов схемы:

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
1. Создается пользователь;
00101010101110101010101010101110101010100101010110101011011101010101010
2. Создается база данных;
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
3. Создается схема;
10110101010101010101111010101010101011010101010101011010101010101010101
4. Создаются последовательности;
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
5. Создаются таблицы (сначала родительские,
010101110101010101110000111001001101011010101001110100101011011110101010
потом дочерние);
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
6. Создаются индексы, триггеры и процедуры;
00011010101000010111001001010110100010101110101011110001010001100010101
7. Создаются представления.
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
Удаление – в обратном порядке.
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DDL. Порядок создания и удаления
объектов схемы:

12. DML

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
Извлечение данных – SELECT;
00101010101110101010101010101110101010100101010110101011011101010101010
Вставка новых данных – INSERT;
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
Изменение данных – UPDATE;
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
Удаление данных – DELETE;
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML
Операторы манипулирования данными:
Объект работы – отношение (таблица) или
соединение отношений
Единица манипулирования – запись

13. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT
Оператор предназначен для извлечения
из отношения или соединения отношений
набора записей, отвечающих заданным
условиям.
Результат работы – новое отношение.
Реализует все операции реляционной
алгебры (объединение, пересечение,
проекция, соединение, выборка)

14. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT
Формат:
SELECT <список атрибутов>
FROM <соединяемые отношения>
[WHERE <условия выборки>]
[ORDER BY <критерии сортировки>]
[GROUP BY <критерии группировки>]
[HAVING <условия отбора групп>]

15. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
<список атрибутов>:
01010110101010110101010101011100010101101010101010101101101110101010010
Реализует проекцию РА.
10110101010101010111010101010101010101101010110110101001101010101011101
Указываются имена тех атрибутов, извлекаемых из
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
соединенных отношений, которые войдут в результат.
101011110101110110101010101010111000111101010101010011010101110001010110
Для одноименных атрибутов указывается отношение, из
10110101010101010101111010101010101011010101010101011010101010101010101
которого он извлекается (table.attribute)
010101011101101010100010110101010101010101011110101111010101011111111101
Порядок вхождения определяется порядком перечисления.
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
Если нужно включить все атрибуты, указывается *.
110101010101111111111001010001010110111100001101010100010110100101010101
Для переименования атрибута в результирующем отношении
0101000111000101101010101010110111010101000111111100101100111111100101000
применяется ключевое слово AS (attribute as new_name);
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
Вместо атрибута в результат может вставляться результат,
10110101010101010100011010101011101110101100010101010110101010101010101
возвращаемый функцией (sin(angle) as “sine of angle”);
00101010111010101010010101011010101101110101010101011000110110101000011
Для запрета повторений в результате используется директива
010111101010111000101010101010100010101010000101010101011110101110110101
DISTINCT
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT

16. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
<соединяемые отношения>:
01010110101010110101010101011100010101101010101010101101101110101010010
Реализует соединение РА.
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
Указываются имена соединяемых отношений, декартово
11000110110101000011010111101010111000101010101010100010101010000101010
произведение которых формирует результат.
101011110101110110101010101010111000111101010101010011010101110001010110
Для удобства записи каждому отношению может быть
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
присвоен псевдоним (name synonim1, synonim2)
010001010101010111010101010001010110101010110101010101011001011011110111
Перечисление отношений:
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
Простое перечисление: FROM table1, table2, …
0101000111000101101010101010110111010101000111111100101100111111100101000
Полное декартово произведение;
00011010101000010111001001010110100010101110101011110001010001100010101
Соединение по условию: FROM table1 [INNER | LEFT |
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
RIGHT | FULL] JOIN table2 on <conditon>
00101010111010101010010101011010101101110101010101011000110110101000011
Декартово произведение, содержащее только строки,
010111101010111000101010101010100010101010000101010101011110101110110101
отвечающие условию
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT

17. Примеры соединения:

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
table1
table2
10111010101001010101101010110101010110101010101010110101010101101010101
1) SELECT * FROM table1, table2
num name
num value
result
01010110101010110101010101011100010101101010101010101101101110101010010
1
a
1
xxx
table1.num name table2.num value
10110101010101010111010101010101010101101010110110101001101010101011101
2
b
3
yyy
1
a
1
xxx
00101010101110101010101010101110101010100101010110101011011101010101010
3
c
5
zzz
1
a
3
yyy
11000110110101000011010111101010111000101010101010100010101010000101010
1
a
5
zzz
101011110101110110101010101010111000111101010101010011010101110001010110
2
b
1
xxx
10110101010101010101111010101010101011010101010101011010101010101010101
2
b
3
yyy
010101011101101010100010110101010101010101011110101111010101011111111101
2
b
5
zzz
010001010101010111010101010001010110101010110101010101011001011011110111
3
c
1
xxx
3
c
3
yyy
010101110101010101110000111001001101011010101001110100101011011110101010
3
c
5
zzz
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
2) SELECT * FROM table1 a INNER JOIN table2 b ON a.num=b.num
00011010101000010111001001010110100010101110101011110001010001100010101
result
01111001010110101010101010110010101011010101010101010111101011000101010
a.num name b.num value
10110101010101010100011010101011101110101100010101010110101010101010101
1
a
1
xxx
00101010111010101010010101011010101101110101010101011000110110101000011
3
c
3
yyy
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры соединения:

18. Примеры соединения:

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
table1
table2
10111010101001010101101010110101010110101010101010110101010101101010101
num name
num value
01010110101010110101010101011100010101101010101010101101101110101010010
1
a
1
xxx
10110101010101010111010101010101010101101010110110101001101010101011101
2
b
3
yyy
00101010101110101010101010101110101010100101010110101011011101010101010
3
c
5
zzz
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
3) SELECT * FROM table1 a XXX JOIN table2 b ON a.num=b.num
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
result
result
result
a.num name b.num value
a.num name b.num value
010001010101010111010101010001010110101010110101010101011001011011110111
a.num name b.num value
1
a
1
xxx
1
a
1
xxx
1
a
1
xxx
010101110101010101110000111001001101011010101001110100101011011110101010
2
b
3
c
3
yyy
2
b
110101010101111111111001010001010110111100001101010100010110100101010101
3
c
3
yyy
5
zzz
3
c
3
yyy
0101000111000101101010101010110111010101000111111100101100111111100101000
5
zzz
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
XXX = LEFT
XXX = RIGHT
XXX = FULL
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры соединения:

19. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
<условия выборки>:
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
Реализует выборку РА.
10110101010101010111010101010101010101101010110110101001101010101011101
Указывается одно логическое выражение, которому должны
00101010101110101010101010101110101010100101010110101011011101010101010
удовлетворять все записи соединенного отношения.
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
Записи, не удовлетворяющие условию, отбрасываются.
10110101010101010101111010101010101011010101010101011010101010101010101
Допускаются логические связки AND, OR, NOT.
010101011101101010100010110101010101010101011110101111010101011111111101
Основные условия:
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
Для чисел и дат:
110101010101111111111001010001010110111100001101010100010110100101010101
<, >, >=, <= , BETWEEN min AND max;
0101000111000101101010101010110111010101000111111100101100111111100101000
Для строк:
00011010101000010111001001010110100010101110101011110001010001100010101
like ‘pattern’ – сравнение с образцом (_, %);
01111001010110101010101010110010101011010101010101010111101011000101010
Для всех типов:
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
=, <> IS NULL, IS NOT NULL - для всех типов (нельзя = NULL!);
010111101010111000101010101010100010101010000101010101011110101110110101
IN (set or subquery), EXISTS (subquery)
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT

20. Примеры условий

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
SELECT Фамилия, Курс FROM СТУДЕНТ WHERE
01010110101010110101010101011100010101101010101010101101101110101010010
Специальность=’Математика’ AND Курс=5
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
SELECT Фамилия FROM СТУДЕНТ WHERE Специальность IN
11000110110101000011010111101010111000101010101010100010101010000101010
(’Математика’, ’Экономика’)
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
SELECT Фамилия, Специальность FROM СТУДЕНТ WHERE
010101011101101010100010110101010101010101011110101111010101011111111101
НомерСтудента BETWEEN 200 AND 300
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
SELECT Фамилия, Специальность FROM СТУДЕНТ WHERE
0101000111000101101010101010110111010101000111111100101100111111100101000
НомерСтудента >= 200 AND НомерСтудента <= 300
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
SELECT Фамилия AS ‘ФИО’ FROM СТУДЕНТ WHERE Фамилия LIKE ‘Р%’
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
SELECT Фамилия FROM СТУДЕНТ WHERE Курс IS NULL
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры условий

21. Примеры условий на соединение

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
SELECT Фамилия FROM СТУДЕНТ WHERE НомерСтудента IN
01010110101010110101010101011100010101101010101010101101101110101010010
(SELECT НомерСтудента FROM ЗАПИСЬ WHERE Предмет = ‘А’)
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
SELECT Фамилия FROM СТУДЕНТ WHERE СТУДЕНТ.НомерСтудента
11000110110101000011010111101010111000101010101010100010101010000101010
IN (SELECT ЗАПИСЬ.НомерСтудента FROM ЗАПИСЬ WHERE
101011110101110110101010101010111000111101010101010011010101110001010110
ЗАПИСЬ.Предмет IN (SELECT ЗАНЯТИЯ. Предмет FROM ЗАНЯТИЯ
10110101010101010101111010101010101011010101010101011010101010101010101
WHERE ЗАНЯТИЯ.ДеньНедели = 2))
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
SELECT СТУДЕНТ.НомерСтудента, СТУДЕНТ.Фамилия,
010101110101010101110000111001001101011010101001110100101011011110101010
ЗАПИСЬ.Предмет FROM СТУДЕНТ, ЗАПИСЬ WHERE
110101010101111111111001010001010110111100001101010100010110100101010101
СТУДЕНТ.НомерСтудента = ЗАПИСЬ.НомерСтудента
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
SELECT НомерСтудента, Предмет, ДеньНедели FROM СТУДЕНТ,
10110101010101010100011010101011101110101100010101010110101010101010101
ЗАПИСЬ, ЗАНЯТИЯ WHERE СТУДЕНТ.НомерСтудента =
00101010111010101010010101011010101101110101010101011000110110101000011
ЗАПИСЬ.НомерСтудента AND ЗАПИСЬ.Предмет = ЗАНЯТИЯ. Предмет
010111101010111000101010101010100010101010000101010101011110101110110101
AND СТУДЕНТ.Фамилия = ‘Сидоров’
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры условий на соединение

22. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
<критерии сортировки>:
01010110101010110101010101011100010101101010101010101101101110101010010
Указываются имена атрибутов, по значениям которых
10110101010101010111010101010101010101101010110110101001101010101011101
требуется упорядочить записи в результате.
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
При указании более одного атрибута – лексикографическая
101011110101110110101010101010111000111101010101010011010101110001010110
сортировка.
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
Для каждого атрибута может быть задано свое направление
010001010101010111010101010001010110101010110101010101011001011011110111
сортировки:
010101110101010101110000111001001101011010101001110100101011011110101010
ASC – по возрастанию
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
DESC – по убыванию
00011010101000010111001001010110100010101110101011110001010001100010101
Вместо имени атрибута может быть указан его порядковый
01111001010110101010101010110010101011010101010101010111101011000101010
номер в результате
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
Если направление сортировки не указано, сортировка
010111101010111000101010101010100010101010000101010101011110101110110101
производится по возрастанию
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT

23. Примеры сортировки

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
SELECT Фамилия, Специальность, Курс FROM
01010110101010110101010101011100010101101010101010101101101110101010010
СТУДЕНТ WHERE Специальность=’Экономика’
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
ORDER BY Фамилия
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
SELECT Фамилия, Специальность, Курс FROM
010101011101101010100010110101010101010101011110101111010101011111111101
СТУДЕНТ WHERE Курс IN (1, 2, 4) ORDER BY
010001010101010111010101010001010110101010110101010101011001011011110111
Фамилия ASC, 3 DESC
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры сортировки

24. DML. Оператор SELECT Агрегирующие функции

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
При необходимости запрос может вернуть не сами записи, а их
10110101010101010111010101010101010101101010110110101001101010101011101
агрегированные величины:
00101010101110101010101010101110101010100101010110101011011101010101010
COUNT – количество значений поля
11000110110101000011010111101010111000101010101010100010101010000101010
SUM – сумма значений поля
101011110101110110101010101010111000111101010101010011010101110001010110
MIN – минимальное значение поля
10110101010101010101111010101010101011010101010101011010101010101010101
MAX – максимальное значение поля
010101011101101010100010110101010101010101011110101111010101011111111101
AVG – среднее (арифметическое) значение поля
010001010101010111010101010001010110101010110101010101011001011011110111
STDDEV – стандартное отклонение поля
010101110101010101110000111001001101011010101001110100101011011110101010
В этом случае всегда возвращается ОДНА запись.
110101010101111111111001010001010110111100001101010100010110100101010101
НЕЛЬЗЯ в один запрос вставлять поле и агрегированную величину:
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
SELECT COUNT([DISTINCT] ФАМИЛИЯ), SUM(СТИПЕНДИЯ) FROM
01111001010110101010101010110010101011010101010101010111101011000101010
СТУДЕНТЫ
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
SELECT ФАМИЛИЯ, COUNT(ИМЯ) FROM СТУДЕНТЫ
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT
Агрегирующие функции

25. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
:
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
Указываются имена атрибутов, одинаковые
00101010101110101010101010101110101010100101010110101011011101010101010
значения которых образуют одинаковую
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
групповую запись в результате.
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
При использовании группировки для каждой
010001010101010111010101010001010110101010110101010101011001011011110111
группы можно вычислить агрегированное
010101110101010101110000111001001101011010101001110100101011011110101010
значение (SUM, COUNT etc.).
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
Группировать можно только по тем атрибутам,
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
которые указаны после SELECT, а не по любым
10110101010101010100011010101011101110101100010101010110101010101010101
атрибутам соединяемых отношений.
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT
<критерии группировки>

26. DML. Оператор SELECT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
:
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
Указываются требования, которым должны
00101010101110101010101010101110101010100101010110101011011101010101010
удовлетворять сформированные группы, чтобы
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
быть отобранными в результат.
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
Если группа не удовлетворяет условию, она вся
010001010101010111010101010001010110101010110101010101011001011011110111
отбрасывается.
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
При использовании в одном запросе секций
0101000111000101101010101010110111010101000111111100101100111111100101000
WHERE и HAVING сначала выполняется WHERE
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
(отбор записей), потом GROUP BY (группировка),
10110101010101010100011010101011101110101100010101010110101010101010101
а потом – HAVING (отбраковка групп).
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор SELECT
<условия отбора групп>

27. Примеры группировки

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
SELECT Специальность, COUNT(*) FROM СТУДЕНТ
01010110101010110101010101011100010101101010101010101101101110101010010
GROUP BY Специальность
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
SELECT Специальность, COUNT(*) FROM СТУДЕНТ
101011110101110110101010101010111000111101010101010011010101110001010110
GROUP BY Специальность HAVING COUNT(*) > 2
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
SELECT Специальность, MAX(НомерСтудента) FROM
010101110101010101110000111001001101011010101001110100101011011110101010
СТУДЕНТ WHERE Курс = 4
110101010101111111111001010001010110111100001101010100010110100101010101
GROUP BY Специальность HAVING COUNT(*) > 1
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры группировки

28. Реализация теоретико-множественных операций

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
Объединение R1 R2:
00101010101110101010101010101110101010100101010110101011011101010101010
(SELECT * FROM R1) UNION (SELECT * FROM R2)
11000110110101000011010111101010111000101010101010100010101010000101010
Пересечение R1 R2:
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
SELECT * FROM R1 WHERE IN (SELECT * FROM R2)
010101011101101010100010110101010101010101011110101111010101011111111101
Разность R1\R2:
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
SELECT * FROM R1 WHERE NOT IN (SELECT * FROM R2)
110101010101111111111001010001010110111100001101010100010110100101010101
Симметрическая разность R1 R2:
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
(SELECT * FROM R1 WHERE NOT IN (SELECT * FROM R2))
01111001010110101010101010110010101011010101010101010111101011000101010
UNION (SELECT * FROM R2 WHERE NOT IN (SELECT * FROM R1))
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
Декартово произведение R1 R2:
010111101010111000101010101010100010101010000101010101011110101110110101
SELECT * FROM R1, R2
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Реализация теоретико-множественных
операций

29. DML. Оператор UPDATE

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
Оператор предназначен для изменения в
01010110101010110101010101011100010101101010101010101101101110101010010
отношении (или соединении отношений, если это
10110101010101010111010101010101010101101010110110101001101010101011101
допускает БД) набора записей, отвечающих
00101010101110101010101010101110101010100101010110101011011101010101010
заданным условиям.
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
Изменяются указанные в запросе поля записей.
10110101010101010101111010101010101011010101010101011010101010101010101
Результат работы – отношение с измененными
010101011101101010100010110101010101010101011110101111010101011111111101
записями. Сам оператор никакого результата не
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
возвращает (нельзя использовать в SELECT).
110101010101111111111001010001010110111100001101010100010110100101010101
При обновлении могут срабатывать триггеры, а
0101000111000101101010101010110111010101000111111100101100111111100101000
так же выполняться обновления значений
00011010101000010111001001010110100010101110101011110001010001100010101
внешних ключей в ссылающихся таблицах.
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
Запрос может быть не исполнен, если новое
00101010111010101010010101011010101101110101010101011000110110101000011
значение будет нарушать ограничения.
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор UPDATE

30. DML. Оператор UPDATE

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
Name
– имя обновляемой таблицы, или их
010001010101010111010101010001010110101010110101010101011001011011110111
соединение (join)*
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
Field
– имя обновляемого поля
0101000111000101101010101010110111010101000111111100101100111111100101000
Val
– присваиваемое полю значение (может быть
00011010101000010111001001010110100010101110101011110001010001100010101
выражение, в том числе, использующее
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
СТАРОЕ значение поля)
00101010111010101010010101011010101101110101010101011000110110101000011
Condition – условие, которому должна удовлетворять
010111101010111000101010101010100010101010000101010101011110101110110101
обновляемая запись
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор UPDATE
UPDATE <Name>
SET <field=val [, field=val, …]>
[WHERE <Condition>]

31. Примеры обновления

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
UPDATE Факультеты f INNER JOIN Кафедры k ON f.ID = k.FacID SET
01010110101010110101010101011100010101101010101010101101101110101010010
f.Бюджет = 0 WHERE k.Выпускающая=true
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
UPDATE persons SET street = 'Nissestien 67', city = 'Sandnes' WHERE
11000110110101000011010111101010111000101010101010100010101010000101010
lastname = 'Tjessem' AND firstname = 'Jakob‘
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
UPDATE emp a
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
SET deptno = (SELECT deptno FROM dept WHERE loc = ‘BOSTON’),
010101110101010101110000111001001101011010101001110100101011011110101010
(sal, comm) = (SELECT 1.1*AVG(sal), 1.5*AVG(comm) FROM emp
110101010101111111111001010001010110111100001101010100010110100101010101
b WHERE a.deptno = b.deptno)
0101000111000101101010101010110111010101000111111100101100111111100101000
WHERE deptno IN (SELECT deptno FROM dept WHERE loc =
00011010101000010111001001010110100010101110101011110001010001100010101
‘DALLAS’ OR loc = ‘DETROIT’)
01111001010110101010101010110010101011010101010101010111101011000101010
Примеры обновления
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
UPDATE sales SET SaleDate=Null, Count=0
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011

32. DML. Оператор DELETE

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
Оператор предназначен для удаления в
01010110101010110101010101011100010101101010101010101101101110101010010
отношении (или соединении отношений, если это
10110101010101010111010101010101010101101010110110101001101010101011101
допускает БД) набора записей, отвечающих
00101010101110101010101010101110101010100101010110101011011101010101010
заданным условиям.
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
Записи удаляются целиком (нельзя удалить
10110101010101010101111010101010101011010101010101011010101010101010101
часть записи).
010101011101101010100010110101010101010101011110101111010101011111111101
Результат работы – отношение с удаленными
010001010101010111010101010001010110101010110101010101011001011011110111
записями. Сам оператор никакого результата не
010101110101010101110000111001001101011010101001110100101011011110101010
возвращает (нельзя использовать в SELECT)
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
При удалении могут срабатывать триггеры, а так
00011010101000010111001001010110100010101110101011110001010001100010101
же выполняться
01111001010110101010101010110010101011010101010101010111101011000101010
«об-null-ивание» значений внешних ключей в
10110101010101010100011010101011101110101100010101010110101010101010101
ссылающихся таблицах;
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
Удаление ссылающихся записей в ссылающихся
010101010111000111101010101010011010101110001010110101101010101010101011
таблицах
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор DELETE

33. DML. Оператор DELETE

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
Name
– имя таблицы или соединение (join)*
010101110101010101110000111001001101011010101001110100101011011110101010
Condition – условие, которому должны удовлетворять
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
удаляемые записи
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор DELETE
DELETE FROM <Name>
[WHERE <Condition>]

34. Примеры удаления

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
DELETE FROM products WHERE price = 10;
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
DELETE FROM products;
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
DELETE FROM Authors a JOIN Articles b ON a.ID=b.Author
010001010101010111010101010001010110101010110101010101011001011011110111
WHERE AuthorLastName='Henry';
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры удаления

35. DML. Оператор INSERT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
Оператор предназначен для вставки в
01010110101010110101010101011100010101101010101010101101101110101010010
отношение одной или более записей.
10110101010101010111010101010101010101101010110110101001101010101011101
Записи вставляются целиком (нельзя вставить
00101010101110101010101010101110101010100101010110101011011101010101010
часть записи).
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
Результат работы – отношение с добавленными
10110101010101010101111010101010101011010101010101011010101010101010101
записями. Сам оператор никакого результата не
010101011101101010100010110101010101010101011110101111010101011111111101
возвращает (нельзя использовать в SELECT)
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
При вставке записей могут срабатывать триггеры
110101010101111111111001010001010110111100001101010100010110100101010101
Запись(и) может быть не вставлена, если
0101000111000101101010101010110111010101000111111100101100111111100101000
нарушается условие на ее значения.
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
В качестве источника записей может быть
10110101010101010100011010101011101110101100010101010110101010101010101
использован оператор SELECT
00101010111010101010010101011010101101110101010101011000110110101000011
Неуказанные в запросе поля принимают
010111101010111000101010101010100010101010000101010101011110101110110101
значение DEFAULT
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор INSERT

36. DML. Оператор INSERT

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
INSERT INTO <Name> ([<Col>, ... ]) VALUES (<val>,...)
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
INSERT INTO <Name> VALUES (<val>,...)
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
INSERT INTO <Name> SELECT <cols> FROM <tables>
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
WHERE <Condition>
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
Name
– имя таблицы
00011010101000010111001001010110100010101110101011110001010001100010101
Col
– имя столбца (поля)
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
Val
– значение поля во вставляемой записи
00101010111010101010010101011010101101110101010101011000110110101000011
SELECT – запрос, извлекающий набор записей,
010111101010111000101010101010100010101010000101010101011110101110110101
использующихся для вставки
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
DML. Оператор INSERT

37. Примеры вставки

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
INSERT INTO films VALUES ('UA502', 'Bananas', 105, '1971-0710111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
13', 'Comedy', '82 minutes')
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
INSERT INTO films (code, title, did, date_prod, kind) VALUES
11000110110101000011010111101010111000101010101010100010101010000101010
('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama')
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
INSERT INTO films VALUES ('UA502', 'Bananas', 105,
010101011101101010100010110101010101010101011110101111010101011111111101
DEFAULT, 'Comedy', '82 minutes')
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
INSERT INTO films (code, title, did, date_prod, kind) VALUES
0101000111000101101010101010110111010101000111111100101100111111100101000
('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'),
00011010101000010111001001010110100010101110101011110001010001100010101
('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy');
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
INSERT INTO films SELECT * FROM tmp_films WHERE
00101010111010101010010101011010101101110101010101011000110110101000011
date_prod < '2004-05-07';
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры вставки

38. Операторы управления пользователем БД

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Операторы управления пользователем
БД
CREATE USER <username>
ALTER DATABASE <name> SET
OWNER=<username>
GRANT <privilege> ON <name> TO
<username>
REVOKE <privilege> ON <name> FROM
<username>
DROP USER <username>

39. Привилегии пользователя

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
SELECT
01010110101010110101010101011100010101101010101010101101101110101010010
INSERT
10110101010101010111010101010101010101101010110110101001101010101011101
UPDATE
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
DELETE
101011110101110110101010101010111000111101010101010011010101110001010110
REFERENCES
10110101010101010101111010101010101011010101010101011010101010101010101
TRIGGER
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
ALL PRIVILEGES
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
GRANT SELECT ON mytable TO PUBLIC;
0101000111000101101010101010110111010101000111111100101100111111100101000
GRANT SELECT, UPDATE, INSERT ON mytable TO admin;
00011010101000010111001001010110100010101110101011110001010001100010101
GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw;
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
REVOKE INSERT ON films FROM PUBLIC;
00101010111010101010010101011010101101110101010101011000110110101000011
REVOKE ALL PRIVILEGES ON kinds FROM manuel;
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Привилегии пользователя

40. Управление транзакциями

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
Транзакция – последовательность логически
00101010101110101010101010101110101010100101010110101011011101010101010
связанных запросов, целенаправленно и
11000110110101000011010111101010111000101010101010100010101010000101010
логически связанно меняющих состояние БД;
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
У транзакции имеется начало, набор точек
010101011101101010100010110101010101010101011110101111010101011111111101
сохранения (отката) и конец.
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
В конце транзакцию можно применить
110101010101111111111001010001010110111100001101010100010110100101010101
(зафиксировать) или откатить
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
В процессе исполнения транзакции, до ее
01111001010110101010101010110010101011010101010101010111101011000101010
завершения (фиксации или отката) объекты,
10110101010101010100011010101011101110101100010101010110101010101010101
которыми на манипулирует, могут быть
00101010111010101010010101011010101101110101010101011000110110101000011
«захвачены»
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Управление транзакциями

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

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
Зафиксировать, что транзакция началась
101011110101110110101010101010111000111101010101010011010101110001010110
Указать (при необходимости), какие объекты
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
захватываются и уровень их блокировки
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
Указывает точку возврата, к которой можно
00011010101000010111001001010110100010101110101011110001010001100010101
откатиться при частичном откате транзакции
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
Удаление успешно пройденной точки возврата
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Операторы управления транзакциями:
BEGIN – применяется для того, чтобы:
SAVEPOINT <NAME>
RELEASE SAVEPOINT <NAME>

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

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
сделать «постоянными» все изменения,
101011110101110110101010101010111000111101010101010011010101110001010110
сделанные в текущей транзакции (реально
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
данные могут быть изменены несколько позже)
010001010101010111010101010001010110101010110101010101011001011011110111
очистить все точки сохранения данной
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
транзакции
0101000111000101101010101010110111010101000111111100101100111111100101000
завершить транзакцию
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
освободить все блокировки данной транзакции
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Операторы управления транзакциями:
COMMIT – применяется для того, чтобы:

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

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
отменить все изменения, внесённые начиная с
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
момента начала транзакции или с какой-то
010001010101010111010101010001010110101010110101010101011001011011110111
точки сохранения (SAVEPOINT).
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
очистить все точки сохранения данной
0101000111000101101010101010110111010101000111111100101100111111100101000
транзакции
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
завершить транзакцию
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
освободить все блокировки данной транзакции
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Операторы управления транзакциями:
ROLLBACK – применяется для того,
чтобы:

44. Примеры:

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
BEGIN;
01010110101010110101010101011100010101101010101010101101101110101010010
INSERT INTO table1 VALUES (1);
10110101010101010111010101010101010101101010110110101001101010101011101
SAVEPOINT my_savepoint;
00101010101110101010101010101110101010100101010110101011011101010101010
INSERT INTO table1 VALUES (2);
11000110110101000011010111101010111000101010101010100010101010000101010
ROLLBACK TO SAVEPOINT my_savepoint;
101011110101110110101010101010111000111101010101010011010101110001010110
INSERT INTO table1 VALUES (3);
10110101010101010101111010101010101011010101010101011010101010101010101
COMMIT;
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
BEGIN;
110101010101111111111001010001010110111100001101010100010110100101010101
INSERT INTO table1 VALUES (3);
0101000111000101101010101010110111010101000111111100101100111111100101000
SAVEPOINT my_savepoint;
00011010101000010111001001010110100010101110101011110001010001100010101
INSERT INTO table1 VALUES (4);
01111001010110101010101010110010101011010101010101010111101011000101010
RELEASE SAVEPOINT my_savepoint;
10110101010101010100011010101011101110101100010101010110101010101010101
COMMIT;
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Примеры:

45. Хранимые процедуры и триггеры

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
Передача управления (CALL, GO TO, RETURN)
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
Проверка условий (IF … ELSE, SWITCH)
010111101010111000101010101010100010101010000101010101011110101110110101
Организация циклов (FOR, WHILE)
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Хранимые процедуры и триггеры
Используются для реализации сложной
бизнес-логики (положений делового
регламента, не описываемых
ограничениями);
Хранятся на сервере СУБД
Пишутся на расширенном языке SQL,
содержащем специальные операторы:

46. Хранимые процедуры

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
10110101010101010111010101010101010101101010110110101001101010101011101
Вызываются приложением, как запрос с
00101010101110101010101010101110101010100101010110101011011101010101010
использованием ключевого слова EXECUTE или
11000110110101000011010111101010111000101010101010100010101010000101010
101011110101110110101010101010111000111101010101010011010101110001010110
CALL;
10110101010101010101111010101010101011010101010101011010101010101010101
Могут иметь аргументы и возвращать результат
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
(в том числе – отношение, как и SELECT);
010101110101010101110000111001001101011010101001110100101011011110101010
Аргументы могут быть входящие и исходящие;
110101010101111111111001010001010110111100001101010100010110100101010101
0101000111000101101010101010110111010101000111111100101100111111100101000
Могут выполнить любое количество запросов на
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
SQL, в том числе – несколько транзакций;
10110101010101010100011010101011101110101100010101010110101010101010101
Результаты внутренних запросов SELECT
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
обрабатываются в виде курсоров
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Хранимые процедуры

47. Курсор

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
01010110101010110101010101011100010101101010101010101101101110101010010
Курсор – временная структура данных (аналог
10110101010101010111010101010101010101101010110110101001101010101011101
таблицы), хранящий результаты запроса
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
SELECT построчно
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
Предназначен для обработки в процедурах
010101011101101010100010110101010101010101011110101111010101011111111101
Имеет операции
010001010101010111010101010001010110101010110101010101011001011011110111
010101110101010101110000111001001101011010101001110100101011011110101010
OPEN – открыть курсор
110101010101111111111001010001010110111100001101010100010110100101010101
FETCH – перейти к очередной записи
0101000111000101101010101010110111010101000111111100101100111111100101000
00011010101000010111001001010110100010101110101011110001010001100010101
CLOSE – закрыть курсор
01111001010110101010101010110010101011010101010101010111101011000101010
10110101010101010100011010101011101110101100010101010110101010101010101
Бывают однонаправленные и реверсивные
00101010111010101010010101011010101101110101010101011000110110101000011
курсоры
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Курсор

48. Пример хранимой процедуры

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
CREATE OR REPLACE PROCEDURE cs_create_job(v_job_id IN INTEGER) IS
10111010101001010101101010110101010110101010101010110101010101101010101
a_running_job_count INTEGER;
01010110101010110101010101011100010101101010101010101101101110101010010
PRAGMA AUTONOMOUS_TRANSACTION;
10110101010101010111010101010101010101101010110110101001101010101011101
00101010101110101010101010101110101010100101010110101011011101010101010
BEGIN
11000110110101000011010111101010111000101010101010100010101010000101010
LOCK TABLE cs_jobs IN EXCLUSIVE MODE;
101011110101110110101010101010111000111101010101010011010101110001010110
SELECT count(*) INTO a_running_job_count FROM cs_jobs WHERE end_stamp IS NULL;
IF a_running_job_count > 0 THEN COMMIT;
10110101010101010101111010101010101011010101010101011010101010101010101
raise_application_error(-20000, 'Unable to create a new job: a job is currently running.');
010101011101101010100010110101010101010101011110101111010101011111111101
END IF;
010001010101010111010101010001010110101010110101010101011001011011110111
DELETE FROM cs_active_job;
010101110101010101110000111001001101011010101001110100101011011110101010
INSERT INTO cs_active_job(job_id) VALUES (v_job_id);
110101010101111111111001010001010110111100001101010100010110100101010101
BEGIN INSERT INTO cs_jobs (job_id, start_stamp) VALUES (v_job_id, sysdate);
0101000111000101101010101010110111010101000111111100101100111111100101000
EXCEPTION WHEN dup_val_on_index THEN NULL;
00011010101000010111001001010110100010101110101011110001010001100010101
END;
01111001010110101010101010110010101011010101010101010111101011000101010
COMMIT;
END;
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Пример хранимой процедуры

49. Триггеры

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
Хранимые процедуры, привязываемые к
01010110101010110101010101011100010101101010101010101101101110101010010
таблицам, и вызываемые при ее изменении:
10110101010101010111010101010101010101101010110110101001101010101011101
Вставка, удаление и/или изменение записей
00101010101110101010101010101110101010100101010110101011011101010101010
11000110110101000011010111101010111000101010101010100010101010000101010
Триггеры бывают:
101011110101110110101010101010111000111101010101010011010101110001010110
Табличные – вызывается при изменении для всей
10110101010101010101111010101010101011010101010101011010101010101010101
таблицы 1 раз при изменении;
010101011101101010100010110101010101010101011110101111010101011111111101
Строчные – вызывается при изменении для каждой
010001010101010111010101010001010110101010110101010101011001011011110111
записи;
010101110101010101110000111001001101011010101001110100101011011110101010
110101010101111111111001010001010110111100001101010100010110100101010101
У одной таблицы может быть несколько триггеров,
0101000111000101101010101010110111010101000111111100101100111111100101000
одна и та же процедура может выполнять роль
00011010101000010111001001010110100010101110101011110001010001100010101
разных
триггеров.
01111001010110101010101010110010101011010101010101010111101011000101010
Триггеры могут быть «до» и «после»-триггеры.
10110101010101010100011010101011101110101100010101010110101010101010101
00101010111010101010010101011010101101110101010101011000110110101000011
Триггер имеет доступ как к старым (до изменения)
010111101010111000101010101010100010101010000101010101011110101110110101
так и новым (после изменения) данным.
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Триггеры

50. Пример триггера

100101111010101110100101111010101010101011100010111000110001111010101010
11101010101010111010101000101010101011101010101010100001010101010110110
10111101010101010100010101010101101010111111101010101001010101010101010
10101110000001010101101010110101101010101111010101010101010101010001010
10111010101001010101101010110101010110101010101010110101010101101010101
CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger
01010110101010110101010101011100010101101010101010101101101110101010010
AFTER UPDATE ON district
10110101010101010111010101010101010101101010110110101001101010101011101
BEGIN
00101010101110101010101010101110101010100101010110101011011101010101010
INSERT INTO info VALUES ('table "district" has changed');
11000110110101000011010111101010111000101010101010100010101010000101010
END;
101011110101110110101010101010111000111101010101010011010101110001010110
10110101010101010101111010101010101011010101010101011010101010101010101
010101011101101010100010110101010101010101011110101111010101011111111101
010001010101010111010101010001010110101010110101010101011001011011110111
/* Триггер на уровне строки */
010101110101010101110000111001001101011010101001110100101011011110101010
CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger
110101010101111111111001010001010110111100001101010100010110100101010101
AFTER UPDATE ON district FOR EACH ROW
0101000111000101101010101010110111010101000111111100101100111111100101000
BEGIN
00011010101000010111001001010110100010101110101011110001010001100010101
01111001010110101010101010110010101011010101010101010111101011000101010
INSERT INTO info VALUES ('one string in table "district" has
10110101010101010100011010101011101110101100010101010110101010101010101
changed');
00101010111010101010010101011010101101110101010101011000110110101000011
END;
010111101010111000101010101010100010101010000101010101011110101110110101
010101010111000111101010101010011010101110001010110101101010101010101011
11010101010101011010101010101011010101010101010101010101011101101010100
010110101010101010101011110101111010101011111111101010001010101010111011
00011111000010101011110001010101011
Пример триггера
English     Русский Rules