Въведение в типове данни SQL

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

Ние бихме категоризирали широко типовете SQL данни и след това ще изследваме различни типове и примери в тези категории.

Забележка - Не всички системи за управление на бази данни поддържат всички типове данни. Например, Oracle не поддържа DateTime. Тези специфики са дадени заедно с описанието на типа данни в статията. Препоръчва се да се съобразявате с това, докато проектирате базата данни. По подобен начин има много други типове данни, които са специфични за всяка конкретна система за управление на бази данни. Например, MS SQL има тип данни за пари. Такива видове не са общи и са извън обхвата на тази статия.

Видове SQL данни

1. Двоичен

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

Двоичен (размер): Съхранява двоични байтови низове с дължина на колоната, посочена от параметъра размер. Размерът на колоната е фиксиран. Ако размерът е дефиниран като 10 байта и съхранените данни са 5 байта, останалите 5 байта все още са заети в паметта от колоната. Тези останали байтове са подредени с нула отдясно от повечето SQL парсери. Максималният възможен размер е 8000 байта.

Varbinary (размер): Съхранява двоични байтови низове на дължината на колоната, посочена от параметъра size. Размерът на колоната не е фиксиран. Ако размерът е дефиниран като 10 байта и съхраняваните данни са 5 байта, колоната заема само 5 байта в паметта. Максималният възможен размер е 8000 байта.

Varbinary (max): Посочването на ключовата дума max в параметъра size увеличава максималния възможен размер до 2GB и разпределя променлив размер на колоните въз основа на съхранените данни. Този тип данни не се поддържа от MySQL.

Пример:

create table BinaryDataTypes (col_binary BINARY(5), col_varbinary VARBINARY(5));
insert into BinaryDataTypes values (101, 121);
select * from BinaryDataTypes;

insert into BinaryDataTypes values (12345, 123456);
insert into BinaryDataTypes values (123456, 123456);

Грешката възниква, защото бяхме определили размера на колоните само 5 байта.

2. Характер / низ

Тези типове данни съхраняват или единичен знак, или серия от знаци, образуващи низ. Те включват символи, числа и специални знаци. Естеството на символите (ите) обаче е ограничено само до символи, които не са Unicode.

Char (размер): съхранява символни низове с фиксирана дължина на дължината, посочена от параметъра size. Оразмеряването на колоната работи по подобен начин на типа данни BINARY. Размерът по подразбиране е 1 знак. Максимумът е 255 в повечето системи за управление на бази данни.

Varchar (размер): съхранява символни низове с променлива дължина. Въпреки това, дължината, посочена от параметъра размер, определя максималната дължина на колоната. Максималната възможна дължина е 65535 знака.

Varchar (max): Посочването на ключовата дума max в параметъра size увеличава максималния възможен размер до 2GB и разпределя променлив размер на колоните въз основа на съхранените данни. Този тип данни не се поддържа от MySQL.

Текст: MySQL поддържа тип текстови данни вместо varchar (max). Текстът също увеличава максималния възможен размер до 2GB.

Пример:

create table CharacterDataTypes (col_char CHAR(300));

create table CharacterDataTypes (col_char CHAR(20), col_varchar VARCHAR(20), col_text TEXT);
insert into CharacterDataTypes values ('Hello World', 'How you doing?', 'This is an incredibly longer text to demonstrate the data type text in MySQL. The data type text makes it possible to store 2GB of data in a column. That\'s equal to 2*1024*1024*1024 = over 2.14 billion characters. Whoa!');

3. Unicode характер / низ

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

Nchar (размер): Това е подобно на типа данни на char и поддържа и Unicode символи. Максималният лимит обаче е намален до 4000 байта.

Nvarchar (размер): Това е подобно на типа данни на nvarchar и поддържа и Unicode символи. Максималният лимит обаче е намален до 4000 байта.

Nvarchar (max): Посочването на ключовата дума max в параметъра size увеличава максималния възможен размер до 1GB и разпределя променлив размер на колоните въз основа на съхранените данни. Този тип данни не се поддържа от MySQL.

Ntext: MySQL поддържа типа данни ntext вместо nvarchar (max). Ntext също така увеличава максималния възможен размер до 1GB.

Пример:

create table UnicodeCharacterDataTypes (col_unicode_char NCHAR(200));
insert into UnicodeCharacterDataTypes values ('局层局层');
select * from UnicodeCharacterDataTypes;

4. Числови

Числовите типове данни поддържат цели числа и реални / дробни / десетични числа.

Bit / Bool / Boolean: Тези типове данни съхраняват само две стойности - 0 и 1. 0 обозначава невярно, докато 1 означава истина. Малко се поддържа от повечето бази данни. Някои модерни бази данни поддържат също bool и boolean.

INT: Съхранява положителни и отрицателни цели числа до 4 байта. Това означава, че стойността трябва да бъде в диапазона (-2147483648, 2147483647). Посочването на неподписаната ключова дума ограничава колоната да съхранява само положителни стойности в диапазона (0, 4294967295).

TINYINT: Съхранява положителни и отрицателни цели числа до 1 байт. Това означава, че стойността трябва да бъде в диапазона (-128, 127). Посочването на неподписаната ключова дума ограничава колоната да съхранява само положителни стойности в диапазона (0, 255).

Smallint: Съхранява положителни и отрицателни цели числа до 2 байта. Това означава, че стойността трябва да бъде в диапазона (-32768, 32767). Посочването на неподписаната ключова дума ограничава колоната да съхранява само положителни стойности в диапазона (0, 65535).

Bigint: Съхранява положителни и отрицателни цели числа до 8 байта. Това означава, че стойността трябва да бъде в диапазона (-2 63, 2 63 -1). Посочването на неподписаната ключова дума ограничава колоната да съхранява само положителни стойности в диапазона (0, 2 64 -1).

Десетични (размер, D): съхранява число с фиксирана точка. Размерът на параметъра указва общия брой цифри, докато d определя броя на цифрите след десетичната запетая. Стойностите по подразбиране за размер и d са съответно 10 и 0.

Float (размер, D) / Double (размер, D): съхранява номер с плаваща запетая. Float се използва за по-малки числа с размер до 4 байта. Двойно съхранява по-големи номера. Double обаче не се поддържа от всички бази данни.

Знания извън учебната програма - Разликата между числата с фиксирана точка и плаваща запетая е, че десетичната точка е фиксирана в едно и плаваща в друга. Фиксирана точка означава, че броят на цифрите е фиксиран след и преди десетичната запетая. Плаваща запетая означава, че броят на цифрите преди и след десетичната запетая може да варира спрямо значението на цифрите в числото.

Пример:

create table NumericDataTypes (col_tinyint_u TINYINT UNSIGNED, col_smallint SMALLINT, col_int INT, col_bigint BIGINT UNSIGNED, col_decimal DECIMAL(5, 2), col_float FLOAT);
insert into NumericDataTypes values (255, -32768, 1234567890, (POWER(2, 63)-1), 987.65, 987.65);

5. Дата и час

  1. Дата: Съхранява данните във формат ГГГГ-ММ-DD, ограничен от 1000-01-01 до 9999-12-31.
  2. Време: Съхранява времето във формата hh: mm: ss.
  3. DateTime: Съхранява както датата, така и часа.
  4. TimeStamp: Временната марка се използва за маркиране на времева марка всеки път, когато ред е въведен или актуализиран в таблицата. Обикновено това става чрез ключови думи DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP.

Пример:

create table DateTimeDataTypes (col_date DATE, col_time TIME, col_datetime DATETIME, col_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
insert into DateTimeDataTypes(col_date, col_time, col_datetime) values (CURDATE(), '08:50:41', NOW());

6. Разни SQL типове данни

  • CLOB: CLOB означава знаци големи обекти. Те могат да съхраняват данни за символи до 2 GB. Не се поддържа от MySQL обаче. MySQL използва Text, за да постигне същото.
  • BLOB: BLOB означава Binary Large Objects. Те се използват за съхранение на двоични обекти с размер до 2GB. Обикновено изображенията се преобразуват в двоични обекти и се съхраняват в колони BLOB.
  • XML: Използва се за съхранение на XML данни.
  • JSON: Използва се за съхранение на JSON данни. Не се поддържа от MySQL.

Заключение - типове данни SQL

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

Препоръчителни статии

Това е ръководство за типовете данни за SQL. Тук обсъждаме въвеждането, типовете SQL данни, символите / низовете, символите / низовете Unicode и числовите. Можете също да прегледате и другите ни предложени статии, за да научите повече -

  1. Типове данни PostgreSQL
  2. Видове OLAP
  3. Видове зловреден софтуер
  4. Клауза за SQL WHERE
  5. PHP Ключови думи
  6. C ++ Ключови думи
  7. Топ 3 типа данни на PHP с примери
  8. Примери за внедряване на INSERT изявление