- •1. Пояснення до тексту пояснювальної записки
- •1. Постановка задачі до курсової роботи
- •2. Теоретична частина (короткий опис візуальних та програмних засобів PostfreSql)
- •1.2. Поради щодо складання тексту пояснювальної записки
- •2. Варіанти задач курсової роботи
- •Варіант 2 Реалізація продукції хлібозаводу
- •Варіант 3 Нафтогазоносні родовища України
- •Варіант 4 Розміри газонафтоносних родовищ України
- •Варіант 5 Газосховища України
- •Варіант 6 Нафтобази України
- •Варіант 7 Транспортування газу по території України
- •Варіант 8 Забезпеченість України паливно-мастильними матеріалами
- •Варіант 9 Видобування нафти на Україні
- •Варіант 10 Запаси нафти на родовищах України
- •Варіант 11 Зміни запасів нафти в родовищах України
- •Варіант 12 Гiдрохiмiчний стан поверхневих вод
- •Варіант 13 Реалізація продукції хлібозаводу
- •Варіант 14 Облік відвідування занять студентами вузу
- •Варіант 15 Газосховища України
- •Варіант 16 Вміст нафтопродуктів у нафтобазах України
- •Варіант 17 Забезпеченість паливно-мастильними матеріалами
- •Варіант 18 Добовий видобуток нафти на Україні
- •Варіант 19 Кадровий облік працівників фірми
- •Варіант 20 Дані про туристичну фірму (даний варіант розглянути в прикладі)
- •Варіант 21 Продажа товарів торгівельною фірмою
- •Варіант 22 Продажа фірмою виробів із сої
- •Варіант 23 Виготовлення продукції підприємствами виробничого об’єднання
- •Варіант 24 Малий бізнес
- •Варіант 25 Книжковий магазин
- •Варіант 26 Заклади освіти
- •Варіант 27 Науково-технічна література бібліотеки
- •Напрям: код напряму, напрям;
- •Варіант 28 Транспортні підприємства
- •Варіант 29 Автомобілі
- •Варіант 30 Підприємства-банкрути
- •Завдання
- •Дата видачі завдання 02.09.2013 р.
- •Календарний план
- •1. Вступ
- •2 Коротка історія postgresql
- •2.1 Проект postgres його заснування та розробка
- •3 Основні концепції роботи з postgresql
- •3.1 Створення таблиць
- •3.1.1 Типи даних
- •3.2 Внесення даних у таблицю
- •Insert into ім’я_таблиці [(список_імен_полів)] values (значення1, значення2, …, значення n);
- •3.3 Редагування таблиць
- •Alter table ім’я_таблиці owner то новий_власник
- •3.4 Обмеження
- •Immediate – всі або конкретне обмеження перевіряються наприкінці кожної команди.
- •3.5 Послідовності
- •Drop sequence перелік_послідовностей
- •3.6 Запити
- •3.7 Об'єднання таблиць (Join)
- •3.8 Агрегатні функції
- •3.9 Курсори sql
- •4 Основні елементи мови plpgsql
- •4.1 Структура мови, функції користувача
- •4.2 Розгалуження, цикли, масиви
- •4.3 Курсори
- •5. Практична частина Завдання в-20
- •5.1 Завдання 1
- •Результати виконання:
- •5.2 Завдання 2
- •Розв'язок задачі
- •Задача 8.
- •Розв'язок задачі
- •Результати запиту:
- •5.4 Завдання 4
- •Розв'язок задачі
- •Результат задачі
- •Задача 6,9
- •Розв’язок задачі
- •Результат задачі:
- •6. Висновки
- •7. Список використаної літератури
- •Рекомендована література
Immediate – всі або конкретне обмеження перевіряються наприкінці кожної команди.
Команда SET CONSTRAINTS задає режим перевірки для всіх обмежень або одного обмеження в поточному транзакційному блоці. Існує два режими перевірки: негайна (IMMEDIATE) і відкладена (DEFERRED) перевірка обмежень. У режимі IMMEDIATE всі обмеження перевіряються після виконання кожної команди транзакції, а в режимі DEFERRED обмеження перевіряються лише після виконання команди COMMIT.
Зауважимо, що деякі версії PostgreSQL забезпечують зміну режиму перевірки тільки для обмеження FOREIGN KEY. Команда SET CONSTRAINTS не разповсюджується на обмеження CHECK і UNIQUE
Нижченаведена команда вибирає режим негайної перевірки всіх обмежень.
SET CONSTRAINTS ALL IMMEDIATE;
3.5 Послідовності
PostgreSQL є об’єктно-реляційною СУБД, що дозволило включити в неї ряд нестандартних розширень SQL. Частина цих розширень пов’язана з автоматизацією часто вживаних операцій з базами даних, це, зокрема, послідовності і тригери.
Послідовність (sequence) являє собою послідовність чисел. Значення послідовності мають тип integer, тому її значення повинні лежати в межах від 2 147 483 647 до -2 147 483 647. Як правило, її використовують у обмеженні DEFAULT для надання унікальних значень полям таблиць. Ці значення автоматично змінюються шляхом виклику функції nextval(). У інших СУБД, наприклад MS Access, послідовності називають лічильниками.
Послідовність створюється командою:
CREATE SEQUENCE послідовність
[ INCREMENT приріст] [ MINVALUE мінімум ] [ MAXVALUE максимум ] [ START початок ] [ CACHE кеш ] [ CYCLE ]
Тут:
послідовність – ім’я послідовності, це єдиний обов’язковий параметр;
INCREMENT приріст – нарощення поточного значення послідовності, це число може бути від’ємним або додатнім. За замовчуванням приріст дорівнює 1.
MINVALUE мінімумум – мінімально допустиме значення. Спроба зменшити поточне значення нижче за заданий мінімум спричинить помилку або циклічний перехід до максимального значення (якщо послідовність створювалася з ключовим словом CYCLE). За замовчуванням мінімальне значення дорівнює 1;
MAXVALUE максимум – максимально допустиме значення послідовності. Спроба перевищити заданий максимум спричинить помилку або циклічний перехід до мінімального значення (при CYCLE). За замовчуванням максимальне значення дорівнює 2 147 483 647;
START початок – початкове значення послідовності, це будь-яке ціле число в інтервалі між мінімальним і максимальним значеннями. За замовчуванням послідовність починається з нижнього порога при зростанні послідовності або з верхнього – при убуванні;
CACHE кеш – забезпечує можливість попереднього обчислення і зберігання значень послідовності в оперативній пам’яті. Кешування прискорює доступ до тих послідовностей, які часто використовуються;
CYCLE – повторне, циклічне використання послідовності. Досягши нижнього або верхнього порога, послідовність продовжує генерувати нові значення, тоді вона переходить до мінімального значення при зростанні послідовності або до максимального – при убуванні. Оскільки в цих випадках значення послідовності повторюються, то вони не будуть унікальними.
У нижченаведеному прикладі створюється послідовність з ім’ям ship, яка починається із значення 0 і збільшується на 1 до тих пір, поки не досягне максимального значення. Ключове слово CYCLE не вказане, тому ця послідовність набуває лише унікальних значень.
CREATE SEQUENCE ship MINVALUE 0;
До послідовності також можна звернутися командою SELECT, як до таблиці, хоча така можливість використовується відносно рідко, наприклад, під час випробування або перевірки послідовності. При складанні запиту до послідовності в списку вибірки вказуються її атрибути, перелічені в таблиці 3.1.
Таблиця 3.1. Атрибути послідовності
Атрибут |
Тип |
Примітка |
sequence_name |
name |
Ім’я послідовності |
last_value |
integer |
Поточне значення |
increment_by |
integer |
Нарощення |
max_value |
integer |
Максимальне значення |
min_value |
integer |
Мінімальне значення |
cache_value |
integer |
Об’єм кеша, байт |
log_cnt |
integer |
|
is_cycled |
"char" |
|
is_called |
"char" |
|
Нижче показано запит до послідовності ship. Він повертає атрибути last_value (поточне значення, оскільки послідовність щойно створена, то воно мінімально задане і дорівнює 0) та increment_by (приріст, за замовчуванням дорівнює 1).
SELECT last_value, increment_by FROM ship;
Як правило, всі операції з послідовностями виконуються за допомогою таких трьох спеціальних функцій PostgreSQL:
nextval( ‘послідовність’) – нарощує поточне і повертає нове значення;
currval(‘послідовність’) – повертає поточне значення;
setval (‘послідовність’, n) – змінює поточне значення на число n.
Нижче в прикладі виводиться пара чергових значень послідовності ship.
Послідовності найчастіше використовуються для задавання значень за замовчуванням у полях таблиць. Нехай таблицю pidpr створено командою:
CREATE TABLE pidpr(kod_p integer PRIMARY KEY DEFAULT nextval('ship'), naz_p character(50), misto character(30));
Тут поле kod_p має обмеження DEFAULT, функція nextval('ship') якого буде надавати кожного разу нарощені на одиницю значення за замовчуванням, вироблені послідовністю ship. Це поле має також обмеження PRIMARY KEY, яке, нагадаємо, означає ще й обмеження UNIQUE, тому в нього неможливо буде помилково занести неунікальні значення.
Тепер команда вставки даних у таблицю pidpr може виглядати, наприклад, так:
INSERT INTO pidpr (naz_p, misto) VALUES
('Уренгой – Помари – Ужгород', 'Полтава');
Під час виконання команди код підпримства kod_p буде занесений у таблицю автоматично.
Змінити поточне значення послідовності дозволяє функція setval(), нижче показано, що значення послідовності ship змінюється на 1010, а далі нарощується на 1, тому дорівнює 1011:
SELECT setval('ship', 1010);
Видалення послідовності забезпечує команда SQL DROP SEQUENCE, вона видаляє одну або декілька послідовностей одночасно. Ця команда має такий вигляд:
