सारांश :इस ट्यूटोरियल में, आप सीखेंगे कि SQLite PRIMARY KEY
का उपयोग कैसे करें किसी तालिका के लिए प्राथमिक कुंजी को परिभाषित करने में बाधा।
SQLite प्राथमिक कुंजी का परिचय
प्राथमिक कुंजी एक स्तंभ या स्तंभों का समूह है जिसका उपयोग किसी तालिका में पंक्तियों की विशिष्टता की पहचान करने के लिए किया जाता है। प्रत्येक तालिका में एक और केवल एक प्राथमिक कुंजी होती है।
SQLite आपको प्राथमिक कुंजी को दो तरीकों से परिभाषित करने की अनुमति देता है:
सबसे पहले, यदि प्राथमिक कुंजी में केवल एक कॉलम है, तो आप PRIMARY KEY
का उपयोग करते हैं प्राथमिक कुंजी को निम्नानुसार परिभाषित करने के लिए स्तंभ बाधा:
CREATE TABLE table_name(
column_1 INTEGER NOT NULL PRIMARY KEY,
...
);
Code language: PHP (php)
दूसरा, यदि प्राथमिक कुंजी में दो या अधिक कॉलम होते हैं, तो आप PRIMARY KEY
का उपयोग करते हैं निम्नलिखित कथन में दिखाए गए अनुसार प्राथमिक को परिभाषित करने के लिए तालिका बाधा।
CREATE TABLE table_name(
column_1 INTEGER NOT NULL,
column_2 INTEGER NOT NULL,
...
PRIMARY KEY(column_1,column_2,...)
);
Code language: SQL (Structured Query Language) (sql)
SQL मानक में, प्राथमिक कुंजी कॉलम में NULL
नहीं होना चाहिए मूल्य। इसका मतलब है कि प्राथमिक कुंजी कॉलम में एक निहित NOT NULL
है बाधा।
हालाँकि, SQLite के वर्तमान संस्करण को पुराने संस्करण के साथ संगत बनाने के लिए, SQLite प्राथमिक कुंजी कॉलम को NULL
रखने की अनुमति देता है। मान।
SQLite प्राथमिक कुंजी और पंक्ति तालिका
जब आप WITHOUT ROWID
को निर्दिष्ट किए टेबल बनाते हैं विकल्प, SQLite rowid
नामक एक अंतर्निहित कॉलम जोड़ता है जो 64-बिट हस्ताक्षरित पूर्णांक संग्रहीत करता है। rowid
कॉलम एक कुंजी है जो विशिष्ट रूप से तालिका में पंक्तियों की पहचान करती है। टेबल्स जिनमें rowid
है कॉलम rowid
कहलाते हैं टेबल।
यदि किसी तालिका में प्राथमिक कुंजी है जिसमें एक स्तंभ है, और उस स्तंभ को INTEGER
के रूप में परिभाषित किया गया है तब यह प्राथमिक कुंजी स्तंभ एक उपनाम . बन जाता है rowid
. के लिए कॉलम।
ध्यान दें कि यदि आप एक और पूर्णांक प्रकार असाइन करते हैं जैसे BIGINT
और UNSIGNED INT
प्राथमिक कुंजी कॉलम में, यह कॉलम rowid
. के लिए उपनाम नहीं होगा कॉलम।
क्योंकि rowid
तालिका अपने डेटा को बी-पेड़ के रूप में व्यवस्थित करती है, rowid
. के डेटा को क्वेरी और सॉर्ट करती है टेबल बहुत तेज हैं। यह प्राथमिक कुंजी का उपयोग करने से तेज़ है जो rowid
. का उपनाम नहीं है ।
एक और महत्वपूर्ण नोट यह है कि यदि आप INTEGER
. के साथ एक कॉलम घोषित करते हैं टाइप करें और PRIMARY KEY DESC
खंड, यह कॉलम rowid
. के लिए उपनाम नहीं बनेगा कॉलम:
CREATE TABLE table(
pk INTEGER PRIMARY KEY DESC,
...
);
Code language: SQL (Structured Query Language) (sql)
SQLite प्राथमिक कुंजी उदाहरण बनाना
निम्नलिखित कथन countries
नाम की एक तालिका बनाता है जिसमें country_id
. है प्राथमिक कुंजी के रूप में कॉलम।
CREATE TABLE countries (
country_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
क्योंकि countries
. की प्राथमिक कुंजी तालिका में केवल एक कॉलम है, हमने PRIMARY KEY
. का उपयोग करके प्राथमिक कुंजी को परिभाषित किया है स्तंभ बाधा।
PRIMARY KEY
का उपयोग करना संभव है प्राथमिक कुंजी को परिभाषित करने के लिए तालिका बाधा जिसमें एक कॉलम होता है जैसा कि निम्नलिखित कथन में दिखाया गया है:
CREATE TABLE languages (
language_id INTEGER,
name TEXT NOT NULL,
PRIMARY KEY (language_id)
);
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
हालाँकि, उन तालिकाओं के लिए जिनमें प्राथमिक कुंजियों में एक से अधिक स्तंभ होते हैं, आपको PRIMARY KEY
का उपयोग करना चाहिए प्राथमिक कुंजी को परिभाषित करने के लिए तालिका बाधा।
निम्नलिखित कथन country_languages
बनाता है तालिका जिसकी प्राथमिक कुंजी में दो कॉलम होते हैं।
CREATE TABLE country_languages (
country_id INTEGER NOT NULL,
language_id INTEGER NOT NULL,
PRIMARY KEY (country_id, language_id),
FOREIGN KEY (country_id) REFERENCES countries (country_id)
ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (language_id) REFERENCES languages (language_id)
ON DELETE CASCADE ON UPDATE NO ACTION
);
Code language: PHP (php)
इसे आज़माएं
SQLite प्राथमिक कुंजी उदाहरण जोड़ना
अन्य डेटाबेस सिस्टम जैसे, MySQL और PostgreSQL के विपरीत, आप ALTER TABLE
का उपयोग नहीं कर सकते हैं किसी मौजूदा तालिका में प्राथमिक कुंजी जोड़ने के लिए कथन।
सीमा के आसपास काम करने के लिए आपको इन चरणों का पालन करने की आवश्यकता है:
- सबसे पहले, विदेशी कुंजी बाधा को चेक ऑफ करें।
- अगला, तालिका का नाम बदलकर अन्य तालिका नाम (old_table) कर दें
- फिर, उस तालिका की सटीक संरचना के साथ एक नई तालिका (तालिका) बनाएं जिसका नाम बदल दिया गया है।
- उसके बाद, old_table से तालिका में डेटा कॉपी करें।
- आखिरकार, विदेशी कुंजी बाधा जांच चालू करें
निम्नलिखित कथन देखें:
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE table RENAME TO old_table;
-- define the primary key constraint here
CREATE TABLE table ( ... );
INSERT INTO table SELECT * FROM old_table;
COMMIT;
PRAGMA foreign_keys=on;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
BEGIN TRANSACTION
एक नया लेनदेन शुरू करता है। यह सुनिश्चित करता है कि बाद के सभी कथन सफलतापूर्वक निष्पादित हों या कुछ भी निष्पादित न हो।
COMMIT
बयान सभी बयान देता है।
चलिए एक टेबल नाम बनाते हैं cities
प्राथमिक कुंजी के बिना।
CREATE TABLE cities (
id INTEGER NOT NULL,
name text NOT NULL
);
INSERT INTO cities (id, name)
VALUES(1, 'San Jose');
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
cities
. में प्राथमिक कुंजी जोड़ने के लिए तालिका, आप निम्न चरणों का पालन करें:
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
ALTER TABLE cities RENAME TO old_cities;
CREATE TABLE cities (
id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL
);
INSERT INTO cities
SELECT * FROM old_cities;
DROP TABLE old_cities;
COMMIT;
PRAGMA foreign_keys=on;
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
यदि आप SQLite GUI टूल का उपयोग करते हैं, तो आप तालिका की जानकारी दिखाने के लिए निम्न कथन का उपयोग कर सकते हैं।
PRAGMA table_info([cities]);
Code language: SQL (Structured Query Language) (sql)
इसे आज़माएं
इस ट्यूटोरियल में, आपने सीखा है कि SQLite PRIMARY KEY
का उपयोग करें तालिका के लिए प्राथमिक कुंजी को परिभाषित करने में बाधा।