Когато създавате таблица в база данни, тя трябва да има както име, така и тип данни. Типът данни на колона определя стойностите, които колоната съдържа, като цяло число, пари, двоичен, знак, дата и час. Следователно задача на разработчика е да определи кои типове данни ще се съхраняват във всяка колона, докато създава бази данни и таблици.
С прости думи, типовете данни са насоки, които помагат на SQL да разбере какъв тип данни се изискват в колона. Освен това е ефективен при идентифицирането на това как SQL взаимодейства със съхранените данни.
Важно е да се отбележи, че типовете данни може да съдържат различни имена в различни бази данни и в случаите, когато имената са еднакви, други аспекти и подробности, като например размер, ще се различават. Затова се препоръчва винаги да се обръщате към документацията, когато срещнете подобни случаи.
Следните характеристики могат да идентифицират типове данни в MySQL:
- Стойностите на типовете данни, които могат да бъдат индексирани, и тези, които не могат да бъдат индексирани
- Типа стойности, които представляват
- Пространството, което заемат, независимо дали стойностите са с променлива дължина или с фиксирана дължина
- Как MySQL се сравнява с различните стойности на конкретни типове данни
Преди да се потопим и да покрием типовете данни на MySQL, от съществено значение е да научим и разберем конвенциите, използвани от описанията на типовете данни, както е подчертано по-долу:
- (M ):За целочислени типове указва максималната ширина, която типът данни може да покаже.
:Означава общия брой цифри, които могат да бъдат съхранени за типове с фиксирана точка и типове с плаваща запетая.
:За типовете низ показва максималната дължина
Забележка:M Максималната допустима стойност зависи от типа данни
• (D ):Отнася се само за типове с фиксирана точка и типове с плаващ запетая. Той указва мащаба (броя на цифрите, които следват десетичната запетая). Максималната възможна стойност е 10, но не трябва да е по-значителна от M -2
• Квадратните скоби ([и]) показват незадължителните части на типа дефиниция.
• f sp: тази конвенция се прилага за типове времеви марки, дата и час. Представлява точността на дробни секунди (броя на цифрите, които следват десетичната запетая за дробни секунди). Даденият fsp стойността трябва да варира от 0-6. Стойност 0 означава, че в дадената стойност няма дробни части. Въпреки това, в случаите, когато стойността е пропусната, тогава точността се обозначава като 0.
В MySQL има три основни категории типове данни, които съдържат подкатегории. Основните типове данни са:
- Типове на низови данни
- Типове данни за дата и час.
- Числови типове данни
Има и други типове данни, поддържани от MySQL, като типове пространствени данни и типове данни JSON.
Тази статия обхваща изчерпателно всички видове данни, споменати по-горе. Следователно, за да получите ясно разбиране за типовете данни, се придържайте към тази статия.
Типове низови данни
Типовете низови данни се използват главно за съхраняване на двоични данни и обикновен текст, като изображения и файлове. В допълнение, MYSQL има способността да сравнява и търси стойности на низове въз основа на съвпадащия модел, като регулярни изрази и оператори.
По-долу е дадена подробна илюстрация на всички низови типове данни, които MySQL поддържа:
CHAR ( размер ): Това е фиксираната дължина на низ. Може да съдържа букви, специални знаци или цифри. Параметърът размер обозначава дължината на колоната в знаци и може да варира от 0-255. Размерът по подразбиране е 1.
VARCHAR ( размер ): Това е променливата дължина на низ. Той съдържа цифри, специални знаци или букви. Параметърът размер показва максималната дължина на колоната в знаци и може да варира от 0-65535.
БИНАРНО ( размер ): Те са равни на CHAR (), като съхраняват само низове с двоични байтове. Параметърът размер определя дължината на колоната в байтове. По подразбиране е 1
VARBINARY ( размер ): Това е равно на VARCHAR (), само че съхранява двоични байтови низове. Параметърът размер определя максималната дължина на колоната в байтове.
ТИНИТЕКСТ: Съдържа низове, които съдържат максимална дължина от 255 знака.
ТЕКСТ ( размер ): Съдържа низове, които съдържат максимална дължина от 65 535 байта.
BLOB ( размер ): За големи двоични обекти (BLOB). Те съдържат до 65 535 байта данни.
TINYBLOB: За големи двоични обекти (BLOB). Той съдържа максимална дължина от 255 байта.
LONGLOB: За големи двоични обекти (BLOB). Те съдържат до 4 294 967 295 байта данни.
ДЪЛЪГ ТЕКСТ: Съдържа низове, които съдържат максимална дължина от 4 294 967 295 знака.
СРЕДЕН ТЕКСТ: Съдържа низове, които съдържат максимална дължина от 16 777 215 знака.
СРЕДЕН BLOB: За големи двоични обекти (BLOB). Те съдържат до 16 777 215 байта данни.
ЗАДАВАНЕ ( val1, val2, val3, … ): Това е низ обект, който съдържа повече от една стойност (низове, които съдържат 0 или повече стойности). Те се избират от списък с възможни стойности точно като ENUM. Въпреки това, в списък SET можете да посочите само до 64 стойности.
ENUM ( val1, val2, val3, … ): Това е низ обект, който може да съдържа само една стойност, избрана от списък с всички възможни стойности. В списък ENUM можете да изброите до 65535 стойности. Ако се вмъкне стойност, която не е в списъка, тогава вмъкнатата стойност ще бъде празна. Също така е важно да се отбележи, че стойностите се сортират в зависимост от реда, в който потребителят ги е въвел.
Типове данни за дата и час
Типовете данни за дата и час определят времевите стойности като DateTime, timestamp, year, time и date. Всеки от споменатите времеви типове има стойности, които включват нула. Всеки път, когато се вмъкне невалидна стойност, MySQL не може да я представи. Следователно се избира нула.
По-долу е изчерпателна илюстрация на типовете данни за дата и час, поддържани от MySQL:
ДАТА: Стандартният формат на датата е съответно години, месеци и дни (ГГГГ-ММ-ДД), а поддържаният диапазон е „1000-01-01“ до „9999-12-31“.
DATETIME ( fsp ): Това е комбинацията от дата и час. Стандартният формат в този случай е съответно години, месеци, дни, часове, минути и секунди (ГГГГ-ММ-ДД hh:mm:ss)
Забележка: Добавянето на ПОДРАЗБИРАНЕ и НА АКТУАЛИЗИРАНЕ в колона е от съществено значение за стартиране на автоматична инициализация и актуализира текущия час и дата.
TIMESTAMP ( fsp ): От епохата на Unix стойностите на времевия клей се съхраняват като брой секунди, като (‘1970-01-01 00;00;00’ UTC). Стандартният формат е съответно години, месеци, дни, часове, минути и секунди (ГГГГ-ММ-ДД hh:mm:ss), докато поддържаният диапазон е между '('1970-01-01 00;00;01' UTC до ('2038-01-09 03;14;07' UTC. DEFAULT_CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP са жизненоважни за автоматично инициализиране и актуализиране на текущата дата и час.
ВРЕМЕ ( fsp ): Стандартният поддържан формат на времето е съответно часове, минути, секунди (hh:mm:ss), а поддържаният диапазон е „-838:59:59“ до „838:59:59“.
ГОДИНА: Една година е представена в четирицифрен формат — допустимите стойности в четирицифрения формат варират от 1902 до 2155 и 0000.
Забележка: Най-новата версия на MySQL (8.0) не поддържа двуцифрения формат година.
Числови типове данни
Типовете числови данни включват всички точни числови типове данни, като цяло число, десетичен и числов. Той също така съдържа приблизителните числови типове данни като float, double, double precision и real. Числовите типове данни съхраняват битови стойности, тъй като поддържат типовете данни BIT. Обикновено числовите типове данни в MySQL са разделени на две категории:подписани типове данни и неподписани типове данни; обаче това е изключение от битовите типове данни.
По-долу е дадена подробна илюстрация, съдържаща всички типове числови данни, поддържани от MySQL, и тяхното описание:
BIT ( размер ): Това е тип битова стойност, при който броят на битовете на стойност се обозначава като размер . Параметърът размер има способността да задържа стойности от 1 до 64, а стойността му по подразбиране за размер е 1.
TINYINT ( размер ): Това е много малко цяло число, чийто диапазон със знак варира от -128 до 127, докато неговият неподписан диапазон варира от 0 до 255. Параметърът size обозначава максималната ширина за показване, която е около 255.
БУЛЕВО: То е равно на BOOL
BOOL: В BOOL ненулевите стойности се считат за верни. В същото време нулевите стойности се считат за фалшиви.
INT ( размер ): Това е средно цяло число, чийто диапазон със знак варира от -2147483648 до 2147483647, докато диапазонът без знак варира от 0 до 4294967295. Параметърът size определя максималната ширина за показване, която е около 255.
СРЕДНО ( размер ): Това също е средно цяло число, чийто диапазон със знак варира от -32768 до 32767, докато неговият неподписан диапазон варира от 0 до 65535. Параметърът size определя максималната ширина за показване, която е около 255.
SMALLINT ( размер ): Това е малко цяло число, чийто диапазон със знак е между -32768 до 32767, докато диапазонът без знак е между 0 до 16777215. Размерът параметърът в този случай се използва за определяне на максималната ширина на дисплея, чийто диапазон е около 255.
FLOAT ( размер, d ): Това е число с плаваща запетая, чийто общ брой цифри е обозначен с размер. d параметърът помага да посочите броя на цифрите след десетичната запетая.
Забележка: този параметър е остарял в MySQL версия 8.0.17. Следователно той няма да бъде възпроизвеждан в бъдещи версии на MySQL.
ЦЕЛО число ( размер ): Това е еквивалентно на INT (размер ).
FLOAT( p ): Това е число с плаваща запетая. P параметърът се използва, за да се определи дали FLOAT или DOUBLE ще бъдат използвани в резултантния тип данни. Когато P -стойността варира от 0 до 24, данните са известни като FLOAT (). Докато когато P -стойността варира от 25 до 53, след което типът данни се променя на DOUBLE ().
DEC ( размер, d ): Това е еквивалент на DECIMAL (размер, d )
ДВОЙНО ( размер, d ): Това означава стандартен размер число с плаваща запетая, чийто общ брой цифри е даден по размер. d параметърът помага да посочите броя на цифрите след десетичната запетая.
DECIMAL ( размер, d ): Това е точно число с фиксирана точка, чийто общ брой цифри е посочен като размер . d параметър определя цифрите след десетичната запетая. Максималният размер номерът е 65, докато d максималният брой е 30. Следователно стойността по подразбиране за d е 0, докато стойността по подразбиране за размер е 10.
Забележка: всички числови типове съдържат допълнителни опции; ZEROFILL и UNSIGNED. Ако се добави опцията UNSIGNED, тогава MySQL ще забрани отрицателните стойности в колоната. От друга страна, ако се добави опцията ZEROFILL, MySQL автоматично ще добави атрибута UNSIGNED към споменатата колона.
Други типове данни
Булев тип данни
Най-малкият целочислен тип TINYINT (1) се използва за представяне на булеви стойности в MySQL, тъй като MySQL не съдържа вграден тип данни BOOL или BOOLEAN. Следователно, когато работите с BOOL и BOOLEAN, трябва да ги приравните на TINYINT (1).
Тип пространствени данни
MySQL осигурява поддръжка за няколко типа пространствени данни, които имат различни видове географски и геометрични стойности, както е посочено по-долу:
ГЕОМЕТРИЯ: Това е агрегат или точка, която може да задържи пространствената стойност от всякакъв тип, стига да има местоположение.
ПОЛИГЪН: Това е плоска повърхност, представена от многостранна геометрия. Може да се дефинира с нула или само с една външни и повече вътрешни граници.
MULTILINESTRING: Това е геометрия с множество криви, която съдържа колекция от стойности LINESTRING.
МНОГОПОГЪЛНИК: Това е обект с множество повърхности, представен от колекция от няколко многоъгълни елемента, и е двуизмерна геометрия
ТОЧКА: Това е точка или двойка, която съдържа координатите X и Y. Може да се каже, че е точка в геометрия, която представлява едно място.
ГЕОМЕТРИЧНА КОЛЕКЦИЯ: Това е колекция от стойности на GEOMETRY
LINESTRING: Това е крива, която съдържа една или повече точкови стойности. В случаите, когато линейният низ съдържа само две точки, това означава, че представлява линия.
МНОГОТОЧКА: Това е колекция от стойности на POINT, при които точката не може да бъде подредена или свързана по никакъв начин.
Тип данни JSON
MYSQL поддържа родния тип данни JSON от началото на версия 5.7.8, което позволява съхранение и управление на JSON документи много бързо и ефективно. В допълнение, родният тип данни JSON е отговорен за осигуряването на оптимален формат за съхранение и автоматичното валидиране на JSON документи.
Заключение
Тази статия обхваща изчерпателно всички аспекти относно типовете данни на MySQL, които ще ви помогнат да разберете кои типове данни трябва да се използват и как трябва да се използват. Вярваме, че статията ще ви помогне да подобрите знанията си за MySQL.