Сделай Сам Свою Работу на 5

Создание последовательности





Последовательности создаются командой SQL CREATE SEQUENCE с положительным или отрицательным приращением. Синтаксис команды CREATE SEQUENCE:

CREATE SEQUENCE последовательность

[INCREMENT приращение]

[MINVALUE минимум]

[MAXVALUE максимум]

[START начало]

[CACHE кэш]

[CYCLE]

В этом определении единственный обязательный параметр последовательностиопределяет имя создаваемой последовательности. Значения последовательности представляются типом integer, поэтому максимальное и минимальное значения должны лежать в интервале от 2 147 483 647 до -2 147 483 647.

Ниже описаны необязательные секции команды CREATE SEQUENCE.

• INCREMENT приращение. Числовое изменение текущего значения последователь­ности. Используется при вызове для последовательности функции nextval(). Отрицательное приращение создает убывающую последовательность. По умол­чанию приращение равно 1.

• MINVALUE минимум. Минимальное допустимое значение последовательности. Попытка уменьшить текущее значение ниже заданного минимума приведет к ошибке или циклическому переходу к максимальному значению (если после­довательность создавалась с ключевым словом CYCLE). По умолчанию минималь­ное значение равно 1 для возрастающих последовательностей или -2 147 483 647 для убывающих последовательностей.



• MAXVALUE максимум. Максимальное допустимое значение последовательности. Попытка увеличить текущее значение выше заданного максимума приведет к ошибке или циклическому переходу к минимальному значению. По умолча­нию максимальное значение равно 2 147 483 647 для возрастающих последова­тельностей или -1 для убывающих последовательностей.

• START начало. Начальное значение последовательности, которым является лю­бое целое число в интервале между минимальным и максимальным значениями. По умолчанию последовательность начинается с нижнего порога для возраста­ющих последовательностей или с верхнего порога для убывающих последова­тельностей.

• CACHE кэш. Возможность предварительного вычисления и хранения значений последовательности в памяти. Кэширование ускоряет доступ к часто использу­емым последовательностям. Минимальное значение, заданное по умолчанию, равно 1; увеличение объема кэша приводит к увеличению числа кэшируемых значений.



• CYCLE. При достижении нижнего или верхнего порога последовательность про­должает генерировать новые значения. В этом случае она переходит к мини­мальному значению (для возрастающих последовательностей) или к максималь­ному значению (для убывающих последовательностей).

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

Создадим последовательности для наших таблиц:

CREATE SEQUENCE zakazy.clienty_id_cln_seq;

ALTER TABLE zakazy.clienty

ALTER COLUMN id_cln

SET DEFAULT nextval('zakazy.clienty_id_cln_seq');

CREATE SEQUENCE zakazy.offisy_id_ofc_seq;

ALTER TABLE zakazy.offisy

ALTER COLUMN id_ofc

SET DEFAULT nextval('zakazy.offisy_id_ofc_seq');

CREATE SEQUENCE zakazy.sluzhaschie_id_slzh_seq;

ALTER TABLE zakazy.sluzhaschie

ALTER COLUMN id_slzh

SET DEFAULT nextval('zakazy.sluzhaschie_id_slzh_seq');

CREATE SEQUENCE zakazy.zakazy_id_order_seq;

ALTER TABLE zakazy.zakazy

ALTER COLUMN id_order

SET DEFAULT nextval('zakazy.zakazy_id_order_seq');

Операции с последовательностями

Выборка атрибутов последовательности требуется относительно редко. Как пра­вило, все операции с последовательностями выполняются при помощи трех спе­циальных функций PostgreSQL.

• nextval('последовательность'). Увеличивает текущее значение заданной по­следо­вательности и возвращает новое значение в виде величины типа integer.

Например: SELECT nextval('zakazy.clienty_id_cln_seq')

• currval('последовательность'). Возвращает значение, полученное при послед­нем вызове nextval(). Значение ассоциируется с определенным сеансом Post­greSQL, поэтому если функция nextval() еще не вызывалась для заданного подключения в текущем сеансе, функция не сможет вернуть значение.



• setval('последовательность'.n). Присваивает число nтекущему значению заданной последовательности. Следующий вызов nextval() возвращает значе­ние n+прира­щение, где приращение-- изменение текущего значения последова­тельности при каждой итерации.

• setval('последовательность'. n. b). Также присваивает число n текущему зна­чению заданной последовательности. Если параметр b(тип Boolean) равен false, то следующий вызов nextval () вернет значение n, а если параметр равен true, то будет возвращено значение n+приращение, как при вызове функции setval() без дополнительного аргумента.

Удаление последовательности

Команда SQL DROP SEQUENCE удаляет последовательность или несколько последо­вательностей одновременно. Синтаксис команды

DROP SEQUENCE: DROP SEQUENCE последовательность [. ...]

В качестве параметра команде передается имя удаляемой последовательности. Допускается одновременное удаление нескольких последовательностей, перечис­ленных через запятую.

Прежде чем уничтожать последовательность, убедитесь в том, что она не ис­пользуется другой таблицей, функцией или другим объектом базы данных. Если забыть об этой проверке, это нарушит работу других операций, зависящих от дан­ной последовательности.

Например, удалим последовательность zakazy.clienty_id_cln_seq:

ALTER TABLE zakazy.clienty

ALTER COLUMN id_cln DROP DEFAULT;

DROP SEQUENCE zakazy.clienty_id_cln_seq;

Индексы

Индексомназывается объект базы данных, позволяющий значительно повысить скорость обращения к базе за счет ускоренной обработки команд, содержащих срав­нительные критерии. Хранимая в индексах информация о размещении данных по одному или нескольким полям таблицы повышает эффективность поиска записей при условной выборке (например, с использованием секции WHERE).

Индексы ускоряют доступ к базе, но они также сопряжены с дополнительными затратами ресурсов. При изменении данных в поле индекс приходится обновлять, поэтому поддержание редко используемых индексов отрицательно сказывается на быстродействии системы (затраты времени на поддержание индексов превышают экономию от их использования). Как правило, индексы определяются только для полей, часто указываемых в условиях поиска.

Создание индекса

Для создания индексов в SQL предусмотрен оператор CREATE INDEX:

CREATE UNIQUE INDEX имя_индекса

ON имя_таблицы (поле1, поле2, ... , полеN)

Ключевое слово UNIQUE необязательное, но оно используется для создания индексов с уникальностью значений в индексируемых столбцах. Установка некоторых типов ограничений на столбцы (прежде всего ограничения PRIMARY KEY и UNIQUE) также приводит к автоматическому построению индекса.

Например.

Поскольку чаще всего товар ищется по его наименованию, а не по первичному ключу, поэтому создадим следующий индекс:

CREATE INDEX index_descript

ON zakazy.tovary (description)

Удаление индекса

Для удаления индекса из базы данных используется оператор:

DROP INDEX имя_индекса

Системные индексы, создаваемые автоматически для полей с атрибутами UNIQUE, а также для ключевых полей, удалить с помощью оператора DROP INDEX невозможно.

1.3. Работа с таблицами

С созданными таблицами можно выполнить следующие операции:

– добавлять новые строки с помощью оператора INSERT INTO;

– обновлять существующие строки с помощью оператора UPDATE;

– удалять строки из таблиц с помощью оператора DELETE FROM;

– произвести выборку данных из таблиц с помощью оператора SELECT;

– создавать хранимые запросы или представления с помощью оператора CREATE VIEW.

Изменение данных в таблице

Оператор INSERT INTO

Для добавления одной строки в таблицу используется SQL-оператор:

INSERT INTO имя_таблицы (список_полей)

VALUES (список_значений)

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

INSERT INTO имя_таблицы

VALUES (список_значений)

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

INSERT INTO zakazy.offisy

VALUES (1,'Инза','Ульяновская', 2108, 300000.00, 186042.00);

INSERT INTO zakazy.offisy

VALUES (2,'Буинск','Татарстан', 2106, 575000.00, 692637.00);

INSERT INTO zakazy.offisy

VALUES (3,'Тверь', 'Московская', 2104, 800000.00, 735042.00);

INSERT INTO zakazy.offisy

VALUES (4,'Орел', 'Орловская', 2105, 350000.00, 367911.00);

INSERT INTO zakazy.offisy

VALUES (5,'Киров','Кировская', 2108, 725000.00, 835915.00);

Результат выполнения приведенных запросов можно просмотреть нажатием кнопки «Просмотр данных в выбранном объекте» (см. Рис. 10).

Файл insert_data.sql содержит скрипты добавления данных во все таблицы БД zakazy.

Оператор UPDATE

Для изменения данных в таблице используется SQL-оператор:

UPDATE имя_таблицы

SET имя_столбца1 = новое_значение1

имя_столбца1 = новое_значение1

. . .

имя_столбца1 = новое_значение1

WHERE условие_отбора

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

Рассмотрим пример применения оператора UPDATE. Предположим, что продажи в Кирове увеличились на 100000.

Для этого необходимо выполнить оператор:

UPDATE zakazy.offisy

SET sales = sales - 100000

WHERE city = 'Киров'

Рис. 10. Дерево базы данных после выполнения запросов CREATE TABLE

Оператор DELETE

Для удаления строк из таблиц баз данных используется оператор DELETE FROM

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

WHERE условие_отбора

Рассмотрим пример использования оператора DELETE FROM.

Допустим, что в связи, с экономическим кризисом, был расформирован офис в Кирове:

DELETE FROM zakazy.offisy

WHERE city = 'Киров'

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.