Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में ENUM वैरिएबल टाइप बनाना

नहीं, MySQL CREATE DOMAIN . का समर्थन नहीं करता है या CREATE TYPE जैसे, उदाहरण के लिए, PostgreSQL करता है

आपको शायद सभी नाम फिर से दर्ज करने होंगे। कॉपी और पेस्ट, या SQL स्क्रिप्ट का उपयोग करके आप इसे करने में लगने वाले काम को कम कर सकते हैं।

आप INFORMATION_SCHEMA . का भी उपयोग कर सकते हैं ENUM परिभाषा का पाठ प्राप्त करने के लिए तालिकाएँ, और फिर उसे एक नए CREATE TABLE में प्रक्षेपित करें बयान।

आप CREATE TABLE AS . का भी उपयोग कर सकते हैं एक प्रकार की परिभाषा को कॉपी करने के रचनात्मक तरीकों से। यहाँ एक प्रदर्शन है:

CREATE TABLE foo ( f ENUM('abc', 'xyz') );
CREATE TABLE bar AS SELECT f AS b FROM foo;
SHOW CREATE TABLE bar;

आउटपुट:

CREATE TABLE `bar` (
  `b` enum('abc','xyz') default NULL
) 

अंत में, मेरा सुझाव है कि यदि आपके ENUM में कई मान हैं (जो मुझे लगता है कि यह सच है क्योंकि आप उन्हें टाइप करने से बचने के लिए एक समाधान की तलाश कर रहे हैं), तो आपको संभवतः ENUM डेटा प्रकार के बजाय लुकअप तालिका का उपयोग करना चाहिए।

@bliako से दोबारा टिप्पणी करें:

आप वह कर सकते हैं जो आप इस तरह से वर्णन करते हैं:

CREATE TABLE bar (pop INT NOT NULL, name VARCHAR(100))
AS SELECT 0 AS pop, NULL AS name, f FROM foo;

मैंने इसे MySQL 5.7.27 पर आज़माया, और इसने काम किया।

यह ध्यान रखना दिलचस्प है कि आपको CREATE TABLE लाइन में सभी तीन कॉलम घोषित करने की आवश्यकता नहीं है। तीसरा कॉलम f स्वचालित रूप से जोड़ दिया जाएगा।

यह भी दिलचस्प है कि मुझे SELECT . में कॉलम एलियासेस देने थे यह सुनिश्चित करने के लिए कथन कि कॉलम नाम CREATE TABLE में घोषित नामों से मेल खाते हैं . अन्यथा यदि कॉलम के नाम मेल नहीं खाते, तो आपको अतिरिक्त कॉलम मिलते हैं, और उनके डेटा प्रकार आपकी अपेक्षा के अनुरूप नहीं होते हैं:

create table bar (pop int not null, name varchar(100)) 
as select 0 as c1, null as c2, f from foo;

show create table bar\G

CREATE TABLE `bar` (
  `pop` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  `c1` binary(0) DEFAULT NULL,
  `c2` binary(0) DEFAULT NULL,
  `f` enum('abc','xyz') DEFAULT NULL
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:डेटाबेस पर **सभी** विशेषाधिकार प्रदान करें

  2. EF:स्थानिक/पूर्ण पाठ/हैश अनुक्रमणिका और स्पष्ट अनुक्रमणिका क्रम का गलत उपयोग

  3. Mysql क्वेरी वांछित मान के बजाय संसाधन आईडी #8 लौटा रही है

  4. MySQL में आवृत्ति से पर्सेंटाइल की गणना करें

  5. जाँच करें कि क्या पंक्ति मौजूद है, Laravel