Лабораторные работы по курсу «Базы данных»


SELECT books[2] FROM favorite_books



Pdf көрінісі
бет33/46
Дата12.05.2023
өлшемі0,79 Mb.
#92097
түріПрактикум
1   ...   29   30   31   32   33   34   35   36   ...   46
SELECT books[2] FROM favorite_books
WHERE books[2] IS NOT NULL; 
В PostgreSQL также поддерживается возможность создания срезов при 
выборке из массива. Срез аналогичен обычному обращению к элементам по 
индексу, но он описывает интервал значений. Срез задается парой 
целочисленных индексов, разделенных двоеточием и заключенных в 
квадратные скобки. 
Пример 6.7: 
Запрос среза с первого по второй элемент (включительно): 
SELECT books[l:2] FROM favorite_books; 
Чтобы узнать количество значений, хранящихся в массиве, следует 
воспользоваться функцией array_dims(). 
Автоматизация стандартных процедур 
В лабораторной работе будут рассмотрены две категории расширений, 
позволяющих автоматизировать часто выполняемых операций с БД: 
последовательности и триггеры. 
1) Последовательности 
Последовательностью (sequence) в PostgreSQL называется объект базы 
данных, 
который 
фактически 
представляет 
собой 
автоматически 
увеличивающееся число. В других СУБД последовательности часто 
называются счетчиками. Последовательность определяется текущим 
числовым значением и набором характеристик, определяющих алгоритм 
автоматического увеличения (или уменьшения) используемых данных. 
Наряду с текущим значением в определение последовательности также 
включается минимальное значение, максимальное значение и приращение. 
Обычно приращение равно 1, но оно также может быть любым целым 
числом. 
На практике последовательности не рассчитаны на прямой доступ из 
программы. Работа с ними осуществляется через специальные функции 
PostgreSQL, предназначенные для увеличения, присваивания или получения 
текущего значения последовательности. 
Последовательности создаются командой SQL CREATE SEQUENCE с 
положительным или отрицательным приращением. В этом определении 
единственный обязательный параметр последовательность определяет имя 
создаваемой 
последовательности. 
Значения 
последовательности 
представляются типом integer, поэтому максимальное и минимальное 


значения должны лежать в интервале от 2 147 483 647 до -2 147 483 647. 
Синтаксис команды CREATE SEQUENCE: 
CREATE SEQUENCE последовательность
[ INCREMENT приращение ]
[ MINVALUE минимум ]
[ MAXVALUE максимум ]
[ START начало ]
[ CACHE кэш ]
[ CYCLE ] 
Ниже описаны некоторые необязательные секции команды CREATE 
SEQUENCE (полное описание в [6]).
• INCREMENT приращение. Числовое изменение текущего значения 
последовательности. Отрицательное приращение создает убывающую 
последовательность. По умолчанию приращение равно 1.
• MINVALUE минимум. Минимальное допустимое значение 
последовательности. 
• MAXVALUE максимум. Максимальное допустимое значение 
последовательности. 
• START начало. Начальное значение последовательности, которым 
является любое целое число в интервале между минимальным и 
максимальным значениями.
• CACHE кэш. Возможность предварительного вычисления и хранения 
значений последовательности в памяти. Кэширование ускоряет доступ к 
часто используемым последовательностям. Минимальное значение, заданное 
по умолчанию, равно 1; увеличение объема кэша приводит к увеличению 
числа кэшируемых значений.
• CYCLE. При достижении нижнего или верхнего порога 
последовательность продолжает генерировать новые значения. В этом случае 
она 
переходит 
к 
минимальному 
значению 
(для 
возрастающих 
последовательностей) или к максимальному значению (для убывающих 
последовательностей). 
К последовательности можно обратиться командой SELECT, как к 
таблице или представлению (хотя такая возможность используется 
относительно редко). При составлении запроса к последовательности в 
списке выборки вместо полей указываются атрибуты последовательности. 
Операции с последовательностями: 
• nextval('последовательность') – увеличивает текущее значение 
последовательности и возвращает новое; 
• currval (' последовательность') – возвращает значение, 
полученное при последнем вызове nextval. Если в текущем сеансе 
nextval не вызывалась, то currval не сможет вернуть значение; 
• setval ('последовательность', n) – присваивает текущее значение 
последовательности, следующий вызов nextval вернет значение 
n+приращение; 


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


Достарыңызбен бөлісу:
1   ...   29   30   31   32   33   34   35   36   ...   46




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет