Database
 sql >> डेटाबेस >  >> RDS >> Database

एसक्यूएल शुरुआती के लिए तालिका बनाएं

इस आलेख में मूल 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 कोड देखने के लिए इसके "स्क्रिप्ट ऐज़ क्रिएट" (या समान) विकल्प का उपयोग करें जिसे आपको ऐसी तालिका बनाने के लिए चलाने की आवश्यकता होगी। आप इस कोड को ले सकते हैं और पिछले एक की परिभाषा के आधार पर एक पूरी नई तालिका बनाने के लिए तालिका नाम, कॉलम नाम आदि बदल सकते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टी-एसक्यूएल प्रिंट स्टेटमेंट का अवलोकन

  2. SQL में बाधा की जाँच करें

  3. स्प्रेडशीट बनाम डेटाबेस:क्या यह स्विच करने का समय है? भाग 2

  4. शत शत! डेटा मॉडल में पुनरावर्ती ईवेंट प्रबंधित करना

  5. एसक्यूएल विदेशी कुंजी