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

MySQL में व्यू से पंक्ति हटाने पर बेस टेबल से भी हट जाती है?

उत्तर: हाँ (अपडेटेबल व्यू के लिए)

MySQL में, यदि व्यू अपडेटेबल है, तो व्यू से DELETE, UPDATE, या INSERT ऑपरेशन अंतर्निहित बेस टेबल को प्रभावित करते हैं।

व्यावहारिक प्रदर्शन

बेस टेबल बनाना

mysql> CREATE TABLE deleteFromBaseTableDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(20)
    -> );

mysql> INSERT INTO deleteFromBaseTableDemo(Name) VALUES
    -> ('John'), ('Carol'), ('Bob'), ('Sam');

व्यू बनाना

mysql> CREATE VIEW delete_view AS 
    -> SELECT Id, Name FROM deleteFromBaseTableDemo;

व्यू और बेस टेबल डेटा (प्रारंभिक)

दोनों में 4 पंक्तियाँ: John, Carol, Bob, Sam

व्यू से पंक्ति हटाना

mysql> DELETE FROM delete_view WHERE Id = 4;
Query OK, 1 row affected (0.26 sec)

व्यू के डेटा (हटाने के बाद)

mysql> SELECT * FROM delete_view;
+----+-------+
| Id | Name  |
+----+-------+
| 1  | John  |
| 2  | Carol |
| 3  | Bob   |
+----+-------+

बेस टेबल के डेटा (हटाने के बाद)

mysql> SELECT * FROM deleteFromBaseTableDemo;
+----+-------+
| Id | Name  |
+----+-------+
| 1  | John  |
| 2  | Carol |
| 3  | Bob   |
+----+-------+

निष्कर्ष

Id=4 (Sam) की पंक्ति दोनों व्यू और बेस टेबल से हटा दी गई।

अपडेटेबल व्यू की शर्तें

व्यू अपडेटेबल है यदि:

  • एकल बेस टेबल से चयन करता है
  • कोई एग्रीगेट फ़ंक्शन नहीं (SUM, COUNT, आदि)
  • कोई DISTINCT, GROUP BY, HAVING नहीं
  • कोई UNION, UNION ALL नहीं
  • कोई सबक्वेरी नहीं (WHERE/SELECT सूची में)
  • कोई नॉन-अपडेटेबल व्यू रेफरेंस नहीं
  • सभी कॉलम बेस टेबल के सीधे कॉलम हैं (अभिव्यक्ति नहीं)

नॉन-अपडेटेबल व्यू

यदि उपरोक्त शर्तें पूरी नहीं होतीं, तो व्यू केवल पढ़ने योग्य होता है और DELETE/UPDATE की अनुमति नहीं देता।

WITH CHECK OPTION

CREATE VIEW view_name AS 
SELECT * FROM table WHERE condition
WITH CHECK OPTION;

यह सुनिश्चित करता है कि INSERT/UPDATE केवल उन पंक्तियों को प्रभावित करे जो व्यू की WHERE शर्त को पूरा करती हैं।

  1. - MySQL में RAND() और LIMIT 1 से रैंडम पंक्ति कैसे चुनें?

    MySQL RAND(): रैंडम पंक्ति प्राप्त करना ORDER BY RAND() के साथ LIMIT 1 का उपयोग करके टेबल से एक रैंडम पंक्ति प्राप्त कर सकते हैं। उदाहरण: रैंडम कोट प्राप्त करें टेबल बनाएं: CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(50), Quote TEXT ); INSERT INTO

  1. - MySQL में IN() क्लॉज़ के साथ एक क्वेरी में रिकॉर्ड कैसे डिलीट करें?

    MySQL में एक ही क्वेरी में एकाधिक विशिष्ट रिकॉर्ड डिलीट करने के लिए, DELETE स्टेटमेंट के साथ IN() ऑपरेटर का उपयोग करें। यह एकाधिक DELETE स्टेटमेंट चलाने से अधिक कुशल और पठनीय है। उदाहरण: विशिष्ट StudentId वाले रिकॉर्ड डिलीट करना डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1922 ( StudentI

  1. - MySQL में विशिष्ट पंक्ति प्राप्त करना

    WHERE, ORDER BY और LIMIT से विशिष्ट पंक्ति चुनें टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1972 ( Section char(1), StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTable1972 values(D,Chris); ... क्वेरी: C से बड़े सेक्शन को क्रमबद्ध करके पहले 2