Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Typ MySQL ENUM a dołączanie tabel

  • Zmiana zestawu wartości w ENUM wymaga ALTER TABLE co może spowodować restrukturyzację tabeli — niezwykle kosztowna operacja (restrukturyzacja tabeli nie nastąpi, jeśli po prostu dodasz jedną nową wartość na końcu definicji ENUM, ale jeśli ją usuniesz lub zmienisz kolejność, restrukturyzacji). Natomiast zmiana zestawu wartości w tabeli przeglądowej jest tak prosta, jak INSERT lub DELETE.

  • Nie ma możliwości powiązania innych atrybutów z wartościami w ENUM, na przykład, które z nich są wycofywane, a które kwalifikują się do umieszczenia na liście rozwijanej w interfejsie użytkownika. Jednak tabela przeglądowa może zawierać dodatkowe kolumny dla takich atrybutów.

  • Bardzo trudno jest wykonać zapytanie ENUM, aby uzyskać listę odrębnych wartości, zasadniczo wymaga to zapytania o definicję typu danych z INFORMATION_SCHEMA i analizowanie listy ze zwróconego obiektu BLOB. Możesz spróbować SELECT DISTINCT status z twojej tabeli, ale pobiera tylko aktualnie używane wartości statusu, które mogą nie być wszystkimi wartościami w ENUM. Jeśli jednak przechowujesz wartości w tabeli przeglądowej, łatwo jest wykonywać zapytania, sortować itp.

Nie jestem wielkim fanem ENUM, jak można powiedzieć. :-)

To samo dotyczy ograniczeń CHECK, które po prostu porównują kolumnę ze stałym zestawem wartości. Chociaż MySQL i tak nie obsługuje ograniczeń CHECK.

Aktualizacja:MySQL 8.0.16 implementuje teraz SPRAWDŹ ograniczenia .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd MySQL/zapisu pliku (Errcode 28)

  2. Jak mogę połączyć się z MySQL w Pythonie 3 w systemie Windows?

  3. Mysql:jak wybrać grupy posiadające określone wartości?

  4. Jak korzystać z ról, które zmieniły się w MySQL 8.0?

  5. Funkcja MySQL EXP() — powrót e podniesiony do potęgi x