परिचय
- एसक्यूएल में, कभी-कभी किसी तालिका के कॉलम को हटाना आवश्यक होता है।
- वैकल्पिक तालिका . का उपयोग ड्रॉप कॉलम . के साथ कमांड करें खंड किसी तालिका से किसी स्तंभ को हटाने/निकालने के उद्देश्य को पूरा करेगा।
- एक टेबल से सिंगल और मल्टीपल कॉलम को हटाना संभव है।
1. तालिका से एकल स्तंभ हटाएं
तालिका के एक कॉलम को हटाने के लिए, नीचे दिए गए सिंटैक्स का उपयोग करें:
ALTER TABLE TableName DROP COLUMN ColumnName;
यहाँ,
- TableName उस तालिका का नाम है जिसका कॉलम हटाया जाना है।
- DROP COLUMN क्लॉज के बाद ColumnName उस कॉलम का नाम है जिसे डिलीट किया जाना है।
उदाहरण:
"कर्मचारी_डीबी" नाम के एक डेटाबेस पर विचार करें जिसमें एक तालिका 'कर्मचारी' बनाई गई है। इस विषय में, हम बाद के सभी उदाहरणों के लिए इस तालिका और डेटाबेस पर विचार करेंगे:
mysql> USE employee_db;
Database changed
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_City | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.07 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+----------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_City | Emp_PhoneNo |
+--------+----------+------------+------------+----------+-------------+
| 101 | Ram | 52000 | R&D | Pune | 8798654676 |
| 102 | Shyam | 38000 | Finance | Delhi | 9898765687 |
| 103 | Anmol | 61000 | Accounting | Mumbai | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | Shimla | 7678987534 |
| 105 | Rohit | 53000 | HRM | Ambala | 8897865643 |
+--------+----------+------------+------------+----------+-------------+
5 rows in set (0.00 sec)
यहां, हमने पहले से बनाए गए डेटाबेस को 'USE Employee_db' कमांड के साथ चुना है। "डीईएससी कर्मचारी" कमांड 'कर्मचारी' तालिका की संरचना का वर्णन करता है। फिर हमने कर्मचारी_डीबी में बनाई गई कर्मचारी तालिका को प्रदर्शित करने के लिए SELECT कमांड का उपयोग किया है।
अब, हम 'कर्मचारी' तालिका में कर्मचारी शहर वाले कॉलम को हटाने के लिए एक प्रश्न लिखेंगे ।
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5 Duplicates: 0 Warnings: 0
ALTER TABLE कमांड का उपयोग एम्प्लॉयी टेबल पर DROP COLUMN क्लॉज के साथ Emp_City पर किया जाता है।
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_PhoneNo |
+--------+----------+------------+------------+-------------+
| 101 | Ram | 52000 | R&D | 8798654676 |
| 102 | Shyam | 38000 | Finance | 9898765687 |
| 103 | Anmol | 61000 | Accounting | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | 7678987534 |
| 105 | Rohit | 53000 | HRM | 8897865643 |
+--------+----------+------------+------------+-------------+
5 rows in set (0.00 sec)
जब हम ऊपर लिखे ALTER कमांड को लागू करने के बाद फिर से 'कर्मचारी' तालिका पर DESC कमांड लागू करते हैं, तो अब हम देख सकते हैं कि Emp_City परिणामों में सूचीबद्ध नहीं है। इससे पता चलता है कि Emp_City नाम का कॉलम अब कर्मचारी तालिका से हटा दिया गया है।
हमने फिर से सेलेक्ट कमांड का भी इस्तेमाल किया है। SELECT कमांड के परिणामों में, सभी रिकॉर्ड से Emp_City में निहित मान हटा दिए जाते हैं।
2. किसी तालिका से अनेक स्तंभ हटाएं
तालिका के एक से अधिक कॉलम हटाने के लिए, नीचे दिए गए सिंटैक्स का उपयोग करें:
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;
यहाँ,
हमें DROP COLUMN क्लॉज के साथ उन सभी कॉलम नामों को निर्दिष्ट करने की आवश्यकता है जिन्हें हटाया जाना है।
उदाहरण:
सबसे पहले, हम कर्मचारी तालिका की संरचना और उसमें मौजूद अभिलेखों को देखेंगे।
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_PhoneNo |
+--------+----------+------------+------------+-------------+
| 101 | Ram | 52000 | R&D | 8798654676 |
| 102 | Shyam | 38000 | Finance | 9898765687 |
| 103 | Anmol | 61000 | Accounting | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | 7678987534 |
| 105 | Rohit | 53000 | HRM | 8897865643 |
+--------+----------+------------+------------+-------------+
5 rows in set (0.00 sec)
यहां, हमने पहले से बनाए गए डेटाबेस को 'USE कर्मचारी_डीबी' कमांड के साथ चुना है। "डीईएससी कर्मचारी" कमांड 'कर्मचारी' तालिका की संरचना का वर्णन करता है। फिर हमने कर्मचारी_डीबी में बनाई गई कर्मचारी तालिका को प्रदर्शित करने के लिए SELECT कमांड का उपयोग किया है।
अब, हम 'कर्मचारी' तालिका में कर्मचारी वेतन और कर्मचारी फोन नंबर वाले कॉलम को हटाने के लिए एक प्रश्न लिखेंगे।
mysql> ALTER TABLE employee DROP COLUMN Emp_Salary, DROP COLUMN Emp_PhoneNo;
Query OK, 5 rows affected (0.29 sec)
Records: 5 Duplicates: 0 Warnings: 0
ALTER TABLE कमांड का उपयोग एम्प्लॉयी टेबल पर DROP COLUMN क्लॉज के साथ Emp_Salary और Emp_PhoneNo पर किया जाता है।
mysql> DESC employee;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+
| Emp_ID | Emp_Name | Emp_Dept |
+--------+----------+------------+
| 101 | Ram | R&D |
| 102 | Shyam | Finance |
| 103 | Anmol | Accounting |
| 104 | Abhishek | Purchasing |
| 105 | Rohit | HRM |
+--------+----------+------------+
5 rows in set (0.00 sec)
जब हम ऊपर लिखे ALTER कमांड को लागू करने के बाद फिर से 'कर्मचारी' तालिका पर DESC कमांड लागू करते हैं, तो हम देख सकते हैं कि Emp_Salary और Emp_PhoneNo परिणामों में सूचीबद्ध नहीं हैं। इससे पता चलता है कि Emp_Salary और Emp_PhoneNo नाम का कॉलम अब कर्मचारी तालिका से हटा दिया गया है। फिर हमने फिर से सेलेक्ट कमांड का भी इस्तेमाल किया है। SELECT कमांड के परिणामों में, सभी रिकॉर्ड से Emp_Salary और Emp_PhoneNo में निहित मान हटा दिए जाते हैं।