MySQL में वर्चुअल टेबल (VIEW) बनाना: CREATE VIEW AS SELECT
सिंटैक्स:
CREATE VIEW yourViewName AS
SELECT yourColumnName1, yourColumnName2, ..., yourColumnNameN
FROM yourTableName;
व्यावहारिक उदाहरण
1. बेस टेबल बनाएं:
mysql> CREATE TABLE ViewDemo (Id INT, Name VARCHAR(200), Age INT);
Query OK, 0 rows affected (0.58 sec)
2. व्यू बनाएं (केवल Id और Name):
mysql> CREATE VIEW LookUpTable AS SELECT Id, Name FROM ViewDemo;
Query OK, 0 rows affected (0.15 sec)
3. व्यू वेरिफाई करें:
mysql> SHOW CREATE TABLE LookUpTable;
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View | Create View | character_set_client | collation_connection |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| lookuptable | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `lookuptable` AS select `viewdemo`.`Id` AS `Id`,`viewdemo`.`Name` AS `Name` from `viewdemo` | utf8 | utf8_general_ci |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)
व्यू के प्रकार:
| एल्गोरिदम | विवरण |
| MERGE | व्यू परिभाषा को क्वेरी में मर्ज करता है (डिफ़ॉल्ट, तेज) |
| TEMPTABLE | अस्थायी टेबल बनाता है (कुछ केस में आवश्यक) |
| UNDEFINED | MySQL चुनता है |
CREATE ALGORITHM=MERGE VIEW view_name AS SELECT ...
व्यू के फायदे:
- सरलीकरण: जटिल JOIN/सबक्वेरी छुपाता है
- सुरक्षा: केवल आवश्यक कॉलम एक्सपोज करता है (कॉलम-लेवल सुरक्षा)
- अमूर्तता: बेस टेबल बदलने पर एप्लीकेशन कोड अपडेट नहीं करना पड़ता
- पुन: उपयोग: सामान्य क्वेरी को सेंट्रलाइज करता है
अपडेटेबल व्यू (शर्तें):
- एक ही बेस टेबल से
- कोई एग्रीगेट, DISTINCT, GROUP BY, UNION नहीं
- कोई सबक्वेरी नहीं (कुछ केस में)
- सभी NOT NULL कॉलम शामिल हों (इन्सर्ट के लिए)
व्यू प्रबंधन:
-- व्यू बदलें
CREATE OR REPLACE VIEW view_name AS SELECT ...;
-- व्यू हटाएं
DROP VIEW IF EXISTS view_name;
-- सभी व्यू देखें
SHOW FULL TABLES WHERE Table_type = 'VIEW';