Тип данни за mark sql. Типове данни, използвани в SQL сървър

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

Тип данни - какво е това?

Днес има няколко дефиниции, които обясняват понятието „тип данни“. Всеки от тях обаче има едно общо значение. Следователно, той може да бъде условно дефиниран като група от данни, характеризиращи се със своите стойности (символни, цифрови и т.н.), както и операциите, приложени към въпросните стойности.

Обхватът на приложение на типовете данни е многостранен. Те се използват не само за съхраняване на информация, но и в програмирането за решаване на различни проблеми. Когато проектирате програми, обичайна практика е да разработвате и използвате свои собствени типове данни със специфичен набор от операции. Персонализираните обаче винаги се основават на основни типове данни. Стандартът SQL също се основава на използването на най-често срещаните основни типове, но с редица специфични допълнения.

Класификация на типовете данни

Групирането на данни по тип е възникнало отдавна и е причинено от необходимостта от по-удобна обработка. В момента основата на съществуващите типове данни се формира от два: символни и цифрови.

Въз основа на тях е разработена съвременна класификация, включваща указатели, логически, цели, с плаваща запетая и низови типове данни. SQL - класификацията покрива изцяло всичко по-горе. За някои съвременни СУБД обаче има допълнителни добавки. Те включват Oracle и MySQL.

Основни типове данни

Тези, използвани за създаване на атрибути на таблица, които отговарят на езиковите стандарти, са разделени на 4 класа:

  • низови стойности;
  • фракции;
  • цели числа;
  • стойности за дата и час.

Низов тип данни

Първата група от стойности ви позволява да съхранявате всякакви данни, представени като знаци.

Това могат да бъдат специални знаци, цифри и букви, които заедно ще бъдат обработени като низове във всеки тип данни, списъкът с таблици, който е представен по-долу, образува първата група.

Използва се за съхраняване на низове. Параметърът в скоби ви позволява да фиксирате дължината на съхранения низ. Максималният размер в байтове, който може да бъде определен за низ, е 255.

Подобно на предишния тип, той ви позволява да съхранявате низове с дължина до 255 знака. Въпреки това, разликата от CHAR е, че необходимото количество памет е разпределено за съхраняване на стойност от този тип. Това означава, че низ, състоящ се от 5 знака, ще изисква 6 байта памет. В първия случай паметта за стойността ще бъде разпределена според зададения параметър.

Използва се за съхраняване на низови данни до 255 знака.

Използва се за съхраняване на текстова информация, чийто размер не надвишава 65 535 букви.

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

Разработен е на базата на типа TEXT, но ви позволява да съхранявате повече данни поради увеличения размер до 16 777 215 букви или символи.

Използва се за запазване на електронни документи в базата данни, чийто размер не надвишава 16 777 215 знака.

Функционално подобен на предишните типове, но с увеличен капацитет на паметта до 4 гигабайта.

Позволява ви да поставите големи количества данни в базата данни (4 294 967 295 знака).

ENUM (a, b, c и т.н.)

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

Указва набор от валидни стойности. За разлика от предишния тип, той се използва, за да съдържа 64 параметъра, които могат да бъдат инициализирани от всеки или повече елементи от дадените аргументи.

Таблица с дробни типове данни

Дробните SQL типове данни се използват за съхраняване на числа с плаваща запетая. На практика по правило се задават различни финансови показатели. В зависимост от изискваната точност се използва един от трите представени:

Например при банковите изчисления точността на дробната част достига 8 или 10 цифри. Първите два вида не могат да се използват в тази област.

Съхраняването на финансови показатели под формата на низове значително опростява решаването на много проблеми. Въпреки това, когато се занимавате с финансови проблеми или извършвате различни SQL операции, преобразуването на типове данни е от голямо значение. Разработчиците трябва да вземат предвид вида на методите за съхранение и обработка, за да гарантират, че данните винаги остават непроменени.

Целочислен тип данни

Целите числа са отделна група числа, които образуват един от основните класове. Целочислените SQL типове данни се основават на използването на базов тип с известно разширение на неговите свойства.

Като изберете правилния тип данни, можете да спестите значителна памет и да намалите времето на сървъра, прекарано в изпълнение на необходимите SQL заявки. Типовете данни или по-скоро техният диапазон определят необходимото количество пространство за съхранение.

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

Типове данни за дата и час

Когато изучавате основите на SQL, типовете данни за дата и час са от особен интерес.

Използването на следните типове предоставя допълнителни предимства при разработване на системи, които зависят от времето.

Основната цел е да съхранява датата във формат ГОДИНА-МЕСЕЦ-ДЕН („ГГГГ-ММ-ДД“ или „уууу-мм-дд“). Обикновено стойностите се разделят с „-“, но всеки знак с изключение на цифрите може да се използва като разделител.

Позволява ви да въвеждате временни стойности в клетка на таблица. Всички стойности са посочени във формат "hh:mm:ss"

Комбинира функциите на предишните два вида. Форматът за съхранение е представен, както следва: „uuuu-mm-dd hh:mm:ss“.

Съхранява датата и часа, изчислени от броя секунди, изминали от полунощ на 1 януари 1970 г. до зададената стойност.

Използва се за съхраняване на годишни стойности в дву- или четирицифрен формат.

Какво още трябва да знаете?

Всички тези видове данни са систематизирани подробно от Microsoft. Тя разработи по-подробно SQL типовете данни.

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

Специален указател - NULL

Понякога при попълване на база данни възниква ситуация, когато при добавяне на запис към таблица не е необходимо да въвеждате информация във всички колони. За това се използва специален указател за празна стойност - НУЛА, който използва езика SQL като помощно средство. Когато се създават таблици, типовете данни на колоните, които не се изискват за попълване, се определят с оператор, който позволява включването на нулеви стойности. В друг случай операторът НУЛА с допълнителна приставка НЕможе да се използва, за да посочи, че всички стойности трябва да бъдат попълнени.

показалец НУЛА няма тип, а просто сочи към празна стойност в таблиците на базата данни. Следователно може да се комбинира с всеки от горните видове.

Първо, нека да разгледаме какво представляват „типовете данни“.
Типовете данни определят какви стойности могат да се съхраняват в колона и колко памет ще заемат. Когато създавате таблица, трябва да посочите конкретен тип данни за всички нейни колони.
Основните типове, използвани в SQL, могат да бъдат разделени на няколко категории:

  • Целочислени типове;
  • Дробни типове;
  • Типове знаци;
  • Видове пари;
  • Времеви типове (дата/час);

Целочислени типове данни

Дробни типове данни

Знаков тип данни

Тип данниОписание
CHAR(размер)Използва се за съхраняване на низове. Параметърът в скоби ви позволява да фиксирате дължината на съхранения низ. Максималният размер в байтове, който може да бъде определен за низ, е 255.
VARCHAR (размер)Подобно на предишния тип, той ви позволява да съхранявате низове с дължина до 255 знака. Въпреки това, разликата от CHAR е, че необходимото количество памет е разпределено за съхраняване на стойност от този тип. Това означава, че низ, състоящ се от 5 знака, ще изисква 6 байта памет. В първия случай паметта за стойността ще бъде разпределена според зададения параметър.
NCHAR(размер)Низови данни с постоянна дължина в Unicode. n указва дължината на низа и трябва да бъде стойност между 1 и 4000. Размерът на паметта е два пъти по-голям от стойността на размера в байтове. Препоръчително е да използвате nchar, ако размерите на елементите от данни в колоните се очаква да бъдат подобни.
NVARCHAR
(размер|макс.)
Низови данни с променлива дължина в Unicode. Размерът указва дължината на низа и може да има стойност от 1 до 4000. Максималната стойност показва, че максималният размер на хранилището е 2^31-1 знака (2 GB). Препоръчително е да използвате nvarchar, ако се очаква размерите на елементите от данни в колоните да са различни.
ТЕКСТНе-Unicode данни с променлива дължина в кодовата страница на сървъра и с максимална дължина на реда 2^31-1 (2,147,483,647).
NTEXTUnicode кодирани данни с променлива дължина с максимална дължина на реда от 2^30 - 1 (1 073 741 823) байта.

Тип данни за валутата

Типове време (дата/час)

Тип данниОписание
ДАТАОсновната цел е да съхранява датата във формат ГОДИНА-МЕСЕЦ-ДЕН („ГГГГ-ММ-ДД“ или „уууу-мм-дд“).
ВРЕМЕПозволява ви да въвеждате временни стойности в клетка на таблица. Всички стойности са посочени във формат „hh:mm:ss“.
ВРЕМЕ ЗА СРЕЩАКомбинира функциите на предишните два вида. Форматът за съхранение е представен, както следва: „uuuu-mm-dd hh:mm:ss“.
КЛАПОТО ЗА ЧАССъхранява датата и часа, изчислени от броя секунди, изминали от полунощ на 1 януари 1970 г. до зададената стойност.

Примери за използване на типове данни

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

Пример за използване на типове данни

MySQL

CREATE TABLE Проверки (id INT NOT NULL, име VARCHAR (50) NOT NULL, DataToDay DATE NOT NULL, Cost FLOAT NOT NULL);

документ за самоличносте брояч (съхранява индивидуалния чек номер), следователно принадлежи към целочислен тип данни, така че го правим ИНТРили ЦЯЛО ЧИСЛО. НЕ НУЛЕВпоказва, че променливата не може да бъде празна.
IN ИмеНие ще запазим името на продукта. Тъй като колоната ще съхранява знаци, които използваме VARCHAR. След като посочим типа, заделяме памет за името (в нашия случай е (50) ).
Следните колони на таблицата се създават по подобен начин.

Всяка колона на базата данни има свой собствен тип, който се посочва при създаването на колоната.

Стандартът SQL дефинира следните типове:

1. символичен:

ХАРАКТЕР ( len); CHAR( len);

ВАРИРАЩИ ХАРАКТЕРИ ( len); CHAR VARYING ( len); VARCHAR( len);

НАЦИОНАЛЕН ХАРАКТЕР ( len); НАЦИОНАЛЕН ЧАР ( len); NCHAR( len);

НАЦИОНАЛЕН ХАРАКТЕР ВАРИРАЩ ( len);

НАЦИОНАЛЕН ЧАР ВАРИРАЩ ( len); NCHAR ВАРИАНТ ( len);

2. двоичен:

БИТ ( len); БИТ ВАРИРАЩ ( len);

3. числово:

NUMERIC; DECIMAL; DEC; ЦЯЛО ЧИСЛО; INT; SMALLINT;

FLOAT; РЕАЛЕН; ДВОЙНА ПРЕЦИЗНОСТ;

4. дати/часове:

ДАТА; ВРЕМЕ; ВРЕМЕ С ЧАСОВА ЗОНА;

TIMESTAMP; ЧАСОВ ПЕЧАТ С ЧАСОВА ЗОНА;

5. интервал: INTERVAL.

За символни типове е възможно да се посочи фразата CHARACTER SET (set_name | using_form), която задава символния набор, който да се използва.

Ето описание на най-често използваните типове данни:

CHAR( бр) – текстов низ с фиксирана дължина (разпределя се място в паметта за целия низ);

VARCHAR( бр) – текстов низ с променлива дължина, съдържащ не повече от num знака (дисковото пространство се разпределя в зависимост от дължината на низа);

INTEGER или INT – цяло число;

NUMERIC – число с плаваща запетая, има възможност за определяне на броя на десетичните знаци;

DECIMAL или DEC – число с плаваща запетая, възможно е да се зададе минимална стойност на точност;

FLOAT – число с плаваща запетая, което ви позволява да зададете точността (брой десетични знаци);

REAL е число с плаваща запетая, чиято точност се определя от изпълнението;

ДАТА – тип дата;

ВРЕМЕ С ЧАСОВА ЗОНА – тип време, съдържащ полета, описващи часовото изместване на зоната.

Типовете данни, които описват дата и час, се състоят от няколко полета, които съхраняват части от датата и часа.

Така типът ДАТА съдържа полетата ГОДИНА, МЕСЕЦ и ДЕН.

Типът TIME съдържа полетата HOUR, MINUTE и SECOND.

Типът TIMESTAMP съдържа полета за дата и час.

Стойността на типа TIMESTAMP е написана както следва: "10.1.2003 08:30:00". Редът на полетата при писане на дата обикновено се определя от настройките на операционната система на компютъра.

За да работите с данни от типа дата/час, езикът SQL предоставя следните функции:

CURRENT_TIME – определя текущото време;

CURRENT_DATE – определя текущата дата;

CURRENT_TIMESTAMP – определя текущите дата и час.

Съответствието между типовете данни Oracle и типовете данни ANSI/ISO е представено в таблицата

ДАТА – дата, варираща от 1-1-4712 пр.н.е. до 31-12-4712 г. сл. Хр Форматът на данните се определя от настройките на сървъра.



В 10-та версия бяха въведени типове данни, съответстващи на стандарта IEEE754 - BINARY_FLOAT и BINARY_DOUBLE.

Забележка. PL/SQL процедурите могат да използват типове данни, съвместими с ANSI: DEC(p,s), DECIMAL(p,s), INT, INTEGER, REAL, FLOAT(p), DOUBLE PRECISION.

В допълнение към скаларните типове, споменати по-горе, може да се посочи съставен (агрегиран) тип, например структура, запис или колекция. Освен това има такъв тип като връзка.

Последна актуализация: 07/12/2017

Когато създавате таблица, трябва да посочите конкретен тип данни за всички нейни колони. Типът данни определя какви стойности могат да се съхраняват в колоната и колко място ще заемат в паметта.

T-SQL предоставя много различни типове. В зависимост от естеството на значенията всички те могат да бъдат разделени на групи.

Числови типове данни

    BIT: съхранява стойността 0 или 1. Всъщност това е аналог на булевия тип в езиците за програмиране. Заема 1 байт.

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

    SMALLINT: съхранява числа от –32 768 до 32 767. Заема 2 байта

    INT: съхранява числа от –2 147 483 648 до 2 147 483 647. Заема 4 байта. Най-използваният тип за съхранение на числа.

    BIGINT: съхранява много големи числа от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807, които заемат 8 байта в паметта.

    DECIMAL: съхранява числа с фиксирана точност. Заема от 5 до 17 байта в зависимост от броя на десетичните знаци.

    Този тип може да приеме два параметъра точност и мащаб: DECIMAL(прецизност, мащаб) .

    Параметърът за точност представлява максималния брой цифри, които числото може да съхранява. Тази стойност трябва да е между 1 и 38. По подразбиране е 18.

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

    NUMERIC: Този тип е подобен на типа DECIMAL.

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

    ПАРИ: съхранява дробни стойности от -922,337,203,685,477.5808 до 922,337,203,685,477.5807. Представлява парични стойности и заема 8 байта. Еквивалентен на тип DECIMAL(19,4) .

    FLOAT: Съхранява числа от –1.79E+308 до 1.79E+308. Отнема от 4 до 8 байта в зависимост от дробната част.

    Може да се дефинира като FLOAT(n), където n представлява броя на битовете, които се използват за съхраняване на десетичната част на числото (мантисата). По подразбиране n = 53.

    REAL : Съхранява числа от –340E+38 до 3.40E+38. Заема 4 байта. Еквивалентен на типа FLOAT(24).

Примери за цифрови колони: Заплата MONEY, TotalWeight DECIMAL(9,2), Age INT, излишък FLOAT

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

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

    ВРЕМЕ: Съхранява времето в диапазона от 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 байта.

Често срещани формати за дата:

    гггг-мм-дд - 2017-07-12

    дд/мм/гггг - 07/12/2017

    mm-dd-yy - 07-12-17

    В този формат двуцифрените числа от 00 до 49 се третират като дати в диапазона 2000-2049. А числата от 50 до 90 са като диапазона от числа 1950 - 1999.

    Дд месец, гггг - 12 юли 2017 г

Често срещани формати за време:

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

    чч:ми:сс - 1:21:34

    чч:ми:сс:ммм - 1:21:34:12

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

Низови типове данни

    CHAR: Съхранява низ с дължина между 1 и 8000 знака. Разпределя 1 байт за всеки знак. Не е подходящ за много езици, тъй като съхранява знаци, различни от Unicode.

    Броят знаци, които колоната може да съхранява, се предава в скоби. Например колона с тип CHAR(10) ще разпредели 10 байта. И ако съхраним низ с по-малко от 10 знака в колона, той ще бъде подплатен с интервали.

    VARCHAR: съхранява низ. За всеки символ се отделя 1 байт. Можете да посочите конкретна дължина за колона - от 1 до 8000 знака, например VARCHAR(10) . Ако низът трябва да има повече от 8000 знака, тогава размерът е зададен на MAX и могат да бъдат разпределени до 2 GB за съхранение на низа: VARCHAR(MAX) .

    Не е подходящ за много езици, тъй като съхранява знаци, различни от Unicode.

    За разлика от типа CHAR, ако низ от 5 знака се съхранява в колона с типа VARCHAR(10), тогава точно пет знака ще бъдат съхранени в колоната.

    NCHAR: Съхранява Unicode низ с дължина от 1 до 4000 знака. За всеки символ се разпределят 2 байта. Например NCHAR(15)

    NVARCHAR: Съхранява Unicode-кодиран низ. За всеки знак се разпределят 2 байта. Можете да зададете конкретен размер от 1 до 4000 знака: . Ако един ред трябва да има повече от 4000 знака, тогава размерът е зададен на MAX и могат да бъдат разпределени до 2 GB за съхранение на реда.

Още два вида, TEXT и NTEXT, са остарели и затова не се препоръчват. Вместо това се използват съответно VARCHAR и NVARCHAR.

Примери за дефиниране на низови колони:

Имейл VARCHAR(30), коментар NVARCHAR(MAX)

Двоични типове данни

    BINARY: Съхранява двоични данни като последователност от 1 до 8000 байта.

    VARBINARY : Съхранява двоични данни като последователност от 1 до 8000 байта или до 2^31-1 байта, когато се използва стойността MAX (VARBINARY(MAX)).

Друг двоичен тип, типът IMAGE, е остарял и се препоръчва вместо него да се използва типът VARBINARY.

Други типове данни

    UNIQUEIDENTIFIER: Уникален GUID (по същество низ с уникална стойност), който заема 16 байта.

    TIMESTAMP: някакво число, което съхранява номера на версията на ред в таблицата. Заема 8 байта.

    КУРСОР: Представлява набор от низове.

    HIERARCHYID: Представлява позиция в йерархия.

    SQL_VARIANT: Може да съхранява данни от всеки друг тип данни на T-SQL.

    XML: Съхранява XML документи или фрагменти от XML документи. Заема до 2 GB памет.

    ТАБЛИЦА: Представлява дефиниция на таблица.

    ГЕОГРАФИЯ: Съхранява географски данни като географска ширина и дължина.

    ГЕОМЕТРИЯ: Съхранява координатите на местоположение в равнина.



Дял