Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

MySQL GENERATED COLUMN क्या है और टेबल बनाते समय इसका उपयोग कैसे करें?


मूल रूप से जेनरेट किए गए कॉलम एक ऐसी सुविधा है जिसका उपयोग तालिका बनाने या तालिका में परिवर्तन करने में किया जा सकता है और यह डेटा को वास्तव में SQL में INSERT या UPDATE क्लॉज के माध्यम से भेजे बिना संग्रहीत करने का एक तरीका है। यह फीचर MySQL 5.7 में जोड़ा गया है। एक जेनरेट किया गया कॉलम टेबल डोमेन के भीतर काम करता है। इसका सिंटैक्स इस प्रकार होगा -

सिंटैक्स

column_name data_type [GENERATED ALWAYS] AS (expression)
[VIRTUAL | STORED] [UNIQUE [KEY]]

यहां, सबसे पहले, कॉलम का नाम और उसका डेटा प्रकार निर्दिष्ट करें।

  • फिर यह इंगित करने के लिए कि कॉलम एक जेनरेट किया गया कॉलम है, जेनरेटेड ALWAYS क्लॉज जोड़ें।
  • फिर, संबंधित विकल्प - VIRTUAL या STORED का उपयोग करके इंगित करें कि जेनरेट किए गए कॉलम का प्रकार है या नहीं। डिफ़ॉल्ट रूप से, MySQL VIRTUAL का उपयोग करता है यदि आप स्पष्ट रूप से जेनरेट किए गए कॉलम के प्रकार को निर्दिष्ट नहीं करते हैं।

उसके बाद, AS कीवर्ड के बाद ब्रेसिज़ के भीतर एक्सप्रेशन निर्दिष्ट करें। अभिव्यक्ति में एक ही तालिका के भीतर किसी भी कॉलम के लिए शाब्दिक, अंतर्निहित फ़ंक्शन, कोई पैरामीटर, ऑपरेटर या संदर्भ शामिल नहीं हो सकते हैं। यदि आप किसी फ़ंक्शन का उपयोग करते हैं, तो यह अदिश और नियतात्मक होना चाहिए।

अंत में, यदि जेनरेट किया गया कॉलम संग्रहीत है, तो आप इसके लिए एक अद्वितीय बाधा परिभाषित कर सकते हैं।

उदाहरण

इस उदाहरण में, हम कर्मचारी_डेटा नाम की एक तालिका बना रहे हैं जिसमें कर्मचारियों के विवरण के साथ-साथ एक जेनरेटेड कॉलम भी है -

mysql> Create table employee_data(ID INT AUTO_INCREMENT PRIMARY KEY, First_name VARCHAR(50) NOT NULL, Last_name VARCHAR(50) NOT NULL, FULL_NAME VARCHAR(90) GENERATED ALWAYS AS(CONCAT(First_name,' ',Last_name)));
Query OK, 0 rows affected (0.55 sec)

mysql> DESCRIBE employee_data;
+------------+-------------+------+-----+---------+-------------------+
| Field      | Type        | Null | Key | Default | Extra             |
+------------+-------------+------+-----+---------+-------------------+
| ID         | int(11)     | NO   | PRI | NULL    | auto_increment    |
| First_name | varchar(50) | NO   |     | NULL    |                   |
| Last_name  | varchar(50) | NO   |     | NULL    |                   |
| FULL_NAME  | varchar(90) | YES  |     | NULL    | VIRTUAL GENERATED |
+------------+-------------+------+-----+---------+-------------------+
4 rows in set (0.00 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Yashpal','Sharma');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Krishan','Kumar');
Query OK, 1 row affected (0.09 sec)

mysql> INSERT INTO employee_data(first_name, Last_name) values('Rakesh','Arora');
Query OK, 1 row affected (0.08 sec)

mysql> Select * from employee_data;
+----+------------+-----------+----------------+
| ID | First_name | Last_name | FULL_NAME      |
+----+------------+-----------+----------------+
| 1  | Yashpal    | Sharma    | Yashpal Sharma |
| 2  | Krishan    | Kumar     | Krishan Kumar  |
| 3  | Rakesh     | Arora     | Rakesh Arora   |
+----+------------+-----------+----------------+
3 rows in set (0.00 sec)

  1. MySQL में इसे बनाते समय AUTO_INCREMENT को किसी तालिका में सेट करें?

    आइए पहले एक टेबल बनाएं। हमने स्टूडेंट आईडी के लिए ऑटो इंक्रीमेंट सेट करने के लिए टेबल बनाते समय AUTO_INCREMENT का उपयोग किया है - )AUTO_INCREMENT=30;क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.69 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल में डालें ( StudentFirstName,Stude

  1. पहले से बनाई गई MySQL तालिका में एक नया कॉलम कैसे बनाएं और भरें?

    आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.77 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल मानों में डालें(20,30);क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.24 सेकंड) चयन कथन का उपयोग करके तालिका से सभी रिकॉर्ड प्रदर्शित करें - डेमोटेबल से *चुनें; आउटपुट

  1. MySQL तालिका बनाते समय आरक्षित कीवर्ड 'कुंजी' का उपयोग करें

    आरक्षित कीवर्ड कुंजी का उपयोग करने के लिए, बैकटिक प्रतीक की अवधारणा का उपयोग करें। यहां, हमारे उदाहरण के लिए, मैं कॉलम नाम कुंजी का उपयोग कर रहा हूं जिसे कॉलम नाम के चारों ओर एक बैकटिक प्रतीक की आवश्यकता है। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable(`Key` int);query OK, 0 Rows प्रभावित (0.67 स