इस आलेख में मूल SQL CREATE TABLE
शामिल है बयान जो शुरुआती अपने डेटाबेस प्रोजेक्ट के लिए बुनियादी टेबल बनाने के लिए उपयोग कर सकते हैं।
मूल सिंटैक्स
SQL में टेबल बनाने का मूल सिंटैक्स इस प्रकार है:
CREATE TABLE TableName (
Column1 datatype optional_constraints,
Column2 datatype optional_constraints,
Column3 datatype optional_constraints,
...
);
कहां:
TableName
वह नाम है जिसे आप तालिका को देना चाहते हैंColumn1
, आदि वे नाम हैं जो आप अपने कॉलम को देते हैंdatatype
वह डेटाटाइप है जिसे आप प्रत्येक कॉलम को असाइन करते हैं। अधिकांश RDBMS के लिए आवश्यक है कि आप प्रत्येक कॉलम के लिए एक डेटाटाइप असाइन करें। SQLite में, यह वैकल्पिक है।optional_constraints
बाधाओं की एक वैकल्पिक सूची है जिसे आप एक कॉलम पर लागू करते हैं।
ध्यान दें कि अधिकांश DBMS इससे अधिक जटिल सिंटैक्स का उपयोग करते हैं (अर्थात वे अधिक विकल्प प्रदान करते हैं), लेकिन यह आम तौर पर एक तालिका बनाने के लिए आवश्यक मूल सिंटैक्स है। अधिकांश शुरुआती इस सिंटैक्स के साथ शुरू करते हैं, फिर जैसे-जैसे वे आगे बढ़ते हैं और अधिक उन्नत विकल्प सीखते हैं।
मूल उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है:
CREATE TABLE Pets
(
PetId int NOT NULL PRIMARY KEY,
PetTypeId int NOT NULL,
OwnerId int NOT NULL,
PetName varchar(60) NOT NULL,
DOB date NULL
);
ध्यान देने योग्य कुछ बिंदु यहां दिए गए हैं:
- तालिका और स्तंभ नाम किसी भी स्थिति में हो सकते हैं। उदाहरण के लिए,
PetId
. के बजाय मैं इसेpetid
कह सकता था ,petid
, याpet_id
. जब आप टेबल और उनके कॉलम नामों को क्वेरी करते हैं तो कुछ DBMS (जैसे पोस्टग्रेज़) केस-संवेदी होते हैं, जबकि अन्य नहीं होते हैं (जैसे SQL सर्वर)। - कुछ DBMS अपने डेटा प्रकारों के लिए अलग-अलग नामों का उपयोग करते हैं।
NOT NULL
एक तालिका बाधा है जो निर्दिष्ट करती है कि इस कॉलम में एक मान होना चाहिए (अर्थात इसमेंNULL
नहीं हो सकता है मान)।NULL
इसका मतलब है कि कॉलम मेंNULL
शामिल होने की अनुमति है मूल्य। कुछ DBMS (जैसे DB2)NULL
. का समर्थन नहीं करते हैं कीवर्ड, और इसलिए ऐसे डीबीएमएस के साथ काम करते समय आपको इसे छोड़ना होगा।PRIMARY KEY
तालिका में प्राथमिक कुंजी बाधा जोड़ता है। अपनी सभी टेबलों पर प्राथमिक कुंजी निर्दिष्ट करना एक अच्छा अभ्यास है।- यदि डेटाबेस में उसी नाम की तालिका पहले से मौजूद है, तो आपको एक त्रुटि मिलेगी। आपको मौजूदा तालिका को छोड़ना होगा या उसे बदलना होगा (या जो आप बना रहे हैं उसका नाम बदलना होगा)।
विदेशी कुंजियों वाली तालिका बनाएं
निम्न उदाहरण दो विदेशी कुंजियों के साथ एक तालिका बनाता है। दो तालिकाओं के बीच संबंध बनाने के लिए विदेशी कुंजियों का उपयोग किया जाता है।
CREATE TABLE Pets
(
PetId int NOT NULL PRIMARY KEY,
PetTypeId int NOT NULL REFERENCES PetTypes (PetTypeId),
OwnerId int NOT NULL REFERENCES Owners (OwnerId),
PetName varchar(60) NOT NULL,
DOB date NULL
);
REFERENCES
क्लॉज का उपयोग दो कॉलम के खिलाफ एक विदेशी कुंजी को परिभाषित करने के लिए किया जाता है। हमारे मामले में, विदेशी कुंजियाँ निम्नलिखित को लागू करती हैं:
- द
Pets.PetTypeId
कॉलमPetTypes.PetTypeId
. का संदर्भ देता है कॉलम (कोई भी मान जोPets.PetTypeId
. में जाता हैPetTypes.PetTypeId
. में कॉलम का मिलान मान होना चाहिए कॉलम)। Pets.OwnerId
कॉलमOwners.OwnerId
. का संदर्भ देता है कॉलम (कोई भी मान जोPets.OwnerId
. में जाता हैOwners.OwnerId
. में कॉलम का मिलान मान होना चाहिए कॉलम)।
ALTER TABLE
. का उपयोग करके, बाद में विदेशी कुंजियों को भी जोड़ा जा सकता है यदि आवश्यक हो तो बयान।
डिफ़ॉल्ट प्रतिबंध के साथ तालिका बनाएं
निम्न उदाहरण DEFAULT
के साथ एक तालिका बनाता है बाधा।
CREATE TABLE OrderItems
(
OrderId int NOT NULL PRIMARY KEY,
OrderItem int NOT NULL,
ProductId int NOT NULL,
Quantity int NOT NULL DEFAULT 1,
ItemPrice decimal(8,2) NOT NULL
);
टाइम स्टैम्प कॉलम के साथ एक टेबल बनाएं
आप DEFAULT
. का उपयोग कर सकते हैं जब भी कोई नई पंक्ति डाली जाती है तो कॉलम में वर्तमान दिनांक और समय को स्वचालित रूप से सम्मिलित करने के लिए बाधाएं। इसे अक्सर टाइम स्टैम्प डालने के रूप में जाना जाता है।
विभिन्न डीबीएमएस वर्तमान तिथि को वापस करने के लिए विभिन्न कार्यों का उपयोग करते हैं।
SQL सर्वर में इसे करने का एक उदाहरण यहां दिया गया है।
CREATE TABLE Users
(
UserId int NOT NULL PRIMARY KEY,
FirstName varchar(60) NOT NULL,
LastName varchar(60) NOT NULL,
DateInserted datetime DEFAULT CURRENT_TIMESTAMP
);
SQL सर्वर में, CURRENT_TIMESTAMP
GETDATE()
. के एएनएसआई समकक्ष है समारोह।
आप वैकल्पिक रूप से SYSDATETIME()
. का उपयोग कर सकते हैं उच्च परिशुद्धता समय टिकट के लिए:
CREATE TABLE Users
(
UserId int NOT NULL PRIMARY KEY,
FirstName varchar(60) NOT NULL,
LastName varchar(60) NOT NULL,
DateInserted datetime2 DEFAULT SYSDATETIME()
);
उच्च सटीकता का समर्थन करने के लिए, कॉलम का डेटा प्रकार datetime2 . होना चाहिए ।
SQL सर्वर में दिनांक/समय मानों के लिए कुछ डेटा प्रकार हैं। किसी सूची के लिए SQL सर्वर दिनांक और समय फ़ंक्शन देखें।
दिनांक और समय को वापस करने के लिए प्रत्येक DBMS के अपने कार्य होते हैं। यहां मुख्य लोगों की सूची दी गई है:
DB2 | CURRENT_DATE |
MySQL | CURRENT_DATE या NOW() |
ओरेकल | SYSDATE |
PostgreSQL | CURRENT_DATE |
एसक्यूएल सर्वर | CURRENT_TIMESTAMP , GETDATE() या SYSDATETIME() |
SQLite | datetime('now') |
यह भी देखें:
- SQL सर्वर दिनांक और समय कार्य
- SQLite दिनांक और समय कार्य
स्वचालित रूप से बढ़ते मान के साथ एक कॉलम बनाएं
कभी-कभी आपको एक कॉलम बनाने की आवश्यकता होती है जो एक नई पंक्ति डालने पर स्वचालित रूप से एक मान बढ़ाता है। उपयोग किए जा रहे डीबीएमएस के आधार पर इन्हें आम तौर पर "ऑटो-इंक्रीमेंट" या "पहचान" कॉलम के रूप में संदर्भित किया जाता है।
SQL सर्वर में, IDENTITY
का उपयोग करें तर्क:
CREATE TABLE Users
(
UserId int NOT NULL IDENTITY(1,1) PRIMARY KEY,
FirstName varchar(60) NOT NULL,
LastName varchar(60) NOT NULL,
DateInserted datetime2 DEFAULT SYSDATETIME()
);
इस मामले में, हम IDENTITY(1,1)
. का उपयोग करते हैं .
- पहला
1
बीज है। यह निर्दिष्ट करता है कि गिनती शुरू करने के लिए कौन सा मूल्य है (यानी यह तालिका में डाली गई पहली पंक्ति का मान है)। - दूसरा
1
वृद्धि है। यह लोड की गई पिछली पंक्ति के पहचान मान में जोड़ा गया वृद्धिशील मान है।
ऑटो-इंक्रीमेंटिंग कॉलम बनाने के लिए प्रत्येक DBMS का अपना कीवर्ड होता है।
- MySQL और MariaDb में,
AUTO_INCREMENT
का उपयोग करें - SQLite में, आपके पास कुछ विकल्प हैं (
AUTOINCREMENT
सहित) कीवर्ड) - PostgreSQL में,
SERIAL
use का उपयोग करें - Oracle डेटाबेस से 12c , अब आप ऑटो-इन्क्रीमेंटिंग कॉलम बनाने के लिए IDENTITY कीवर्ड का उपयोग कर सकते हैं। एक उदाहरण ऐसा दिखाई दे सकता है:
UserId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY
उन्नत विकल्प
अधिकांश DBMS आपको टेबल बनाते समय उन्नत विकल्प निर्दिष्ट करने की अनुमति देते हैं। उपलब्ध विकल्प काफी हद तक आपके DBMS पर निर्भर करेगा।
यदि आपको ऐसे विकल्पों की आवश्यकता है जो इस आलेख में निर्दिष्ट नहीं हैं, तो अपने DBMS दस्तावेज़ देखें।
कई उन्नत विकल्प GUI के माध्यम से सेट किए जा सकते हैं (आपके द्वारा अपने डेटाबेस से कनेक्ट करने के लिए उपयोग किए जाने वाले टूल के आधार पर)। आप हमेशा GUI के माध्यम से एक तालिका बना या संशोधित कर सकते हैं, फिर SQL कोड देखने के लिए इसके "स्क्रिप्ट ऐज़ क्रिएट" (या समान) विकल्प का उपयोग करें जिसे आपको ऐसी तालिका बनाने के लिए चलाने की आवश्यकता होगी। आप इस कोड को ले सकते हैं और पिछले एक की परिभाषा के आधार पर एक पूरी नई तालिका बनाने के लिए तालिका नाम, कॉलम नाम आदि बदल सकते हैं।