Типове данни на SQL Server с примери

⚡ Умно обобщение

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

  • 🔢 Точно число: Функциите bigint, int, smallint, tinyint, bit, decimal, numeric, money и smallmoney съхраняват точни цели числа и числа с фиксирана запетая.
  • 〰️ Приблизително число: float и real съхраняват приблизителни стойности с плаваща запетая, използвани в научни изчисления.
  • 📅 Дата и час: datetime, smalldatetime, date, time, datetimeoffset и datetime2 съхраняват времеви стойности.
  • 🔤 Символ и Unicode: char, varchar и text съдържат текст; nchar, nvarchar и ntext съдържат Unicode текст.
  • ️ Двоични и други: двоични, varbinary и image съхраняват байтови данни; cursor, xml и uniqueidentifier покриват специални нужди.
  • 🧠 Избор WiseЛи: Съпоставянето на всяка колона с най-малкия подходящ тип подобрява ефективността на съхранението и целостта на данните.

Типове данни на SQL Server с примери

Какво е тип данни?

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

Как да използвате MS SQL тип данни

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

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

MS SQL предлага широк набор от основни типове данни в SQL за да отговарят на нуждите на потребителите, като например дата, двоичен файл, изображения и други.

Защо да използвате DataTypes?

Да разгледаме примера на проста страница за регистрация за уебсайт приложение. Трите полета за въвеждане са Име, Фамилия и Телефонен номер.

Тук трябва да отбележим, че в реални ситуации:

  • „Име/Фамилия“ винаги ще бъде по азбучен ред.
  • „Контакт“ винаги ще бъде число.

Примерът по-долу илюстрира тези полета във формуляр за регистрация.

Пример за формуляр за регистрация, в който собствено и фамилно име са символи, а контактът е цяло число.

От горната картинка е логично да се дефинира „Име/Фамилия“ като символ, а „Контакт“ като цяло число.

Очевидно е, че във всяко приложение всички полета съдържат един или друг тип данни, например числови, буквени, датни и много други.

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

Наличен тип данни в MS SQL Server

Ето списъка с типовете данни на MS SQL Server. MS SQL Server поддържа следните категории типове данни:

  • Точна цифра
  • Приблизително числово
  • Дата и час
  • Символни низове
  • Unicode символни низове
  • Двоични низове
  • Други типове данни

Диаграмата по-долу групира типовете данни на MS SQL Server в тези категории.

Диаграма на групатаping Типовете данни на MS SQL Server в седемте им категории

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

Точният числов тип има девет подтипа данни в SQL Server. Всеки от тях съхранява цели числа или числа с фиксирана запетая в определен диапазон.

Тип данни Descriptйон Долна граница Горен лимит памет
bigint Той съхранява цели числа в дадения диапазон −2^63 (−9,223,372,036,854,775,808 XNUMX) 2^63−1 (32 767) 8 байта
Int Той съхранява цели числа в дадения диапазон −2^31 (−2,147,483,648 XNUMX) 2^31−1 (32 767) 4 байта
smallint Той съхранява цели числа в дадения диапазон −2^15 (−32,768 XNUMX) 2^15−1 (32 767) 2 байта
tinyint Той съхранява цели числа в дадения диапазон 0 255 1 байт
малко Може да приема стойности 0, 1 или NULL. 0 1 1 байт / 8-битова колона
десетичен Използва се за мащаб и числа с фиксирана точност −10^38+1 10^38−1 5 до 17 байта
цифров Използва се за мащаб и числа с фиксирана точност −10^38+1 10^38−1 5 до 17 байта
пари Използва се за парични данни -922,337,203,685,477.5808 +922,337,203,685,477.5807 8 байта
малки пари Използва се за парични данни -214,478.3648 +214,478.3647 4 байта

Точни числови типове данни в SQL Server с примери:

Запитване:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

Изход:

2

Синтаксис:

Decimal (P,S)

Тук P е прецизността, а S е мащабът.

Запитване:

DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31
PRINT @Datatype_Decimal

Изход:

2.31

Приблизителни числови типове данни в SQL

Категорията приблизителни числови данни в SQL включва числа с плаваща запетая и реални стойности. Тези типове данни се използват най-вече в научни изчисления.

Тип данни Descriptйон Долна граница Горен лимит памет Прецизност
float(n) Използва се за число с плаваща точност −1.79E+308 1.79 308 + Зависи от стойността на n 15 цифри
реален Използва се за число с плаваща точност −3.40E+38 3.40 38 + 4 байта 7 цифри

Типът float използва следния синтаксис:

Syntax:  FLOAT [(n)]

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

Когато дефинирате тип данни като float, n трябва да бъде стойност между 1 и 53. SQL Server третира n като една от две възможни стойности: ако 1 <=n <=24, n се третира като 24; ако 25 <=n <=53, n се третира като 53.

Примерна заявка:

DECLARE @Datatype_Float FLOAT(24) = 22.1234
PRINT @Datatype_Float

Изход:

22.1234

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

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

Тип данни Descriptйон Размер на съхранение Точност Долен диапазон Горен диапазон
Време за среща Използва се за указване на дата и час от 1 януари 1753 г. до 31 декември 9999 г. Има точност от 3.33 милисекунди. 8 байта Закръглено до стъпки от .000, .003, .007 1753-01-01 9999-12-31
малка датачас Използва се за задаване на дата и час от 1 януари 1900 г. до 6 юни 2079 г. Има точност от 1 минута. 4 байта, фиксирани 1 минути 1900-01-01 2079-06-06
дата Използва се за съхраняване само на дата от 1 януари 0001 г. до 31 декември 9999 г. 3 байта, фиксирани 1 дни 0001-01-01 9999-12-31
път Използва се за съхраняване само на времеви стойности с точност до 100 наносекунди. 5 байта 100 XNUMX наносекунди 00:00:00.0000000 23:59:59.9999999
datetimeoffset Подобно на datetime, но има отместване на часовата зона 10 байта 100 XNUMX наносекунди 0001-01-01 9999-12-31
дата и час2 Използва се за указване на дата и час от 1 януари 0001 г. до 31 декември 9999 г. 6 байта 100 XNUMX наносекунди 0001-01-01 9999-12-31

Примерна заявка:

DECLARE @Datatype_Date DATE = '2030-01-01'
PRINT @Datatype_Date

Изход:

"2030-01-01"

Символни низове Типове данни в SQL

Тази категория се отнася до типовете символи. Тя ви позволява да дефинирате символни данни с фиксирана и променлива дължина. Има четири вида типове данни. По-долу са типовете данни за символни низове с примери.

Тип данни Descriptйон Долна граница Горен лимит памет
овъглявам Това е символен низ с фиксирана ширина. Той съхранява максимум 8,000 знака. 0 знака 8000 знака n байта
varchar Това е низ от символи с променлива ширина. 0 знака 8000 знака n байта + 2 байта
varchar (макс.) Това е символен низ с променлива ширина. Той съхранява максимум 1,073,741,824 XNUMX XNUMX XNUMX знака. 0 знака 2^31 знака n байта + 2 байта
текст Това е низ от символи с променлива ширина. Той съхранява максимум 2 GB текстови данни. 0 знака 2,147,483,647 знака n байта + 4 байта

Примерна заявка:

DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'
PRINT @Datatype_Char

Изход:

Това е символен тип данни

Unicode Character String Типове данни в SQL

Тази категория съхранява пълния набор от Unicode символи, които използват кодиране на символите UTF-16.

Тип данни Descriptйон Долна граница Горен лимит памет
нчар Това е Unicode низ с фиксирана ширина. 0 знака 4000 знака 2 по n байта
nvarchar Това е Unicode низ с променлива ширина. 0 знака 4000 знака 2 по n байта + 2 байта
ntext Това е Unicode низ с променлива ширина. 0 знака 1,073,741,823 знака 2 пъти дължината на низа

Примерна заявка:

DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'
PRINT @Datatype_nChar

Изход:

Това е nCharacter Datatype

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

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

Тип данни Descriptйон Долна граница Горен лимит памет
двоен Това е двоичен низ с фиксирана ширина. Той съхранява максимум 8,000 байта. 0 байта 8000 байта n байта
varbinary Това е двоичен низ с променлива ширина. Той съхранява максимум 8,000 байта. 0 байта 8000 байта Действителната дължина на въведените данни + 2 байта
изображение Това е двоичен низ с променлива ширина. Той съхранява максимум 2 GB. 0 байта 2,147,483,647 байта -

Примерна заявка:

DECLARE @Datatype_Binary BINARY(2) = 12;
PRINT @Datatype_Binary

Изход:

0x000C

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

Това са другите типове данни на SQL Server, като техните описания са по-долу:

Тип данни Descriptйон
курсор Изходът му е колона от sp_cursor_list и sp_describe_cursor. Връща името на променливата на курсора.
Версия на редове Поставя печати за версии на редовете в таблицата.
Йерархия Този тип данни представлява позиция в йерархия.
Уникален идентификатор Съхранява GUID, често конвертиран от символен израз.
Sql_variant Той съхранява стойности на типове данни, поддържани от SQL Server.
XML Той съхранява XML данни в колона.
Тип пространствена геометрия Той представя данни в плоска координатна система.
Тип пространствена география Той представя данни в кръглоземната координатна система.
маса Той съхранява набор от резултати за последваща обработка.

Интересни факти!

  • Типът данни CHAR е по-бърз от типа данни VARCHAR при извличане на данни, защото фиксираната му ширина избягва нуждата от по-голяма дължина.ping.

Въпроси и Отговори

VARCHAR съхранява не-Unicode символи, използвайки по един байт всеки, докато NVARCHAR съхранява Unicode символи, използвайки по два байта всеки. Изберете NVARCHAR, когато колоната трябва да съдържа множество езици или символи извън една кодова страница; в противен случай VARCHAR използва по-малко място за съхранение.

Използвайте DECIMAL (или NUMERIC), когато стойностите трябва да бъдат точни, като например пари или мерни единици, защото съхранява фиксирана точност. Използвайте FLOAT за приблизителни научни стойности, където малки разлики в закръгляването са приемливи и много широкият диапазон е по-важен от точността.

Да. В SQL Server, DECIMAL и NUMERIC са функционално идентични. И двете приемат точност и мащаб и съхраняват точни числа с фиксирана запетая, така че двете ключови думи са взаимозаменяеми. Можете да използвате каквото име предпочита вашият екип за по-лесна четливост.

CHAR е тип с фиксирана дължина, който допълва по-късите стойности с интервали, така че всяка стойност използва декларираната ширина. VARCHAR е тип с променлива дължина и съхранява само въведените символи плюс два байта. Използвайте CHAR за еднородни кодове и VARCHAR за текст с различна дължина.

Да. ALTER TABLE table_name ALTER COLUMN column_name new_type променя типа данни на колоната. Промяната е успешна само когато съществуващите стойности се конвертират чисто в новия тип; в противен случай тя е неуспешна, така че първо тествайте конвертациите и архивирайте данните.

Обикновената VARCHAR(n) съхранява до 8,000 знака. VARCHAR(max) съхранява до около 2 GB (2^31-1 байта) и е предназначена за голям текст, надвишаващ 8,000 знака. Използвайте VARCHAR(max) само когато стойностите наистина могат да бъдат толкова големи.

Да. Копилот на GitHub може да предлага типове данни за колони и да генерира DECLARE и CREATE TABLE оператори от подкани на естествен език. Винаги проверявайте точността, мащаба, дължината и нуждите от Unicode спрямо вашите данни, преди да приложите предложенията му в продукцията.

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

Обобщете тази публикация с: