ЕНУМ тип података у МиСКЛ-у је а стринг објекат . Омогућава нам да ограничимо вредност изабрану са листе дозвољених вредности у спецификацији колоне у време креирања табеле. То је скраћено за набрајање , што значи да свака колона може имати једну од наведених могућих вредности. Користи нумерички индекси (1, 2, 3…) за представљање вредности низа.
МиСКЛ ЕНУМ тип података садржи следеће предности:
- Компактно складиштење података где колона може имати ограничен скуп наведених могућих вредности. Овде се вредности стрингова аутоматски користе као нумерички индекс.
- Омогућава читљиве упите и излаз јер се бројеви могу поново превести у одговарајући низ.
- Може да прихвати многе типове података као што су цео број, покретни зарез, децимални и стринг.
Синтакса
Следеће је синтакса која се користи за дефинисање типа података ЕНУМ у колони:
CREATE TABLE table_name ( Column1, Column2 ENUM ('value_1','value_2','value_3'), Column3… );
У горњој синтакси дефинисали смо само три ЕНУМ вредности, али се може повећати према нашим потребама. Овде морамо да се уверимо да вредности набрајања увек треба да буду унутар цитирани стринг литерал .
азбука у бројевима
МиСКЛ нам омогућава да дефинишемо тип података ЕНУМ са следећим атрибутима:
НИЈЕ НУЛЛ: Подразумевано, тип података ЕНУМ је НУЛЛ. Ако не желимо да дозволимо НУЛЛ вредности, потребно је да користимо својство НОТ НУЛЛ док наведемо колону ЕНУМ.
НУЛА: То је синоним за ДЕФАУЛТ НУЛЛ, а његова вредност индекса је увек НУЛЛ.
УОБИЧАЈЕНО: Када вредност није наведена у колони, тип података ЕНУМ умеће подразумевану вредност. Другим речима, ако наредба ИНСЕРТ не обезбеди вредност за ову колону, тада ће бити уметнута подразумевана вредност. Израз ДЕФАУЛТ не дозвољава уметање функције. ЕНУМ тип података у Ми СКЛ укључује ДЕФАУЛТ вредности као НУЛЛ или празан стринг ('').
разлика између фирме и компаније
Пример МиСКЛ ЕНУМ-а
Хајде да разумемо како тип података ЕНУМ функционише у МиСКЛ-у са следећом илустрацијом. Овде ћемо креирати табелу под називом ' кошуље ' који садржи три колоне: ид, име и величину.
Колона величине користи тип података ЕНУМ и има мале, средње, велике и к велике величине. МиСКЛ мапира ове чланове набрајања у нумерички индекс где је мали=1, средњи=2, велики=3 и к-ларге=4 респективно. Извршите следећи упит да бисте креирали табелу:
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', 'large', 'x-large') );
Следеће, морамо уметнути вредности у табелу. Током уметања, вредности набрајања се могу уметнути или као литерални низ или као његови нумерички индекси, и оба су иста. Извршите следећу наредбу да бисте уметнули вредности у табелу:
INSERT INTO shirts(id, name, size) VALUES (1,'t-shirt', 'medium'), (2, 'casual-shirt', 3), (3, 'formal-shirt', 4), (4, 'polo-shirt', 'small');
Сада извршите наредбу СЕЛЕЦТ да бисте видели уметнуте вредности у табелу:
mysql> SELECT * FROM shirts;
Следећа слика садржи све горње резултате упита који садрже вредности набрајања само у литералима стрингова:
ЕНУМ сортирање
МиСКЛ сортира вредности набрајања на основу њихових нумеричких индекса који зависе од редоследа којим смо убацили податке у спецификацију колоне. На пример , ако смо дефинисали набрајање као ЕНУМ ('б', 'а', '', 'ц'). Затим, б долази испред а, празан стринг долази испред ц (непразан стринг), а вредност НУЛЛ долази испред других вредности.
Дакле, ако не желимо да добијемо неочекивани резултат са ЕНУМ типом података користећи ОРДЕР БИ клаузулу, следите ова правила:
јава спојити стрингове
- Дефинишите вредности набрајања по абецедном реду.
- Потребно је да се уверите да је име колоне у лексичком редоследу, а не по броју индекса.
Следећи пример јасније објашњава сортирање набрајања. Дакле, ако желите да добијете величину кошуља одређеним редоследом, извршите наредбу у наставку:
mysql> SELECT * FROM shirts ORDER BY size DESC;
Овај упит ће дати резултат као у наставку где можемо видети да је величина кошуља у опадајућем редоследу:
Ограничења типа података ЕНУМ
Следе недостаци типа података ЕНУМ у МиСКЛ-у:
1. Ако желимо да изменимо вредности/чланове набрајања, то се може урадити поновним изградњом целе табеле помоћу команде АЛТЕР ТАБЛЕ. Такође скупо користи наше ресурсе и време.
2. Не можемо користити израз са члановима набрајања. На пример, ова изјава ЦРЕАТЕ се не извршава јер користи функцију ЦОНЦАТ() за креирање чланова набрајања.
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', CONCAT('med','ium'), 'large', 'x-large') );
3. Не можемо користити корисничку променљиву као члан набрајања. То се може видети у следећем примеру:
SET @mysize = 'large'; CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', @mysize, 'x-large') );
4. Препоручује се да не користимо нумеричке вредности као чланове набрајања.
5. Комплексно је добити комплетну листу за набрајање информација јер треба да приступимо бази података информатион_сцхема.
како пронаћи блокиране бројеве на андроиду
6. Можемо се суочити са проблемом током преноса ЕНУМ-а на друге РДБМС јер многе базе података не подржавају овај тип података.
7. Не можемо додати више атрибута на пописне листе.