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

MySQL में INSERT के दौरान DATE_ADD() से मान सेट करना (बिना UPDATE)

INSERT में एक्सप्रेशन का उपयोग

MySQL में INSERT स्टेटमेंट के VALUES क्लॉज में फंक्शन कॉल और एक्सप्रेशन उपयोग किए जा सकते हैं, जिससे अलग UPDATE की आवश्यकता नहीं होती।

उदाहरण: टेबल बनाना

mysql> CREATE TABLE DemoTable816(DueDate DATETIME);
Query OK, 0 rows affected (0.45 sec)

INSERT के दौरान डेट में अंतराल जोड़ना

mysql> INSERT INTO DemoTable816 VALUES(DATE_ADD(NOW(), INTERVAL 3 MINUTE));
Query OK, 1 row affected (0.16 sec)

mysql> INSERT INTO DemoTable816 VALUES(DATE_ADD('2018-01-21 00:00:00', INTERVAL 3 HOUR));
Query OK, 1 row affected (0.52 sec)

mysql> INSERT INTO DemoTable816 VALUES(DATE_ADD('2016-11-11 12:40:00', INTERVAL 3 DAY));
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO DemoTable816 VALUES(DATE_ADD('2018-12-01 11:00:00', INTERVAL 3 MONTH));
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO DemoTable816 VALUES(DATE_ADD('2011-03-21 10:00:00', INTERVAL 3 YEAR));
Query OK, 1 row affected (0.16 sec)

परिणाम देखना

mysql> SELECT * FROM DemoTable816;
+---------------------+
| DueDate             |
+---------------------+
| 2019-08-03 13:08:43 |
| 2018-01-21 03:00:00 |
| 2016-11-14 12:40:00 |
| 2019-03-01 11:00:00 |
| 2014-03-21 10:00:00 |
+---------------------+
5 rows in set (0.00 sec)

उपयोग किए गए फंक्शन्स

फंक्शनउद्देश्य
DATE_ADD(date, INTERVAL expr unit)डेट/टाइम में अंतराल जोड़ें
DATE_SUB(date, INTERVAL expr unit)डेट/टाइम से अंतराल घटाएं
NOW()वर्तमान डेटटाइम
CURDATE()वर्तमान डेट
CURTIME()वर्तमान समय

INTERVAL यूनिट्स

INTERVAL 3 MINUTE
INTERVAL 3 HOUR
INTERVAL 3 DAY
INTERVAL 3 MONTH
INTERVAL 3 YEAR
INTERVAL 3 WEEK
INTERVAL 3 QUARTER
INTERVAL 3 SECOND
INTERVAL 3 MICROSECOND
INTERVAL '3:30' HOUR_MINUTE
INTERVAL '1 3' DAY_HOUR

अन्य INSERT-टाइम एक्सप्रेशन उदाहरण

डिफ़ॉल्ट मान के रूप में फंक्शन

CREATE TABLE Events (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    EventName VARCHAR(100),
    CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    ExpiresAt DATETIME DEFAULT (DATE_ADD(CURRENT_TIMESTAMP, INTERVAL 30 DAY))
);

गणना किए गए कॉलम (Generated Columns - MySQL 5.7+)

CREATE TABLE Orders (
    Id INT AUTO_INCREMENT PRIMARY KEY,
    Price DECIMAL(10,2),
    Qty INT,
    Total DECIMAL(10,2) AS (Price * Qty) STORED
);

INSERT ... SELECT में एक्सप्रेशन

INSERT INTO ArchiveTable (Id, Data, ArchivedAt)
SELECT Id, Data, NOW() FROM ActiveTable WHERE Status = 'Done';

लाभ

  • एटॉमिक: गणना और इन्सर्ट एक ही ऑपरेशन में
  • प्रदर्शन: अलग UPDATE क्वेरी की आवश्यकता नहीं
  • संगति: रेस कंडीशन का कोई जोखिम नहीं
  • ट्रिगर अल्टरनेटिव: सरल गणनाओं के लिए ट्रिगर से बचें

नोट

सबक्वेरी और फंक्शन कॉल VALUES में अनुमत हैं, लेकिन कुछ प्रतिबंध लागू होते हैं (उदाहरण के लिए, उसी टेबल से SELECT नहीं जिस पर इन्सर्ट कर रहे हैं, जब तक कि यह सबक्वेरी में न हो)।

  1. - MySQL में कॉलम मान 'None' को 'N/A' से कैसे अपडेट करें?

    कई बार डेटाबेस में None जैसे स्ट्रिंग मान स्टोर हो जाते हैं जो वास्तव में NULL या अनुपलब्ध डेटा दर्शाते हैं। ऐसे मानों को अधिक सार्थक N/A (Not Available) से बदलने के लिए MySQL का UPDATE स्टेटमेंट उपयोग करें। उदाहरण: None को N/A में बदलना डेमो टेबल बनाएं और डेटा इन्सर्ट करें: mysql> CREATE TABL

  1. - MySQL में पहले तीन पंक्तियों के लिए कस्टम मान सेट करना

    ORDER BY और LIMIT से पहली N पंक्तियां अपडेट करें पहली तीन पंक्तियों के लिए एक विशिष्ट मान सेट करने के लिए ORDER BY और LIMIT 3 का उपयोग करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1968 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20) ); Query OK, 0 rows affected (0.0

  1. - MySQL में प्रारंभिक मान और ऑटो इन्क्रीमेंट कैसे सेट करें?

    AUTO_INCREMENT विशेषता का उपयोग नई रो के लिए एक अद्वितीय पहचानकर्ता उत्पन्न करने के लिए किया जाता है। यदि किसी कॉलम को NOT NULL घोषित किया गया है, तो उस कॉलम को NULL असाइन करना संभव है ताकि संख्याओं का अनुक्रम उत्पन्न हो सके। जब किसी AUTO_INCREMENT कॉलम में कोई मान डाला जाता है, तो कॉलम उस मान पर