Mysql
 sql >> база данни >  >> RDS >> Mysql

Тип MySQL ENUM спрямо таблици за присъединяване

  • Промяната на набора от стойности в ENUM изисква ALTER TABLE което може да доведе до преструктуриране на таблицата - невероятно скъпа операция (преструктурирането на таблицата не се случва, ако просто добавите една нова стойност в края на дефиницията на ENUM, но ако изтриете такава или промените реда, тя прави таблица преструктуриране). Докато промяната на набора от стойности в справочна таблица е толкова проста, колкото INSERT или DELETE.

  • Няма начин да се свържат други атрибути със стойностите в ENUM, като например кои са оттеглени и кои отговарят на условията за поставяне в падащ списък във вашия потребителски интерфейс. Въпреки това, справочната таблица може да включва допълнителни колони за такива атрибути.

  • Много е трудно да се направи заявка за ENUM, за да се получи списък с различни стойности, което основно изисква от вас да потърсите дефиницията на типа данни от INFORMATION_SCHEMA и се върна синтактичен анализ на списъка от BLOB. Можете да опитате SELECT DISTINCT status от вашата таблица, но това получава само стойности на състоянието, които се използват в момента, които може да не са всички стойности в ENUM. Въпреки това, ако съхранявате стойности в справочна таблица, е лесно да правите заявки, сортиране и т.н.

Не съм голям фен на ENUM, както можете да кажете. :-)

Същото важи и за ограниченията CHECK, които просто сравняват колона с фиксиран набор от стойности. Въпреки че MySQL така или иначе не поддържа CHECK ограничения.

Актуализация:MySQL 8.0.16 вече прилага ПРОВЕРКА ограничения .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете колони в различни бази данни

  2. Пребройте случаите на DISTINCT стойности

  3. MySQL JOIN с LIMIT 1 върху обединена маса

  4. Внедряване на коментари и харесвания в базата данни

  5. Как да промените директория с данни MySQL/MariaDB по подразбиране в Linux