यहां हम SQL सर्वर में तीन टेबल बनाते हैं, फिर उन्हें बनाने वाली स्क्रिप्ट का विश्लेषण करते हैं। हम यह सत्यापित करने के लिए एक अन्य स्क्रिप्ट भी चलाते हैं कि तालिका बनाई गई थी।
पहले हमने एक स्क्रिप्ट से एक डेटाबेस बनाया था। हालांकि, डेटाबेस एक खाली डेटाबेस है - इसमें कोई टेबल या डेटा नहीं है।
अब हम अपने डेटाबेस के लिए कुछ टेबल बनाने जा रहे हैं।
सबसे पहले, एक पुनश्चर्या के रूप में, हमने अब तक क्या किया है:
CREATE DATABASE Music;
इसने एक खाली डेटाबेस बनाया। यदि आपने अभी तक ऐसा नहीं किया है, तो उस स्क्रिप्ट को चलाएँ।
अब निम्न स्क्रिप्ट चलाएँ:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO CREATE TABLE Genres ( GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY, Genre nvarchar(50) NOT NULL ); CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
वह स्क्रिप्ट डेटाबेस में तीन टेबल जोड़ती है। तालिकाओं को Artists
. कहा जाता है , Genres
, और Albums
।
SQL ऑपरेशंस स्टूडियो/Azure डेटा स्टूडियो में यह परिणाम है:
कोई भी जीयूआई उपकरण तालिकाओं को उसी तरह प्रदर्शित करेगा। प्रत्येक तालिका को उसके स्तंभों, साथ ही किसी भी अनुक्रमणिका, ट्रिगर, कुंजी आदि को प्रकट करने के लिए विस्तारित किया जा सकता है। आप स्तंभ का विस्तार भी कर सकते हैं नोड कॉलम और उनके डेटा प्रकारों की सूची, साथ ही निर्दिष्ट की गई किसी भी बाधा को प्रकट करने के लिए।
CREATE TABLE
का स्पष्टीकरण कथन
हमारे द्वारा अभी-अभी चलाई गई स्क्रिप्ट में तीन CREATE TABLE
शामिल हैं कथन - प्रत्येक एक अलग तालिका बनाता है। स्क्रिप्ट एक विदेशी कुंजी बाधा भी जोड़ती है, लेकिन हम इसे बाद में देखेंगे।
अभी के लिए, आइए पहले CREATE TABLE
का विश्लेषण करें हमारी लिपि में कथन:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO
यह SQL कथन Artists
नामक एक तालिका बनाता है ArtistId
called नामक तीन स्तंभों के साथ , ArtistName
, और ActiveFrom
. प्रत्येक कॉलम की परिभाषा उसके नाम से शुरू होती है, उसके बाद उसके डेटा प्रकार और उस कॉलम पर लागू होने वाली बाधाओं से शुरू होती है।
यहां अधिक विस्तृत "पंक्ति दर पंक्ति" विवरण दिया गया है:
USE Music;
- यह हिस्सा वास्तव में
CREATE TABLE
का हिस्सा नहीं है बयान। यह केवल संगीत पर स्विच करने के लिए है डेटाबेस। सर्वर पर कई डेटाबेस हो सकते हैं और हम यह सुनिश्चित करना चाहते हैं कि हम सही डेटाबेस पर टेबल बना रहे हैं। यदि आप पहले से ही सही डेटाबेस में काम कर रहे हैं तो आपको इस लाइन की आवश्यकता नहीं है। CREATE TABLE Artists (
- यह
CREATE TABLE
की शुरुआत है बयान। इसके बाद तालिका का नाम आता है (इस मामले मेंArtists
), उसके बाद तालिका परिभाषा संलग्न करने वाले कोष्ठकों में से पहला। ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
- फिर हम पहले कॉलम को परिभाषित करते हैं। इस मामले में हम इसे
ArtistId
. कहते हैं , इसके डेटा प्रकार को एक पूर्णांक के रूप में निर्दिष्ट करें (int
), इसे इंडेंटिटी कॉलम के रूप में सेट करें (यह कॉलम तालिका के लिए अद्वितीय आईडी प्रदान करेगा, और प्रत्येक पंक्ति के साथ मूल्य बढ़ेगा),(1,1)
इसका मतलब है कि मान 1 से शुरू होता है और 1 से बढ़ता है,NOT NULL
इसका मतलब है कि फ़ील्ड में शून्य मान नहीं हो सकते हैं, औरPRIMARY KEY
इस कॉलम को तालिका के लिए प्राथमिक कुंजी के रूप में सेट करता है। एक प्राथमिक कुंजी एक स्तंभ है जिसे तालिका के लिए विशिष्ट पहचानकर्ता फ़ील्ड के रूप में कॉन्फ़िगर किया गया है। ArtistName nvarchar(255) NOT NULL,
- अगले कॉलम को
ArtistName
कहा जाता है और इसका डेटा प्रकार हैnvarchar(255)
, जिसका अर्थ है कि यह चर-लंबाई वाले यूनिकोड स्ट्रिंग डेटा को स्वीकार करता है, जिसकी अधिकतम लंबाई 255 वर्ण है। हमने इस कॉलम कोNOT NULL
. पर भी सेट किया है ताकि इसमें शून्य प्रविष्टियां न हो सकें। ActiveFrom date
- अंतिम कॉलम को
ActiveFrom
कहा जाता है और हम इसेdate
. के डेटा प्रकार को स्वीकार करने के लिए सेट करते हैं );
- फिर हम
)
use का उपयोग करते हैं परिभाषा को बंद करने के लिए, और;
कथन को समाप्त करने के लिए (सेमी-कोलन एक स्टेटमेंट टर्मिनेटर है)। GO
- Transact-SQL कथनों के एक बैच के अंत का संकेत देता है। यह वास्तव में एक ट्रांजैक्ट-एसक्यूएल कथन नहीं है। यह ट्रांजैक्ट-एसक्यूएल स्टेटमेंट के बैच के अंत का संकेत देने के लिए sqlcmd और osql यूटिलिटीज और SQL सर्वर मैनेजमेंट स्टूडियो कोड एडिटर द्वारा मान्यता प्राप्त एक कमांड है।
कमांड लाइन टूल का उपयोग करते समय तालिका जानकारी कैसे प्राप्त करें
कमांड लाइन टूल का उपयोग करते समय, आपके पास साइड पैनल में बैठे अपने डेटाबेस टेबल को एक क्लिक के साथ विस्तारित होने की प्रतीक्षा में देखने की विलासिता नहीं है। लेकिन इसका मतलब यह नहीं है कि आप अपनी टेबल या अन्य डेटाबेस ऑब्जेक्ट्स के बारे में जानकारी नहीं देख सकते हैं।
कमांड लाइन टूल का उपयोग करते समय, आप उपरोक्त डेटाबेस में तालिकाओं के बारे में जानकारी प्रदर्शित करने के लिए निम्न कथन चला सकते हैं:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns;परिणाम
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES GenreId int null NO Genre nvarchar 50 NO AlbumId int null NO AlbumName nvarchar 255 NO ReleaseDate date null NO ArtistId int null NO GenreId int null NO 10 row(s) returned Executed in 1 ms
विचाराधीन तालिका संगीत . नामक डेटाबेस में है इसलिए हम पहले इस पर स्विच करते हैं।
आप WHERE
. का उपयोग करके इसे एक विशिष्ट तालिका तक सीमित भी कर सकते हैं खंड:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_name = 'Artists';परिणाम
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES 3 row(s) returned Executed in 1 ms
और भी कई फ़ील्ड हैं जिन्हें information_schema.columns
. द्वारा लौटाया जा सकता है . आप SELECT *
. का उपयोग कर सकते हैं यदि आप चाहें तो उन सभी को वापस करने के लिए।
तालिका जानकारी प्राप्त करने के लिए कमांड लाइन विधि GUI उपकरण का उपयोग करते समय भी काम करती है (आखिरकार, वे केवल SQL कथन हैं)। चाहे आप sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver, या किसी अन्य SQL सर्वर प्रबंधन टूल का उपयोग करें, आप समान डेटा प्राप्त करने के लिए समान SQL कथन दर्ज कर सकते हैं:
द GO
कमांड
आपको GO
add जोड़ने की आवश्यकता हो सकती है स्क्रिप्ट के अंत तक (उदाहरण के लिए sqlcmd का उपयोग करते समय)।
एकाधिक पंक्तियाँ
यदि आप उपरोक्त स्क्रिप्ट को कमांड लाइन टूल के साथ कई पंक्तियों में फैलाने का प्रयास करते हैं तो आपको एक त्रुटि मिल सकती है।
यदि ऐसा है, तो प्रत्येक पंक्ति के अंत में एक बैकस्लैश जोड़ने का प्रयास करें। इस तरह:
USE Music; \ SELECT column_name, data_type, character_maximum_length, is_nullable \ FROM information_schema.columns;
यदि आपको बैकस्लैश जोड़ने का विचार पसंद नहीं है, तो एक अन्य विकल्प मल्टी-लाइन स्क्रिप्ट को .sql फ़ाइल में सहेजना है, फिर इसे कमांड प्रॉम्प्ट से चलाएं।
कमांड प्रॉम्प्ट से स्क्रिप्ट चलाने की विधि आपके द्वारा उपयोग की जाने वाली कमांड लाइन उपयोगिता पर निर्भर करेगी।
Windows मशीन पर सहेजी गई फ़ाइल को चलाने के लिए sqlcmd का उपयोग करने का तरीका यहां दिया गया है:
sqlcmd -S myServer\instanceName -i C:\myScript.sql
और यहाँ मैक पर सहेजी गई फ़ाइल को चलाने के लिए sql-cli का उपयोग करने का तरीका बताया गया है:
.run /myScript.sql
स्पष्ट रूप से, पूरा पथ और फ़ाइल नाम आपके फ़ाइल नाम और जहाँ आपने इसे सहेजा है, पर निर्भर करेगा।