Typ danych ENUM w MySQL to a obiekt ciąg . Pozwala na ograniczenie wartości wybranej z listy dozwolonych wartości w specyfikacji kolumny w momencie tworzenia tabeli. To skrót od wyliczenie , co oznacza, że każda kolumna może mieć jedną z określonych możliwych wartości. To używa indeksy numeryczne (1, 2, 3…) do reprezentowania wartości ciągu.
MySQL-a Typ danych ENUM ma następujące zalety:
- Kompaktowy magazyn danych, w którym kolumna może mieć ograniczony zestaw określonych możliwych wartości. Tutaj wartości ciągu są automatycznie używane jako indeks numeryczny.
- Umożliwia czytelne zapytania i dane wyjściowe, ponieważ liczby można ponownie przetłumaczyć na odpowiedni ciąg.
- Może akceptować wiele typów danych, takich jak liczby całkowite, zmiennoprzecinkowe, dziesiętne i łańcuchowe.
Składnia
Poniżej przedstawiono składnię używaną do definiowania typu danych ENUM w kolumnie:
CREATE TABLE table_name ( Column1, Column2 ENUM ('value_1','value_2','value_3'), Column3… );
W powyższej składni zdefiniowaliśmy tylko trzy wartości ENUM, ale można je zwiększać w zależności od naszych potrzeb. W tym miejscu musimy się upewnić, że wartości wyliczenia powinny zawsze znajdować się wewnątrz cytowany literał ciągu .
MySQL pozwala nam zdefiniować typ danych ENUM za pomocą następujących atrybutów:
android.process.acore ciągle się zatrzymuje
NIE JEST ZEREM: Domyślnie typem danych ENUM jest NULL. Jeśli nie chcemy dopuszczać wartości NULL, konieczne jest użycie właściwości NOT NULL przy określaniu kolumny ENUM.
ZERO: Jest synonimem DEFAULT NULL, a jego wartość indeksu jest zawsze równa NULL.
DOMYŚLNY: Jeżeli w kolumnie nie określono wartości, typ danych ENUM wstawia wartość domyślną. Innymi słowy, jeśli instrukcja INSERT nie poda wartości dla tej kolumny, wówczas zostanie wstawiona wartość domyślna. Wyrażenie DEFAULT nie pozwala na wstawienie funkcji. Typ danych ENUM w My SQL zawiera wartości DEFAULT jako NULL lub pusty ciąg znaków ('').
Przykład ENUM MySQL
Na poniższej ilustracji wyjaśnimy, jak działa typ danych ENUM w MySQL. Tutaj utworzymy tabelę o nazwie „ koszule ', który zawiera trzy kolumny: identyfikator, nazwę i rozmiar.
zdefiniuj komputer
Kolumna rozmiaru używa typu danych ENUM i ma rozmiary małe, średnie, duże i x-duże. MySQL mapuje te elementy wyliczenia na indeks numeryczny, gdzie odpowiednio mały = 1, średni = 2, duży = 3 i x-duży = 4. Wykonaj następujące zapytanie, aby utworzyć tabelę:
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', 'large', 'x-large') );
Dalej, musimy wstawić wartości do tabeli. Podczas wstawiania wartości wyliczenia można wstawić jako literał ciągu lub jego indeksy numeryczne; oba są takie same. Wykonaj następującą instrukcję, aby wstawić wartości do tabeli:
jesteś splotem
INSERT INTO shirts(id, name, size) VALUES (1,'t-shirt', 'medium'), (2, 'casual-shirt', 3), (3, 'formal-shirt', 4), (4, 'polo-shirt', 'small');
Teraz wykonaj instrukcję SELECT, aby zobaczyć wstawione wartości do tabeli:
mysql> SELECT * FROM shirts;
Poniższy obraz zawiera wszystkie powyższe wyniki zapytania, które zawierają wartości wyliczenia wyłącznie w literałach łańcuchowych:
Sortowanie ENUM
MySQL sortuje wartości wyliczeniowe na podstawie ich indeksów numerycznych, które zależą od kolejności, w jakiej wstawiliśmy dane w specyfikacji kolumny. Na przykład , jeśli zdefiniowaliśmy wyliczenie jako ENUM („b”, „a”, „”, „c”). Następnie b występuje przed a, pusty ciąg znaków przed c (niepusty ciąg znaków), a wartość NULL występuje przed innymi wartościami.
Jeśli więc nie chcemy uzyskać nieoczekiwanego wyniku przy użyciu typu danych ENUM przy użyciu klauzuli ORDER BY, postępuj zgodnie z poniższymi zasadami:
- Zdefiniuj wartości wyliczenia w kolejności alfabetycznej.
- Ma to na celu upewnienie się, że nazwa kolumny jest w porządku leksykalnym, a nie według numeru indeksu.
Poniższy przykład wyjaśnia sortowanie wyliczeń w bardziej przejrzysty sposób. Jeśli więc chcesz uzyskać rozmiary koszulek w określonej kolejności, wykonaj poniższą instrukcję:
mysql> SELECT * FROM shirts ORDER BY size DESC;
To zapytanie da wynik jak poniżej, gdzie możemy zobaczyć, że rozmiary koszul są w kolejności malejącej:
Ograniczenia typu danych ENUM
Poniżej przedstawiono wady typu danych ENUM w MySQL:
1. Jeśli chcemy zmodyfikować wartości/elementy wyliczenia, można to zrobić przebudowując całą tabelę za pomocą polecenia ALTER TABLE. Powoduje to również kosztowne wykorzystanie naszych zasobów i czasu.
lista tablic posortowana
2. Nie możemy używać wyrażeń w przypadku elementów wyliczeniowych. Na przykład ta instrukcja CREATE nie zostanie wykonana, ponieważ używa funkcji CONCAT() do tworzenia elementów wyliczenia.
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', CONCAT('med','ium'), 'large', 'x-large') );
3. Nie możemy używać zmiennej użytkownika jako elementu wyliczenia. Można to zobaczyć na poniższym przykładzie:
SET @mysize = 'large'; CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', @mysize, 'x-large') );
4. Zaleca się, abyśmy nie używali wartości liczbowych jako elementów wyliczenia.
ascii a w Javie
5. Uzyskanie pełnej listy wyliczeniowej informacji jest skomplikowane, ponieważ musimy uzyskać dostęp do bazy danych Information_schema.
6. Podczas przenoszenia ENUM do innego RDBMS możemy napotkać problem, ponieważ wiele baz danych nie obsługuje tego typu danych.
7. Nie możemy dodawać kolejnych atrybutów do list wyliczeniowych.