SQL типове данни, дефинирани от стандарта

Данните са обобщена информация, съхранявана в база данни като един от няколко различни типа. Типовете данни задават основните правила за данните, съдържащи се в определена колона на таблица, включително количеството памет, разпределено за тях.

Езикът SQL има шест скаларни типа данни, дефинирани от стандарта. Тяхното кратко описание е представено в таблицата.

Данни за символи

Символните данни се състоят от поредица от знаци, включени в набора от знаци, дефиниран от създателите на СУБД. Тъй като наборите от знаци са специфични за различни диалекти на езика SQL, списъкът със знаци, които могат да бъдат част от стойности на данни за тип знаци, също зависи от изпълнението. Най-често използваните набори от знаци са ASCII и EBCDIC. Следният формат се използва за дефиниране на данни за символен тип:

Когато дефинирате колона със символен тип данни, параметърът за дължина се използва, за да укажете максималния брой знаци, които могат да бъдат поставени в тази колона (стойността по подразбиране е 1). Символен низ може да бъде дефиниран като имащ фиксирана или променлива (ВАРИАЛНА) дължина. Ако даден низ е дефиниран с фиксирана дължина на стойностите, тогава, когато са въведени по-малко знаци, стойността се допълва до указаната дължина с добавени интервали отдясно. Ако низът е дефиниран с променлива дължина на стойностите, тогава ако въведете по-малко знаци в него, само въведените знаци ще бъдат съхранени в базата данни, което ще ви позволи да постигнете някои спестявания във външна памет.

Битови данни

Типът битови данни се използва за дефиниране на битови низове, т.е. поредици от двоични цифри (битове), всяка от които може да има стойност 0 или 1. ДанниТипът бит се дефинира с помощта на следния формат:

Точни числа

Точният числов тип данни се използва за дефиниране на числа, които имат точно представяне, т.е. числата се състоят от цифри, незадължителна десетична запетая и незадължителен знак. Точните цифрови данни се определят от точността и дължината на дробната част. Точността определя общия брой значими десетични цифри на число, което включва дължината както на цялата, така и на дробната част, но изключва самата десетична запетая. Скалата показва броя на дробните десетични знаци в числото.

Типовете NUMERIC и DECIMAL са предназначени да съхраняват числа в десетичен формат. Дължината по подразбиране на дробната част е нула, а точността по подразбиране зависи от изпълнението. Типът INTEGER (INT) се използва за съхраняване на големи положителни или отрицателни цели числа. Типът SMALLINT е за съхраняване на малки положителни или отрицателни цели числа; в този случай консумацията на външна памет е значително намалена.

Закръглени числа

Типът закръглено число се използва за описание на данни, които не могат да бъдат точно представени от компютър, като реални числа. Числата със закръглена форма или с плаваща запетая се представят в научна нотация, в която числото се записва с помощта на мантисата, умножена по определена степен на десет (експонента), например: 10E3, +5.2E6, -0.2E-4. Следният формат се използва за дефиниране на данни от реален тип:

Параметърът за точност указва броя на значимите цифри на мантисата. Прецизността на типовете REAL и DOUBLE PRECISION е специфична за изпълнението.

Дата и час

Типът данни за дата/час се използва за определяне на точки във времето с определена точност. Стандартът SQL поддържа следния формат:

Типът данни DATE се използва за съхраняване на календарни дати, които включват полетата YEAR (година), MONTH (месец) и DAY (ден). Типът данни TIME е за съхраняване на времеви отпечатъци, които включват полетата HOUR (часове), MINUTE (минути) и SECOND (секунди). Типът данни TIMESTAMP е за съхраняване на дата и час заедно. Параметърът за точност указва броя дробни десетични знаци, който определя точността на съхраняване на стойността във ВТОРОТО поле. Ако този параметър е пропуснат, той по подразбиране е 0 за колони TIME (т.е. съхраняват се цели секунди), докато за полета TIMESTAMP е зададен на 6 (т.е. времевите клейма се съхраняват с точност до милисекунди). Наличието на ключовата дума WITH TIME ZONE определя използването на полетата TIMEZONE HOUR и TIMEZONE MINUTE, като по този начин указва часа и минутите на часовото изместване на зоната спрямо универсалното координатно време (средно време по Гринуич).

Данни от тип INTERVAL се използват за представяне на периоди от време.

Концепция за домейн

Домейнът е набор от валидни стойности за един или повече атрибути. Ако таблица на база данни или няколко таблици имат колони, които имат еднакви характеристики, можете да опишете типа на такава колона и нейното поведение чрез домейн и след това да съпоставите всяка от идентичните колони с име на домейн. Домейнът дефинира всички потенциални стойности, които могат да бъдат присвоени на атрибут.

SQL стандартът ви позволява да дефинирате домейн със следния оператор:

::= CREATE DOMAIN име на домейн [AS] тип данни [ стойност по подразбиране] [ ПРОВЕРКА (валидни_стойности)]

Всеки домейн, който създавате, получава име, тип данни, стойност по подразбиране и набор от валидни стойности. Трябва да се отбележи, че горният формат на операторае непълна. Сега, когато създавате таблица, можете да посочите име на домейн вместо тип данни.

Премахването на домейни от базата данни се извършва с помощта на оператора:

ИЗПУСКАНЕ на име на домейн на домейн [ ОГРАНИЧАВАНЕ НА КАСКАДА]

Ако посочите ключовата дума CASCADE, всички колони на таблица, създадени с помощта на домейна, който се премахва, ще бъдат автоматично променени и описани като съдържащи данни от типа, определен в дефиницията на домейна, който се премахва.

Алтернатива на домейните в среда на SQL Server са дефинираните от потребителя типове данни.

Типове данни, използвани в SQL Server

Системни типове данни

Един от акцентите в процеса на създаване на таблица е дефинирането на типовете данни за нейните полета. Типът данни на таблично поле определя типа информация, която ще бъде поставена в това поле. Понятието тип данни в SQL Server е напълно адекватно на понятието тип данни в съвременните езици за програмиране. SQL Server поддържа голям брой различни типове данни: текстови, числови, двоични (вижте таблица 2.2).

Нека да разгледаме набързо типовете данни на SQL Server.

За съхраняване на символна информация се използват символни типове данни, които включват CHAR (дължина), VARCHAR (дължина), NCHAR (дължина), NVARCHAR (дължина). Последните две са за съхранение на Unicode знаци. Стойността на максималната дължина е ограничена до 8000 знака (4000 за Unicode символи).

Съхранението на големи символни данни (до 2 GB) се извършва с помощта на текстови типове данни TEXT и NTEXT.

Целочислените типове данни включват INT (INTEGER), SMALLINT, TINYINT, BIGINT. За съхраняване на данни от целочислен тип се използват 4 байта (диапазон от -2 31 до 2 31 -1), 2 байта (диапазон от -2 15 до 2 15 -1), 1 байт (диапазон от 0 до255) или 8 байта (диапазон от -2 63 до 2 63 -1). Обекти и изрази от целочислен тип могат да се използват във всякакви математически операции.

Числата, които включват десетична точка, се наричат ​​нецели числа. Нецелите данни се разделят на два вида - десетични и приблизителни.

Десетичните типове данни включват DECIMAL [(точност[,мащаб])] или DEC и NUMERIC [(точност[,мащаб])]. Типовете данни DECIMAL и NUMERIC ви позволяват сами да дефинирате прецизния формат с плаваща запетая. Параметърът precision указва максималния брой цифри от този тип вход (преди и след десетичната запетая в сумата), а параметърът scale указва максималния брой цифри след десетичната запетая. В нормален режим сървърът ви позволява да въведете максимум 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 може да се използва само за дефиниране на локални променливи и връщане на стойности от дефинирани от потребителя функции. Пример за използване на типа данни TABLE е даден в лекцията за потребителски функции.

Типът данни CURSOR е необходим за работа с обекти като курсори и може да се изисква само за променливи и параметри на запомнени процедури. Курсорите на SQL Server са механизъм за обмен на данни между сървър и клиент. Курсорът позволява на клиентските приложения да работят само с един или повече редове, а не с пълния набор от данни. Ще разгледаме примери за използване на данни от типа CURSOR в лекциите за курсори и запаметени процедури.