SQLite, SQL मानक ALTER TABLE
. के सीमित उपसमुच्चय का समर्थन करता है बयान।
SQLite में, ALTER TABLE
कमांड उपयोगकर्ता को किसी तालिका का नाम बदलने या मौजूदा तालिका में एक नया कॉलम जोड़ने की अनुमति देता है।
एक कॉलम जोड़ें
ADD COLUMN
सिंटैक्स का उपयोग मौजूदा तालिका में एक नया कॉलम जोड़ने के लिए किया जाता है।
आइए कलाकारों . में एक कॉलम जोड़ें तालिका:
ALTER TABLE Artists ADD COLUMN Bio TEXT;
और फिर .schema
. के साथ तालिका की जांच करें आदेश:
sqlite> .schema Artists CREATE TABLE Artists( ArtistId INTEGER PRIMARY KEY, ArtistName TEXT NOT NULL , Bio TEXT);
ADD COLUMN
. का उपयोग करते समय निम्नलिखित प्रतिबंध लागू होते हैं SQLite में सिंटैक्स:
- कॉलम में
PRIMARY KEY
नहीं हो सकती है याUNIQUE
बाधा। - कॉलम का डिफ़ॉल्ट मान
CURRENT_TIME
. नहीं हो सकता है ,CURRENT_DATE
,CURRENT_TIMESTAMP
, या कोष्ठक में व्यंजक। - यदि एक
NOT NULL
बाधा निर्दिष्ट है, तो कॉलम मेंNULL
. के अलावा एक डिफ़ॉल्ट मान होना चाहिए । - यदि विदेशी कुंजी बाधाएं सक्षम हैं और एक
REFERENCES
वाला कॉलम है क्लॉज जोड़ा गया है, कॉलम में NULL . का डिफ़ॉल्ट मान होना चाहिए ।
तालिका का नाम बदलें
RENAME TO
सिंटैक्स आपको किसी तालिका का नाम बदलने की अनुमति देता है।
आइए हमारी एक टेबल का नाम बदलें:
ALTER TABLE Albums RENAME TO Albums1;
और इसे .tables
. से जांचें आदेश:
sqlite> .tables Albums1 Artists
अब, आगे के किसी भी ऑपरेशन के लिए टेबल के नए नाम का उपयोग करना होगा। तो हम इस तरह से डेटा का चयन कर सकते हैं:
SELECT AlbumName, Year FROM Artists AS a INNER JOIN Albums1 AS r ON a.ArtistId = r.ArtistId WHERE a.ArtistName = 'Joe Satriani';
AlbumName Year -------------------- -------------------------------------------------- Surfing with the Ali 1987 Flying in a Blue Dre 1989 Black Swans and Worm 2010
कॉलम अपडेट करना या छोड़ना
SQLite DROP COLUMN
जैसे क्लॉज का समर्थन नहीं करता है , ALTER COLUMN
, और ADD CONSTRAINT
, जो SQL मानक का हिस्सा हैं।
हालांकि, SQLite के साथ इन चीजों को करने के अन्य तरीके भी हैं।
एक कॉलम बदलें
मान लें कि हम
वर्ष
. का नाम बदलना चाहते हैं
रिलीज़ दिनांक
. के लिए कॉलम . साथ ही, हम NOT NULL
को हटाना चाहते हैं प्रतिबंध।
ऐसा करने के लिए, आप एक नई तालिका (नई कॉलम परिभाषा के साथ) बना सकते हैं, पुरानी तालिका के डेटा के साथ तालिका को पॉप्युलेट कर सकते हैं, फिर एक बार पूर्ण होने पर, पुरानी तालिका को हटा सकते हैं और मूल नाम को दर्शाने के लिए नए का नाम बदल सकते हैं।पी>
नई तालिका बनाएं
सबसे पहले, नई तालिका बनाएं (सूचना ReleaseDate
Year
. के बजाय )।
CREATE TABLE Albums( AlbumId INTEGER PRIMARY KEY, AlbumName TEXT NOT NULL, ReleaseDate TEXT, ArtistId INTEGER NOT NULL, FOREIGN KEY(ArtistId) REFERENCES Artists(ArtistId) );
तो अब हमारे पास हमारे डेटाबेस में निम्नलिखित टेबल हैं:
sqlite> .tables Albums Albums1 Artists
डेटा डालें
फिर पुरानी तालिका से डेटा डालें।
INSERT
का उपयोग करें कथन जो पुरानी तालिका से डेटा का चयन करता है और उसे नई तालिका में सम्मिलित करता है। इस तरह:
INSERT INTO Albums (AlbumId, AlbumName, ReleaseDate, ArtistId) SELECT AlbumId, AlbumName, Year, ArtistId FROM Albums1;
सत्यापित करें कि डेटा नई तालिका में डाला गया था:
sqlite> SELECT * FROM Albums; AlbumId AlbumName ReleaseDate ArtistId -------- ------------------------------- ----------- ---------- 1 Killers 1981 7 2 Powerslave 1984 7 3 Surfing with the Alien 1987 1 4 Heavy as a Really Heavy Thing 1995 11 5 Yummy Yummy 1994 17 6 Out of the Loop 2007 6 7 Suck on This 1989 13 8 Pork Soda 1993 13 9 Sailing the Seas of Cheese 1991 13 10 Flying in a Blue Dream 1989 1 11 Black Swans and Wormhole Wizard 2010 1 12 Somewhere in Time 1986 7 13 Big Red Car 1995 17
पुरानी तालिका छोड़ें
अब जब नई तालिका बनाई गई है और डेटा से भर गई है, तो हमारे पास पुरानी तालिका को हटाने, उसे संशोधित करने या उसे वैसे ही छोड़ने का विकल्प है।
आइए इसे अभी के लिए छोड़ दें, हम इसे बाद में हटा देंगे।
एक कॉलम छोड़ें
एक कॉलम ड्रॉप करने के लिए, आप एक SELECT
. से एक टेबल बना सकते हैं बयान। SELECT
. में कथन, उस कॉलम को छोड़ दें जिसे आप छोड़ना चाहते हैं - SQLite केवल वे कॉलम बनाएगा जो SELECT
में शामिल हैं बयान।
CREATE TABLE Albums2 AS SELECT AlbumId, AlbumName, ArtistId FROM Albums1;
और फिर यह देखने के लिए जांचें कि डेटा सफलतापूर्वक नई तालिका में डाला गया है:
sqlite> select * from Albums2; AlbumId AlbumName ArtistId -------- ------------------------------- ---------- 1 Killers 7 2 Powerslave 7 3 Surfing with the Alien 1 4 Heavy as a Really Heavy Thing 11 5 Yummy Yummy 17 6 Out of the Loop 6 7 Suck on This 13 8 Pork Soda 13 9 Sailing the Seas of Cheese 13 10 Flying in a Blue Dream 1 11 Black Swans and Wormhole Wizard 1 12 Somewhere in Time 7 13 Big Red Car 17
तो अब हमारे पास हमारे डेटाबेस में निम्नलिखित टेबल हैं:
sqlite> .tables Albums Albums1 Albums2 Artists