Налаштування обладнання та програмного забезпечення

Тип даних відсотки в SQL. Стандартні типи даних SQL

Імена.

Оператори

Основні поняття SQL

Кожен оператор SQL починається з дієслова, тобто. ключового слова, що описує дію, що виконується оператором Типовими дієсловами є SELECT (вибрати), CREATE (створити), INSERT (додати), DELETE (видалити), COMMIT (завершити). Після дієслова йде одна або кілька речень. Пропозиція описує дані, з якими працює оператор, або містить уточнюючу інформацію про дію оператора. Кожна пропозиція також починається з ключового слова, такого як WHERE (де), FROM (звідки), INTO (куди) та HAVING (що має). Одні пропозиції в операторі є обов'язковими, а інші – ні. Конкретна структура та вміст пропозиції можуть змінюватися. Багато речень містять імена таблиць або стовпців; деякі з них можуть містити додаткові ключові слова, константи та вирази.

У стандарті ANSI/ISO визначено ключові слова, які застосовуються як дієслова та пропозиції операторів. Відповідно до стандарту, ці ключові слова не можна використовувати для іменування об'єктів бази даних, таких як таблиці, стовпці та користувачі

Кожен об'єкт у базі даних має унікальне ім'я. Імена використовуються в операторів SQLта вказують, над яким об'єктом бази даних оператор має виконати дію. У стандарті ANSI/ISO визначено, що імена є у таблицях, стовпчиках та користувачах. У багатьох реалізаціях SQL підтримуються також додаткові іменовані об'єкти, такі як процедури, що зберігаються, іменовані відносини "первинний ключ - зовнішній ключ" і форми для введення даних.

Відповідно до стандарту ANSI/ISO, SQL імена повинні містити від 1 до 18 символів, починатися з літери і не містити пробіли або спеціальні символи пунктуації. У стандарті SQL2 максимальна кількість символів у імені збільшена до 128.

Повне ім'я таблиці складається з імені власника таблиці та її імені, розділених точкою (.). Наприклад, повне ім'я таблиці Students, власником якої є користувач на ім'я Admin, має такий вигляд:

Якщо в операторі задається ім'я стовпця, SQL сам визначає, в якій із зазначених у цьому операторі таблиць міститься даний стовпець. Однак якщо оператор вимагає включити два стовпці з різних таблиць, але з однаковими іменами, необхідно вказати повні імена стовпців, які однозначно визначають їх місцезнаходження. Повне ім'я стовпця складається з імені таблиці, що містить стовпець, та імені стовпця (простого імені), розділених точкою (.). Наприклад, повне ім'я стовпця StName з таблиці Students має такий вигляд: Students.StName



У стандарті ANSI/ISO визначено типи даних, які можна використовувати для представлення інформації реляційної базиданих. Типи даних, що у стандарті SQL1, становлять лише мінімальний набір і підтримуються в усіх комерційних СУБД. Нижче наведено типи даних, визначені в стандартах SQL1 і SQL2:

CHAR (довжина), CHARACTER (довжина) Рядки символів постійної довжини

VARCHAR(довжина), CHAR VARYING(довжина), CHARACTER VARYING (довжина) Рядки символів змінної довжини*

NСНАР(довжина), NATIONAL CHAR(довжина), NATIONAL CHARACTER(довжина) Рядки локалізованих символів постійної довжини*

NCHAR VARYING(довжина), NATIONAL CHAR VARYING(довжина),

NATIONAL CHARACTER VARYING(довжина) Рядки локалізованих символів змінної довжини*

INTEGER, INT Цілі числа

SMALLINT Маленькі цілі числа

BIT(довжина) Рядки бітів постійної довжини*

BIT VARYNG(довжина) Рядки бітів змінної довжини*

NUMERIC(точність, ступінь), DECIMAL(точність, ступінь),

DEC(точність, ступінь) Цілі (десяткові) числа, що масштабуються.

FLOAT(точність) Числа з плаваючою комою

REAL Числа з плаваючою комою низької точності

DOUBLE PRECISION Числа з плаваючою комою високої точності

DATE Календарна дата*

TIME(точність) Час

TIME STAMP(точність) Дата та час*

INTERVAL Тимчасовий інтервал*

У SQL1 використовуються такі типи даних:

1. Рядки символів постійної довжини. У стовпцях, що мають цей тип даних, зазвичай зберігаються імена людей та компаній, адреси, описи тощо.

2. Цілі числа. У стовпцях, що мають цей тип даних, зазвичай зберігаються дані про рахунки, кількості, вік і т.д. Цілочисельні стовпці часто використовуються також для зберігання ідентифікаторів, таких як ідентифікатор клієнта, службовця або замовлення.

3. Цілі числа, що масштабуються. У стовпцях даного типу зберігаються числа, що мають дробову частину, які необхідно обчислювати точно, наприклад курси валют та відсотки. Крім того, в таких стовпцях часто зберігаються грошові величини.

4. Числа з плаваючою комою. Стовпці цього типу використовуються для зберігання величин, які можна обчислювати приблизно, наприклад, ваги та відстані. Числа з плаваючою комою можуть становити більший діапазон значень, ніж десяткові числа, проте при обчисленнях можуть виникати похибки заокруглення.

У більшості комерційних СУБД, крім типів даних, визначених у стандарті SQL1, є безліч додаткових типів даних, більшість з яких увійшло до стандарту SQL2. Нижче перераховані найважливіші з них:

1. Рядки символів змінної довжини. Майже у всіх СУБД підтримується тип даних VARCHAR, що дозволяє зберігати рядки символів, довжина яких змінюється в певному діапазоні. У стандарті SQL1 були визначені рядки постійної довжини, які праворуч доповнюються пробілами.

2. Грошові величини. Багато СУБД підтримується тип даних MONEY чи CURRENCY, який зазвичай зберігається як десяткового чи числа з плаваючою комою. Наявність окремого типу даних для представлення фінансових величин дозволяє правильно форматувати їх при виведенні на екран.

3. Дата та час. Підтримка значень дати/часу також поширена в різних СУБД, хоча способи її реалізації досить сильно відрізняються один від одного. Як правило, над значеннями цього даних можна виконувати різні операції. У стандарт SQL2 входить визначення типів даних DATE, TIME, TIMESTAMP та INTERVAL, включаючи підтримку часових поясів та можливість вказати точності, уявлення часу (наприклад, десяті або соті частки секунди).

4. Булеві дані. Деякі СУБД явно підтримують логічні значення (TRUE або FALSE).

Література: І.Ф. Астахова, А.П. Толстобров, В.М. Мельників SQL у прикладах та завданнях. Навчальний посібник: Нове знання, 2002

Сьогодні у світі налічується величезна кількість технологій та засобів, призначених для зберігання інформації. Бази даних є одним із найпоширеніших засобів. p align="justify"> Для роботи з ними використовуються різні системи управління. Такий спосіб зберігання передбачає, що вся інформація чітко структурована та занесена до спеціальні таблиці. Таблиці, у свою чергу, складаються зі стовпців-атрибутів певного типу інформації.

Що таке тип даних?

Сьогодні існує одразу кілька визначень, що пояснюють сутність поняття «тип даних». Кожна з них має один загальний зміст. Умовно тип даних можна позначити як групу даних, що характеризується її значеннями – числовими, символьними тощо – а також операціями, які можуть застосовуватися по відношенню до цих значень. Сфера використання різних типівданих дуже багатогранна. Дані можуть використовуватися не тільки для зберігання інформації, але також і при програмуванні для вирішення поставлених завдань. При розробці програм велике поширення набула практика використання власних типівданих із певним набором операцій. В основі користувальницької інформаціїзавжди лежать основні типи даних. Стандарт SQL заснований на використанні найпоширеніших типів інформації, однак із певними доповненнями.

Типи даних: класифікація

Угруповання даних за типом з'явилося досить давно. Вона була викликана необхідністю структурування всіх обсягів інформації для забезпечення зручності їх обробки. Сьогодні в основі всіх існуючих типів даних лежать два базові: символьний та числовий. На основі цих даних була розроблена сучасна класифікація, яка включає в себе покажчики, цілісний, логічний, числовий з плаваючою комою та рядковий тип інформації. Все вищезгадане повністю охоплює класифікацію SQL. Однак для сучасних системуправління базами даних існують спеціальні надбудови. До них відносяться MySQL та Oracle.

Базові типи даних

Типи даних, які використовуються при створенні атрибутів таблиць, що відповідають стандартам мови SQL, можна розділити на 4 класи: строкові значення, дроби, цілі значення, значення часу і дати.

Рядковий тип даних

Перший тип даних дозволяє зберігати будь-яку інформацію, подану у вигляді символів. В даному випадку йдеться про спеціальні символи та літери, які в сукупності будуть оброблятися в будь-якому запит SQLяк рядки. Нижче наведено типи даних, які утворюють першу групу:

- CHAR (size) - цей тип використовується для зберігання рядків. Вказаний у дужках параметр дозволяє фіксувати довжину рядка, що зберігається. Для рядка можна задати максимальний розміру байтах – 255.

— VAR CHAR (size) — за аналогією до попереднього типу цей тип дозволяє зберігати рядки, довжина яких не перевищує 255 символів. Основна відмінність даного типу від CHAR полягає в тому, що для зберігання значення даного типу виділяється необхідну кількість пам'яті. Таким чином, для рядка, що складається з 5 символів, знадобиться 6 байт пам'яті. У першому випадку пам'ять для збереження значення буде виділена відповідно до зазначеного параметра.

— TINY TEXT- цей тип застосовується для зберігання текстової інформації, обсяг якої не перевищує 65 535 символів.

- BLOB - цей тип аналогічний типу TEXT. Він дозволяє зберігати в базі текстову інформацію, обсяг якої може становити до 65535 знаків. Однак на практиці даний тип може використовуватися для зберігання малюнків, звукової інформації, електронних документівта іншого.

— MEDIUM TEXT – цей тип розроблено на основі типу TEXT. За рахунок збільшеного до 16 777 215 символів розміру даний тип дозволяє зберігати більше даних.

— MEDIU MBLOB – застосовується для зберігання електронних документів, розмір яких не перевищує 16777215 символів.

- LONG TEXT - по функціональним можливостяманалогічний попереднім типам даних, однак має обсяг пам'яті, збільшений до 4 Гб.

- LONG BLOB - дає можливість розміщувати в базі даних дані великого обсягу - 4294967295 символів.

ENUM – ​​це спеціальний тип даних, який використовується для завдання списку різних значень. Цей тип дозволяє вказати 65535 значень. Рядки даного типу можуть набувати лише одне з усіх значень, зазначених у множині. У випадку, коли буде додано значень, відсутніх у заданому списку, в таблицю будуть записані порожні значення.

— SET – цей тип даних визначає безліч допустимих значень. На відміну від попереднього типу, він використовується для вмісту 64 параметрів, які можуть бути проініціалізовані декількома елементами заданих аргументів.

Таблиця з дрібними типами даних

Дробний тип даних SQLзастосовується для зберігання чисел із плаваючою точкою. Як правило, на практиці дані такого типу характеризують різні фінансові показники. Залежно від потрібної точності можна використовувати один із кількох представлених нижче типів.

FLOAT (sized) – застосовується для зберігання дробових чисел зазначеної точності – d;

- DOUBLE (sized) – застосовується для зберігання дробів із двійковою точністю;

DECIMAL (size, d) – застосовується для зберігання дробових значень у вигляді рядків. Застосовується в банківських розрахунках, де точність дробової частини може досягати 8 або 10 знаків.

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

Дані цілісного типу

Окремою групою чисел, що утворює один із основних класів, є цілі числа. Цілочисленні типи даних засновані на використанні базового типу INTEGER з деяким розширенням властивостей.

  • INT (size) - відповідає за зберігання цілих даних в діапазоні [-231; 231-1].
  • TINYINT (size) – використовується для зберігання чисел у діапазоні від -128 до 127.
  • SMALLINT (size) – характеризується дещо збільшеним діапазоном даних, що зберігаються від -32768 до 32767.
  • MEDIUMINT (size) – використовується для зберігання чисел розмірністю від -223 до 223-1.
  • BIGINT (size) – охоплює діапазон цілих значень від -263 до 263-1.

Якщо вибрати правильний тип даних, можна істотно заощадити пам'ять і навіть зменшити витрати серверного часу під час виконання необхідних SQL-запросов. Типи даних та їх діапазон визначають кількість пам'яті для зберігання. Розробникам необхідно пам'ятати, що використання великих діапазонів для атрибутів може спричинити збільшення витрат на пам'ять. Слід чітко аналізувати розв'язувані завдання та виявляти ситуації, у яких відомий зразковий діапазон даних та визначено умову використання чисел зі знаком. Якщо використовується невеликий діапазон аргументів, що використовуються, а всі числа будуть позитивними, то коректніше буде скористатися беззнаковим типом, для якого призначений атрибут UNSIGNED.

Типи даних часу та дати

Типи даних часу і дати становлять великий інтерес щодо основ SQL. Використання наведених нижче типів може надати додаткові переваги у разі розробки систем, робота яких безпосередньо залежить від часових показників.

  • DATE – основне призначення цього типу полягає у зберіганні дати у форматі «рік-місяць-день». Значення зазвичай поділяються через "-". Однак іноді як роздільник можуть бути задіяні будь-які символи, за винятком цифр.
  • TIME – дає можливість заносити часові значення в комірку таблиці. Значення задаються форматом hh:mm:ss.
  • DATE TIME – цей тип поєднує у собі функції двох попередніх. Формат зберігання даних у цьому випадку виглядає так: «yyyy-mm-dd: hh:mm:ss».
  • TIME STAMP – цей тип зберігає дату та час, що обчислюються кількістю секунд, що пройшли починаючи з півночі 01.01.1970 року до заданого значення.
  • YEAR (M) – застосовується для зберігання річних значень у дво- або чотиризначному форматі.

Що ще потрібно знати? Усі представлені вище типи даних було систематизовано компанією Microsoft. Їй також докладніше розробили типи даних SQL. Так, наприклад, формою було розписано, який обсяг пам'яті виділяється під час використання кожного типу даних. Після вивчення всієї наявної інформації розробникам має стати простіше спроектувати структуру бази та таблиць виходячи з апаратних можливостей сервера.

NULL- спеціальний покажчик

У деяких випадках під час заповнення бази даних виникає ситуація, коли при додаванні до таблиці запису відсутня необхідність вносити інформацію у всі стовпці. Для цього необхідно використовувати спеціальний покажчик порожнього призначення або NULL. Він як допоміжний засіб застосовує мову SQL. Типи даних стовпців, які необов'язково повинні заповнюватися, вказуються з оператором, що дозволяє увімкнення порожніх значень, при створенні таблиць. Також оператор NULL при використанні додаткової приставки NOT може бути використаний для обов'язкового заповнення всіх значень. Вказівник NULL немає типу. Він просто вказує в таблицях баз даних на порожнє значення. Тому він цілком може бути скомбінований з одним з представлених вище типів даних.

ВИЗНАЧЕННЯ СТРУКТУРИ ДАНИХ

Запитання:

1. Типи даних мови SQL, визначені стандартом.

2. Типи даних, які у SQL-сервере. 3

3. Вирази та змінні. 5

4. Керуючі конструкції SQL.

5. Основні об'єкти структури бази даних SQL-сервера. 7

Типи даних мови SQL, визначені стандартом

Дані- Це сукупна інформація, що зберігається в базі даних у вигляді одного з різних типів. За допомогою типів даних встановлюються основні правила для даних, що містяться в конкретному стовпці таблиці, у тому числі розмір пам'яті, що виділяється для них.

У мові SQL є шість скалярних типів даних, визначених стандартом. Їх короткий описпредставлено у таблиці.

Символьні дані

Символьні дані складаються з послідовності символів, що входять до певного творцями СУБД набір символів. Оскільки набори символів специфічні для різних діалектів мови SQL, перелік символів, які можуть входити до складу значень даних символьного типу, також залежить від конкретної реалізації. Найчастіше використовуються набори символів ASCII та EBCDIC. Для визначення даних символьного типу використовується такий формат:

<символьный_тип>::=

( CHARACTER [ VARYING][довжина] | [довжина])

При визначенні стовпця із символьним типом даних параметр довжина застосовується для вказівки максимальної кількості символів, які можуть бути поміщені в цей стовпець (за замовчуванням приймається значення 1). Символьний рядок може бути визначений як такий, що має фіксовану або змінну (VARYING) довжину. Якщо рядок визначено з фіксованою довжиною значень, то при введенні в неї меншої кількості символів значення доповнюється до вказаної довжини пробілами праворуч. Якщо рядок визначено зі змінною довжиною значень, то при введенні в неї меншої кількості символів у базі даних буде збережено лише введені символи, що дозволить досягти певної економії. зовнішньої пам'яті.

Бітові дані

Бітовий типданих використовується визначення бітових рядків, тобто. послідовності двійкових цифр (бітів), кожна з яких може мати значення або 0 або 1 . Дані бітового типу визначаються за допомогою наступного формату:

<битовый_тип>::=

BIT [довжина]

Точні числа

Тип точних числових данихзастосовується визначення чисел, які мають точне уявлення, тобто. числа складаються з цифр, необов'язкової десяткової точки та необов'язкового символу знака. Дані точного числового типу визначаються точністю та довжиною дробової частини. Точність задає загальну кількість значущих десяткових цифр числа, куди входить довжина як цілої частини, і дробової, але не враховуючи самої десяткової точки. Масштаб вказує кількість дрібних десяткових розрядів числа.

<фиксированный_тип>::=

(NUMERIC[точність[,масштаб]]|(DECIMAL|DEC)

[точність[, масштаб]]

| (INTEGER | INT) | SMALLINT)

Типи NUMERICі DECIMALпризначені для зберігання чисел у десятковому форматі. За замовчуванням довжина дробової частини дорівнює нулю, а точність, що приймається за умовчанням, залежить від реалізації. Тип INTEGER (INT) використовується для зберігання великих позитивних чи негативних цілих чисел. Тип SMALLINT – для зберігання невеликих позитивних чи негативних цілих чисел; у цьому випадку витрата зовнішньої пам'яті суттєво скорочується.

Округлені числа

Тип заокруглених чиселзастосовується для опису даних, які не можна точно уявити на комп'ютері, зокрема дійсних чисел. Округлені числа або числа з плаваючою точкою представляються в науковій нотації, при якій число записується за допомогою мантиси, помноженої на певний рівень десяти (порядок), наприклад: 10Е3, +5.2Е6, -0.2Е-4 . Для визначення данихречовинного типу використовується формат:

<вещественный_тип>::=

( FLOAT [точність] | REAL |

DOUBLE PRECISION)

Параметр точністьвизначає кількість значущих цифр мантиси. Точність типів REAL та DOUBLE PRECISION залежить від конкретної реалізації.

дата і час

Тип даних "дата/час"використовується визначення моментів часу з деякою встановленої точністю. Стандарт SQL підтримує такий формат:

<тип_даты/времени>::=

(DATE | TIME[точність]|

TIMESTAMP[точність])

Тип даних DATE використовується для зберігання календарних дат, що включають поля YEAR (рік), MONTH (місяць) та DAY (день). Тип даних TIME – для зберігання позначок часу, що включають поля HOUR (годинник), MINUTE (хвилини) та SECOND (секунди). Тип даних TIMESTAMP – для спільного зберігання дати та часу. Параметр точність визначає кількість дрібних десяткових знаків, що визначають точність збереження значення в полі SECOND. Якщо цей параметр опускається, його значення для стовпців типу TIME приймається рівним нулю (тобто зберігаються цілі секунди), тоді як для полів типу TIMESTAMP він приймається рівним 6. Наявність ключового слова WITH TIME ZONE визначає використання полів TIMEZONE HOUR і TIMEZONE MINUTE, тим самим задаються година і хвилини зсуву зонального часу по відношенню до універсального координатного часу (Гринвічського часу).

Дані типу INTERVAL використовуються для представлення періодів часу.

Поняття домену

Домен– це набір допустимих значень одного або кількох атрибутів. Якщо в таблиці бази даних або в декількох таблицях присутні стовпці, що володіють одними й тими самими характеристиками, можна описати тип такого стовпця та його поведінку через домен, а потім поставити у відповідність кожному з однакових стовпців ім'я домену. Домен визначає всі потенційні значення, які можуть бути надані атрибуту.

Стандарт SQL дозволяє визначити домен за допомогою наступного оператора:

<определение_домена>::=

CREATE DOMAIN ім'я_домену

тип даних

[ DEFAULT значення]

[ CHECK (допустимі_значення)]

Кожному домену, що створюється, присвоюється ім'я, тип даних, значення за замовчуванням і набір допустимих значень. Слід зазначити, що формат оператора є неповним. Тепер під час створення таблиці можна вказати замість типу даних ім'я домену.

Видалення доменів із бази даних виконується за допомогою оператора:

DROP DOMAIN домен [ RESTRICT |

У разі вказівки ключового слова CASCADE будь-які стовпці таблиць, створені з використанням домену, що буде видалено, будуть автоматично змінені і описані як містять дані того типу, який був зазначений у визначенні видаленого домену.

Альтернативою доменам у середовищі SQL Serverє типи даних користувача.

Типи даних, які використовуються в SQL-сервері

Системні типи даних

Один із основних моментів процесу створення таблиці – визначення типів даних для її полів. Тип даних поля таблиці визначає тип інформації, яка розміщуватиметься у цьому полі. Поняття типу даних у SQL Server цілком адекватне поняттю типу даних у сучасних мовах програмування. SQL-сервер підтримує велику кількість різних типів даних: текстові, числові, двійкові (див. таблицю).

Наведемо короткий оглядТипи даних SQL Server.

Для зберігання символьної інформації використовуються символьні типи даних, до яких належать CHAR (довжина), VARCHAR (довжина), NCHAR (довжина), NVARCHAR (довжина). Останні два призначені для зберігання символів Unicode. Максимальне значення довжини обмежено 8000 знаками (4000 символів Unicode).

Зберігання символьних даних великого обсягу (до 2 Гб) здійснюється за допомогою текстових типів даних TEXT та NTEXT.

До цілих типів данихвідносяться INT (INTEGER), SMALLINT, TINYINT, BIGINT. Для зберігання даних цілісного типу використовується, відповідно, 4 байти (діапазон від -231 до 231-1), 2 байти (діапазон від -215 до 215-1), 1 байт (діапазон від 0 до 255) або 8 байт (діапазон від -263 до 263-1). Об'єкти та вирази цілого типу можуть застосовуватися в будь-яких математичних операціях.

Числа, у складі яких є десяткова точка, називаються нецілочисельними. Нецілочисленні даніподіляються на два типи – десятковіі приблизні.

До десятковимтипу даних відносяться типи DECIMAL [(точність[,масштаб])] або DEC і NUMERIC [(точність[,масштаб])]. Типи даних DECIMAL та NUMERIC дозволяють самостійно визначити формат точності числа з плаваючою комою. Параметр точність вказує максимальна кількістьцифр даних, що вводяться цього типу (до і після десяткової точки в сумі), а параметр масштаб – максимальна кількість цифр, розташованих після десяткової точки. У звичайному режимі сервер дозволяє вводити трохи більше 28 цифр, які у типах DECIMAL і NUMERIC (від 2 до 17 байт).

До приблизнимтипу даних відносяться FLOAT (точність до 15 цифр, 8 байт) і REAL (точність до 7 цифр, 4 байта). Ці типи представляють дані форматі з плаваючою комою, тобто. для представлення чисел використовується мантиса та порядок, що забезпечує однакову точність обчислень незалежно від того, наскільки мало чи велике значення.

Для зберігання інформації про дати та часупризначені такі типи даних, як DATETIME та SMALLDATETIME, що використовують для представлення дати та часу 8 та 4 байти відповідно.

Типи даних MONEY та SMALLMONEYуможливлюють зберігання інформації грошового типу; вони забезпечують точність значень до 4 знаків після коми і використовують 8 та 4 байти відповідно.

Тип даних BITдозволяє зберігати один біт, який набуває значення 0 або 1.

У середовищі SQL Server реалізовано ряд спеціальних типів даних.

Тип даних TIMESTAMPвикористовується як індикатор зміни версії рядка в межах бази даних.

Тип даних UNIQUEIDENTIFIERвикористовується для зберігання глобальних ідентифікаційних номерів.

Тип даних SYSNAMEпризначений для ідентифікаторів об'єктів.

Тип даних SQL_VARIANTдозволяє зберігати значення будь-якого з підтримуваних SQL Server типів даних за винятком TEXT, NTEXT, IMAGE та TIMESTAMP.

Тип даних TABLE, подібно до тимчасових таблиць, забезпечує зберігання набору рядків, призначених для подальшої обробки. Тип даних TABLE може застосовуватися тільки для визначення локальних змінних та повертаних користувальницькими функціямизначень.

Тип даних CURSORпотрібен для роботи з такими об'єктами, як курсори, і може бути затребуваний тільки для змінних та параметрів процедур, що зберігаються. Курсори SQL Server є механізмом обміну даними між сервером і клієнтом. Курсор дозволяє клієнтським додаткам працювати не з повним наборомданих, а лише з одним або декількома рядками.

Останнє оновлення: 12.07.2017

При створенні таблиці всіх її стовпців необхідно вказати певний тип даних. Тип даних визначає, які значення можуть зберігатися в стовпці, скільки вони займатимуть місця у пам'яті.

Мова T-SQL надає багато різних типів. Залежно від характеру значень їх можна розділити на групи.

Числові типи даних

    BIT: зберігає значення 0 або 1. Фактично є аналогом булевого типу в мовах програмування. Займає 1 байт.

    TINYINT: зберігає числа від 0 до 255. Займає 1 байт. Добре підходить для зберігання невеликих чисел.

    SMALLINT : зберігає числа від -32768 до 32767. Займає 2 байти

    INT : зберігає числа від -2147483648 до 2147483647. Займає 4 байти. Найбільш використовуваний тип зберігання чисел.

    BIGINT : зберігає дуже великі числа від -9223372036854775808 до 9223372036854775807, які займають у пам'яті 8 байт.

    DECIMAL : зберігає числа з фіксованою точністю. Займає від 5 до 17 байт залежно від кількості чисел після коми.

    Цей тип може приймати два параметри precision та scale: DECIMAL(precision, scale) .

    Параметр precision представляє максимальну кількість цифр, які можуть зберігати число. Це значення має знаходитись в діапазоні від 1 до 38. За замовчуванням воно дорівнює 18.

    Параметр scale представляє максимальну кількість цифр, які можуть містити число після коми. Це значення має знаходитися в діапазоні від 0 до значення параметра precision. За замовчуванням воно рівне 0.

    NUMERIC: цей тип аналогічний типу DECIMAL.

    SMALLMONEY : зберігає дробові значення від -214748.3648 до 214748.3647. Призначений для зберігання грошових величин. Займає 4 байти. Еквівалент типу DECIMAL(10,4) .

    MONEY : зберігає дробові значення від -922337203685477.5808 до 922337203685477.5807. Представляє грошові величини та займає 8 байт. Еквівалент типу DECIMAL(19,4) .

    FLOAT: зберігає числа від –1.79E+308 до 1.79E+308. Займає від 4 до 8 байт залежно від дрібної частини.

    Може мати форму визначення у вигляді FLOAT(n) , де n є число біт, які використовуються для зберігання десяткової частини числа (мантиси). Типово n = 53.

    REAL : зберігає цифри від –340E+38 to 3.40E+38. Займає 4 байти. Еквівалент типу FLOAT(24) .

Приклади числових стовпців: Salary MONEY, TotalWeight DECIMAL (9,2), Age INT, Surplus FLOAT

Типи даних, що представляють дату та час

    DATE: зберігає дати від 0001-01-01 (1 січня 0001 року) до 9999-12-31 (31 грудня 9999 року). Займає 3 байти.

    TIME : зберігає час у діапазоні від 00:00:00.0000000 до 23:59:59.9999999. Займає від 3 до 5 байт.

    Може мати форму TIME(n) , де n становить кількість цифр від 0 до 7 у дробовій частині секунд.

    DATETIME : зберігає дати та час від 01/01/1753 до 31/12/9999. Займає 8 байт.

    DATETIME2 : зберігає дати та час в діапазоні від 01/01/0001 00:00:00.0000000 до 31/12/9999 23:59:59.9999999. Займає від 6 до 8 байт, залежно від точності часу.

    Може мати форму DATETIME2(n) , де n становить кількість цифр від 0 до 7 у дробовій частині секунд.

    SMALLDATETIME : зберігає дати та час у діапазоні від 01/01/1900 до 06/06/2079, тобто найближчі дати. Займає від 4 байти.

    DATETIMEOFFSET : зберігає дати та час у діапазоні від 0001-01-01 до 9999-12-31. Зберігає детальну інформацію про час з точністю до 100 наносекунд. Займає 10 б.

Поширені формати дат:

    yyyy-mm-dd - 2017-07-12

    dd/mm/yyyy - 12/07/2017

    mm-dd-yy - 07-12-17

    У такому форматі двоцифрові числа від 00 до 49 сприймаються як дати в діапазоні 2000-2049. А числа від 50 до 90 як діапазон чисел 1950 – 1999.

    Month dd, yyyy - July 12, 2017

Поширені формати часу:

  • hh:mi am/pm - 1:21 pm

    hh:mi:ss - 1:21:34

    hh:mi:ss:mmm - 1:21:34:12

    hh:mi:ss:nnnnnnn - 1:21:34:1234567

Строкові типи даних

    CHAR : зберігає рядок довжиною від 1 до 8000 символів. На кожен символ виділяє по 1 байти. Не підходить для багатьох мов, тому що зберігає символи не в кодуванні Unicode.

    Кількість символів, що може зберігати стовпець, передається у дужках. Наприклад, для шпальти з типом CHAR(10) буде виділено 10 байт. І якщо ми збережемо в стовпці рядок менше 10 символів, то його буде доповнено пробілами.

    VARCHAR: зберігає рядок. На кожен символ виділяється 1 байт. Можна вказати конкретну довжину стовпця - від 1 до 8 000 символів, наприклад, VARCHAR(10) . Якщо рядок повинен мати більше 8000 символів, то визначається розмір MAX, а на зберігання рядка може виділятися до 2 Гб: VARCHAR(MAX) .

    Не підходить для багатьох мов, тому що зберігає символи не в кодуванні Unicode.

    На відміну від типу CHAR якщо стовпець з типом VARCHAR(10) буде збережено рядок 5 символів, то столці буде збережено саме п'ять символів.

    NCHAR : зберігає рядок у кодуванні Unicode довжиною від 1 до 4000 символів. На кожен символ виділяється 2 байти. Наприклад, NCHAR(15)

    NVARCHAR : зберігає рядок у кодуванні Unicode. На кожен символ виділяється 2 байти. Можна задати конкретний розмір від 1 до 4 000 символів: . Якщо рядок повинен мати більше 4000 символів, то визначається розмір MAX, а на зберігання рядка може виділятися до 2 Гб.

Ще два типи TEXT та NTEXT є застарілими і тому їх не рекомендується використовувати. Замість них застосовуються VARCHAR та NVARCHAR відповідно.

Приклади визначення рядкових стовпців:

Email VARCHAR(30), Comment NVARCHAR(MAX)

Бінарні типи даних

    BINARY: зберігає бінарні дані у вигляді послідовності від 1 до 8000 байт.

    VARBINARY : зберігає бінарні дані у вигляді послідовності від 1 до 8 000 байт або до 2^31–1 байт при використанні значення MAX (VARBINARY(MAX)).

Ще один бінарний тип – тип IMAGE є застарілим, і замість нього рекомендується застосовувати тип VARBINARY.

Інші типи даних

    UNIQUEIDENTIFIER : унікальний ідентифікатор GUID (по суті рядок з унікальним значенням), що займає 16 байт.

    TIMESTAMP : деяке число, яке зберігає номер версії рядка таблиці. Займає 8 байт.

    CURSOR: представляє набір рядків.

    HIERARCHYID: представляє позицію в ієрархії.

    SQL_VARIANT : може зберігати дані будь-якого типу даних T-SQL.

    XML: зберігає документи XML або фрагменти документів XML. Займає у пам'яті до 2 Гб.

    TABLE: представляє визначення таблиці.

    GEOGRAPHY : зберігає географічні дані, такі як широта та довгота.

    GEOMETRY: зберігає координати місцезнаходження на площині.

Сподобалась стаття? Поділіться з друзями!
Чи була ця стаття корисною?
Так
Ні
Дякую за ваш відгук!
Щось пішло не так і Ваш голос не було враховано.
Спасибі. Ваше повідомлення надіслано
Знайшли у тексті помилку?
Виділіть її, натисніть Ctrl+Enterі ми все виправимо!