Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL-1-ukr.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
100 Кб
Скачать
☆

2. Типи даних

Типи даних стовпців таблиць бази даних можуть відрізнятися від типів даних, підтримуваних SQL. Це необхідно враховувати при складанні SQL-запитів. На практиці дана проблема легко вирішується за допомогою функції CAST що перетворює значення в необхідний тип. Крім того, між деякими типами стовпців таблиці та даних, що беруть участь в SQL-виразах, існують відповідності, що допускають їх сумісне використання. Такі типи називають узгодженими.

Різні СУБД підтримують дещо різні набори типів даних для стовпців таблиць бази даних. Аналогічна ситуація і з типами даних, які підтримуються різними версіями і реалізаціями SQL. Разом з тим, завжди є типи даних, які підтримуються всіма реалізаціями SQL.

2.1. Рядки

CHARACTER (n) або CHAR (n) (рядок фіксованої довжини), де n – максимальна кількість символів, що містяться в рядку. Якщо (n) не зазначено, то передбачається, що рядок складається з одного символу. Якщо у стовпець типу CHARACTER (n) вводиться m < n символів, то позиції що залишилися заповнюються пробілами.

CHARACTER VARYING (n) АБО VARCHAR (n) (рядок змінної довжини) застосовується тоді, коли дані, що вводяться мають різну довжину і небажано доповнювати їх пробілами. При цьому зберігається тільки та кількість символів, яку ввів користувач. В даному випадку задання ​​максимальної кількості символів обов'язкове. CHARACTER і CHARACTER VARYING можуть брати участь в одних і тих же стрічкових операціях.

CHARACTER LARGE OBJECT (CLOB - великий символьний об'єкт) використовується для представлення дуже великих символьних рядків (наприклад, статей, книг і т. п.). У деяких СУБД даний тип називається MEMO, а в інших - TEXT. З даними цього типу можна виконувати не всі операції, передбачені для типів CHARACTER І CHARACTER VARYING. Так, їх не можна використовувати в операціях порівняння, за винятком рівності і нерівності. Крім того, стовпці цього типу не можуть бути первинними і зовнішніми ключами, а також бути оголошені як такі, що мають унікальні значення.

Значення стрічкового типу в SQL-виразах беруться в одинарні лапки. Порожній рядок не містить жодного символу і має вигляд: ''. Рядок, що містить один або більше пробілів, не є порожнім.

Іноді буває так, що стрічковий стовпець у таблиці містить тільки числа (точніше, рядки, що містять цифри, знаки числа і розділові крапки). Щоб використовувати такі дані у операціях з числами, необхідно привести дані одного типу до іншого типу за допомогою функції CAST ().

Значення типу CHARACTER і CHARACTER VARYING (VARCHAR) сумісні в тому сенсі, що вони можуть брати участь як операнди в стрічкових операціях і операціях порівняння.

2.2. Числа

Числовий тип даних може бути двох видів – точний і приблизний. Точні числові типи дозволяють точно виразити значення числа. Деякі величини мають дуже великий діапазон значень, і в таких випадках достатньо обмежитися деякими наближеним їх представленням з урахуванням технічних можливостей комп'ютера (розмірів регістра).

До точних числових відносяться наступні п'ять типів:

INTEGER – ціле (без дробової частини) число. Кількість розрядів (точність) залежить від реалізації SQL. У деяких реалізаціях числа цього типу лежать в діапазоні від -2 147 483 648 до 2147483647 (чотирибайтне ціле число);

SMALLINT – мале ціле число. Кількість розрядів залежить від реалізації SQL, але не більше кількості розрядів INTEGER в цій же реалізації. У деяких реалізаціях числа цього типу лежать в діапазоні від -32 768 до 32 767 (двобайтне ціле число);

BIGINT – велике ціле число. Кількість розрядів залежить від реалізації SQL і перевищує кількість розрядів числа типу INTEGER;

NUMERIC (x, у) – число, в якому всього х розрядів (точність), з яких у розрядів (масштаб) відводиться для дробової частини. Якщо у не вказано (NUMERIC (х)), то для дробової частини відводиться кількість розрядів, встановлене в системі за замовчуванням. Якщо не вказані ні х, ні у (NUMERIC), тo приймаються обидві ці величини, встановлені за замовчуванням. Наприклад, якщо зазначений тип NUMERC (б, 2), то максимальне значення числа буде 9999.99;

DECIMAL (х, у) – десяткове число, в якому всього х розрядів, з яких у розрядів відводяться для дробової частини. Якщо х або у не вказані, то приймаються значення за замовчуванням. Цей тип дуже схожий на NUMERIC. Відмінність полягає в тому, що якщо в DECIMAL (х, у) зазначені х і у менші, ніж допустимі реалізацією SQL, то будуть використовуватися останні. Якщо х і у не вказані, то застосовується система по замовчувагнню. Наприклад, ви задали для стовпця тип DECIMAL (6, 2). Якщо реалізація SQL дозволяє, то в цей стовпець можна ввести числа, що перевищують 9999.99 на відміну від DECIMAL (х, у), тип NUMERIC (x, у) жорстко задає діапазон можливих значень числової величини.

До приблизних числових типів відносяться наступні три типи:

REAL – дійсне число одинарної точності з плаваючою роздільною точкою (ця точка "плаває", з'являючись у різних місцях числа). Наприклад, 5.25, 5.257, 5.2573. Точність представлення числа залежить від реалізації SQL і обладнання. Наприклад, 32-бітовий комп'ютер дає більшу точність, ніж 16-бітовий;

DOUBLE PRECISION – дійсне число подвійної точності із плаваючою розділової точкою. Точність представлення числа залежить від реалізації SQL і обладнання. Використовується для представлення наукових даних (наприклад, результатів вимірювань) в широкому діапазоні значень, тобто як дуже малих (близьких до 0), так і дуже великих;

FLOAT (x) - дійсне число з плаваючою роздільною точкою і мінімальною точністю х, що займає не більше 8 байтів. Якщо комп'ютер може підтримати зазначену точність, використовуючи апаратну одинарну точність, то система буде використовувати арифметику одинарної точності. Якщо зазначена точність вимагає арифметики з подвійною точністю, то система буде використовувати її. Даний тип слід застосовувати, якщо передбачається можливість перенесення бази даних на іншу апаратну платформу, яка відрізняється розмірами регістрів.

2.3. Логічні дані

У цій частині математичної логіки, основоположником якої був англійський математик Джон Буль, дані мають тільки два значення – ІСТИНА і НЕПРАВДА, що позначаються як true і false відповідно. У SQL тип даних BOOLEAN (булівський) має три значення - true, false і unknown. Значення unknown (невідомий) було введено для позначення результату, що виходить при порівнянні зі значенням NULL (невизначене). Якщо користувач ще не ввів у комірку таблиці ніякого значення, то ця "порожня" комірка містить значення NULL, що інтерпретується як невідоме або невизначене значення.

Результатом будь-якої операції порівняння true або false з NULL або з unknown завжди є unknown. У SQL-виразах логічні значення беруться у кавички, наприклад, 'TRUE' АБО 'true'.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]