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

PostgreSQL में डेटाबेस और टेबल कैसे बनाएं और डिलीट करें


परिचय

PostgreSQL और अन्य रिलेशनल डेटाबेस मैनेजमेंट सिस्टम डेटाबेस . का उपयोग करते हैं और टेबल अपने डेटा को संरचित और व्यवस्थित करने के लिए। हम जल्दी से उन दो शब्दों की परिभाषा की समीक्षा कर सकते हैं:

  • डेटाबेस: संरचनाओं और डेटा के विभिन्न सेटों को एक दूसरे से अलग करें
  • टेबल: डेटा संरचना को परिभाषित करें और डेटाबेस के भीतर वास्तविक डेटा मानों को संग्रहीत करें

PostgreSQL में, डेटाबेस और टेबल के बीच एक मध्यस्थ वस्तु भी होती है जिसे स्कीमा . कहा जाता है :

  • स्कीमा: डेटाबेस के भीतर एक नाम स्थान जिसमें टेबल, इंडेक्स, व्यू और अन्य आइटम होते हैं।

यह मार्गदर्शिका सीधे PostgreSQL की स्कीमा की अवधारणा से संबंधित नहीं है, लेकिन यह जानना अच्छा है कि यह वहां है।

इसके बजाय, हम इस बात पर ध्यान केंद्रित करेंगे कि PostgreSQL डेटाबेस और तालिकाओं को कैसे बनाया और नष्ट किया जाए। उदाहरण मुख्य रूप से SQL का उपयोग करेंगे, लेकिन अंत में, हम आपको दिखाएंगे कि कमांड लाइन का उपयोग करके इनमें से कुछ कार्यों को कैसे किया जाए। ये विकल्प मानक PostgreSQL स्थापना में शामिल टूल का उपयोग करते हैं जो कि उपलब्ध हैं यदि आपके पास PostgreSQL होस्ट तक व्यवस्थापकीय पहुंच है।

इस गाइड में शामिल कुछ कथन, विशेष रूप से PostgreSQL CREATE TABLE बयान में, कई अतिरिक्त विकल्प हैं जो इस लेख के दायरे से बाहर थे। यदि आप अतिरिक्त जानकारी चाहते हैं, तो आधिकारिक पोस्टग्रेएसक्यूएल दस्तावेज़ों की जाँच करके अधिक जानकारी प्राप्त करें।



आवश्यकताएं

इस गाइड का पालन करने के लिए, आपको psql का उपयोग करके प्रशासनिक विशेषाधिकार वाले उपयोगकर्ता के साथ PostgreSQL इंस्टेंस में लॉग इन करना होगा। कमांड लाइन क्लाइंट। आपका PostgreSQL इंस्टेंस स्थानीय रूप से, दूरस्थ रूप से, या प्रदाता द्वारा प्रावधानित किया जा सकता है।

विशेष रूप से, आपके PostgreSQL उपयोगकर्ता को CREATE DB . की आवश्यकता होगी विशेषाधिकार प्राप्त करें या एक Superuser बनें , जिसे आप \du . से जांच सकते हैं psql . में मेटा-कमांड :

\du
                                   List of roles Role name |                         Attributes                         | Member of-----------+------------------------------------------------------------+----------- postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

postgres सुपरयूज़र, जो कि इंस्टॉलेशन पर स्वचालित रूप से बनाया जाता है, के पास आवश्यक विशेषाधिकार हैं, लेकिन आप किसी भी उपयोगकर्ता का उपयोग Create DB के साथ कर सकते हैं। विशेषाधिकार।



एक नया डेटाबेस बनाएं

एक बार जब आप psql . का उपयोग करके अपने PostgreSQL इंस्टेंस से जुड़ जाते हैं या कोई अन्य SQL क्लाइंट, आप SQL का उपयोग करके एक डेटाबेस बना सकते हैं।

डेटाबेस बनाने का मूल सिंटैक्स है:

CREATE DATABASE db_name;

यह db_name . नामक एक डेटाबेस तैयार करेगा वर्तमान सर्वर पर वर्तमान उपयोगकर्ता के साथ डिफ़ॉल्ट डेटाबेस सेटिंग्स का उपयोग करके नए डेटाबेस के स्वामी के रूप में सेट किया गया है। आप डिफ़ॉल्ट template1 . के गुण देख सकते हैं निम्नलिखित psql का उपयोग कर टेम्पलेट मेटा-कमांड:

\l template1
                                  List of databases   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges-----------+----------+----------+-------------+-------------+----------------------- template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +           |          |          |             |             | postgres=CTc/postgres(1 row)

अपने डेटाबेस के निर्माण के तरीके को बदलने के लिए आप अतिरिक्त पैरामीटर जोड़ सकते हैं। ये कुछ सामान्य विकल्प हैं:

  • एन्कोडिंग: डेटाबेस के लिए वर्ण एन्कोडिंग सेट करता है।
  • LC_COLLATE: संयोजन सेट करता है , या सॉर्ट करें, डेटाबेस के लिए ऑर्डर करें। यह एक स्थानीयकरण विकल्प है जो यह निर्धारित करता है कि ऑर्डर किए जाने पर आइटम कैसे व्यवस्थित होते हैं।
  • LC_CTYPE: नए डेटाबेस के लिए वर्ण वर्गीकरण सेट करता है। यह एक स्थानीयकरण विकल्प है जो प्रभावित करता है कि कौन से वर्ण अपरकेस, लोअरकेस और अंक माने जाते हैं।

ये यह सुनिश्चित करने में मदद कर सकते हैं कि डेटाबेस डेटा को उन स्वरूपों में संग्रहीत कर सकता है जिन्हें आप समर्थन देने की योजना बना रहे हैं और आपकी परियोजना की स्थानीयकरण प्राथमिकताओं के साथ।

उदाहरण के लिए, यह सुनिश्चित करने के लिए कि आपका डेटाबेस यूनिकोड समर्थन के साथ बनाया गया है और अमेरिकी अंग्रेजी स्थानीयकरण का उपयोग करने के लिए सर्वर के अपने लोकेल को ओवरराइड करने के लिए (ये सभी template1 में मानों से मेल खाते हैं। ऊपर दिखाया गया है, इसलिए वास्तव में कोई परिवर्तन नहीं होगा), आप टाइप कर सकते हैं:

CREATE DATABASE db_name  ENCODING 'UTF8'  LC_COLLATE 'en_US.UTF-8'  LC_CTYPE 'en_US.UTF-8';

इस गाइड में उदाहरणों के साथ अनुसरण करने के लिए, school . नामक एक डेटाबेस बनाएं अपने इंस्टेंस की डिफ़ॉल्ट स्थानीय सेटिंग और UTF8 वर्ण एन्कोडिंग का उपयोग करके:

CREATE DATABASE school ENCODING 'UTF8';

यह आपके द्वारा प्रदान किए गए विनिर्देशों का उपयोग करके आपका नया डेटाबेस तैयार करेगा।



मौजूदा डेटाबेस सूचीबद्ध करें

यह निर्धारित करने के लिए कि आपके सर्वर या क्लस्टर पर वर्तमान में कौन से डेटाबेस उपलब्ध हैं, आप निम्न SQL कथन का उपयोग कर सकते हैं:

SELECT datname FROM pg_database;

यह वर्तमान में परिवेश में परिभाषित प्रत्येक डेटाबेस को सूचीबद्ध करेगा:

  datname----------- _dodb template1 template0 defaultdb school(5 rows)

जैसा कि पहले उल्लेख किया गया है, यदि आप psql . का उपयोग करके जुड़े हुए हैं क्लाइंट, आप यह जानकारी भी प्राप्त कर सकते हैं \l मेटा-कमांड:

\l

यह उपलब्ध डेटाबेस नामों को उनके मालिकों, एन्कोडिंग, स्थानीय सेटिंग्स और विशेषाधिकारों के साथ दिखाएगा:

                                  List of databases   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges-----------+----------+----------+-------------+-------------+----------------------- _dodb     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | defaultdb | doadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | school    | doadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +           |          |          |             |             | postgres=CTc/postgres template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +           |          |          |             |             | postgres=CTc/postgres(5 rows)

school हमारे द्वारा बनाया गया डेटाबेस सिस्टम पर अन्य डेटाबेस के बीच प्रदर्शित होता है। अपने सर्वर या क्लस्टर में डेटाबेस का अवलोकन प्राप्त करने का यह एक अच्छा तरीका है।



डेटाबेस में टेबल बनाएं

एक या अधिक डेटाबेस बनाने के बाद, आप अपने डेटा को संग्रहीत करने के लिए तालिकाओं को परिभाषित करना शुरू कर सकते हैं। तालिकाओं में एक नाम और एक परिभाषित स्कीमा होता है जो प्रत्येक रिकॉर्ड में शामिल फ़ील्ड और डेटा प्रकारों को निर्धारित करता है।


PostgreSQL CREATE TABLE वाक्य रचना

आप CREATE TABLE . का उपयोग करके तालिकाएं बना सकते हैं बयान। कमांड के लिए एक सरल बुनियादी सिंटैक्स निम्न जैसा दिखता है:

CREATE TABLE table_name (    column_name TYPE [column_constraint],    [table_constraint,]);

उपरोक्त सिंटैक्स के घटकों में निम्नलिखित शामिल हैं:

  • CREATE TABLE table_name :मूल निर्माण विवरण जो संकेत देता है कि आप एक तालिका को परिभाषित करना चाहते हैं। table_name प्लेसहोल्डर को उस तालिका के नाम से बदल दिया जाना चाहिए जिसका आप उपयोग करना चाहते हैं।
  • column_name TYPE :तालिका के भीतर एक मूल स्तंभ को परिभाषित करता है। column_name प्लेसहोल्डर को उस नाम से बदल दिया जाना चाहिए जिसे आप अपने कॉलम के लिए उपयोग करना चाहते हैं। TYPE कॉलम के लिए PostgreSQL डेटा प्रकार निर्दिष्ट करता है। तालिका में संग्रहीत डेटा को स्तंभ संरचना और स्तंभ डेटा प्रकारों के अनुरूप होना चाहिए जिन्हें स्वीकार किया जाना है।
  • column_constraint :कॉलम में संग्रहीत किए जा सकने वाले डेटा पर और प्रतिबंध जोड़ने के लिए कॉलम की कमी वैकल्पिक प्रतिबंध हैं। उदाहरण के लिए, आपको आवश्यकता हो सकती है कि प्रविष्टियाँ शून्य, अद्वितीय या धनात्मक पूर्णांक न हों।
  • table_constraints :टेबल की कमी कॉलम की कमी के समान होती है लेकिन इसमें कई कॉलम की बातचीत शामिल होती है। उदाहरण के लिए, आपके पास एक टेबल बाधा हो सकती है जो यह जांचती है कि DATE_OF_BIRTH DATE_OF_DEATH . से पहले का है एक टेबल में।


IF NOT EXISTS के साथ सशर्त रूप से टेबल बनाएं खंड

डिफ़ॉल्ट रूप से, यदि आप PostgreSQL में एक तालिका बनाने का प्रयास करते हैं जो पहले से ही डेटाबेस में मौजूद है, तो एक त्रुटि होगी। उन मामलों में इस समस्या को हल करने के लिए जहां आप एक तालिका बनाना चाहते हैं यदि यह मौजूद नहीं है, लेकिन यदि यह पहले से मौजूद है तो जारी रखें, आप IF NOT EXISTS का उपयोग कर सकते हैं खंड। IF NOT EXISTS वैकल्पिक क्वालीफायर जो पोस्टग्रेएसक्यूएल को बताता है कि यदि डेटाबेस पहले से मौजूद है तो स्टेटमेंट को अनदेखा कर दें।

IF NOT EXISTS का उपयोग करने के लिए क्लॉज, इसे CREATE TABLE . के बाद कमांड में डालें वाक्य रचना और तालिका नाम से पहले:

CREATE TABLE IF NOT EXISTS table_name (    column_name TYPE [column_constraint],    [table_constraint,]);

यह संस्करण तालिका बनाने का प्रयास करेगा। यदि उस नाम वाली तालिका पहले से निर्दिष्ट डेटाबेस में मौजूद है, तो PostgreSQL एक चेतावनी देगा जो यह दर्शाता है कि त्रुटि के साथ विफल होने के बजाय तालिका का नाम पहले ही लिया जा चुका है।



PostgreSQL में टेबल कैसे बनाएं

उपरोक्त सिंटैक्स बुनियादी तालिकाएँ बनाने के लिए पर्याप्त है। उदाहरण के तौर पर, हम अपने school . में दो टेबल बनाएंगे डेटाबेस। एक टेबल को supplies कहा जाएगा और दूसरे को teachers . कहा जाएगा :

supplies . में तालिका, हम निम्नलिखित फ़ील्ड रखना चाहते हैं:

  • आईडी: प्रत्येक प्रकार की स्कूल आपूर्ति के लिए एक अद्वितीय आईडी।
  • नाम: एक विशिष्ट स्कूल आइटम का नाम।
  • विवरण: आइटम का संक्षिप्त विवरण।
  • निर्माता: आइटम निर्माता का नाम।
  • रंग: आइटम का रंग।
  • इन्वेंट्री: एक निश्चित प्रकार की स्कूल आपूर्ति के लिए हमारे पास मौजूद वस्तुओं की संख्या। यह कभी भी 0 से कम नहीं होना चाहिए।

हम supplies बना सकते हैं निम्न SQL का उपयोग करके उपरोक्त गुणों वाली तालिका।

सबसे पहले, school में बदलें डेटाबेस आपने psql . के साथ बनाया है टाइप करके:

\c school

यह उस डेटाबेस को बदल देगा जिसे हमारे भविष्य के आदेश लक्षित करेंगे। डेटाबेस को प्रतिबिंबित करने के लिए आपका संकेत बदलना चाहिए।

इसके बाद, supplies बनाएं निम्नलिखित कथन के साथ तालिका:

CREATE TABLE supplies (  id INT PRIMARY KEY,  name VARCHAR,  description VARCHAR,  manufacturer VARCHAR,  color VARCHAR,  inventory int CHECK (inventory > 0));

यह supplies बनाएगा school . के भीतर तालिका डेटाबेस। PRIMARY KEY स्तंभ बाधा एक विशेष बाधा है जिसका उपयोग उन स्तंभों को इंगित करने के लिए किया जाता है जो तालिका के भीतर विशिष्ट रूप से रिकॉर्ड की पहचान कर सकते हैं। जैसे, बाधा निर्दिष्ट करती है कि स्तंभ शून्य नहीं हो सकता है और अद्वितीय होना चाहिए। PostgreSQL क्वेरी गति बढ़ाने के लिए प्राथमिक कुंजी कॉलम के लिए अनुक्रमणिका बनाता है।

सत्यापित करें कि नई तालिका टाइप करके मौजूद है:

\dt
          List of relations Schema |   Name   | Type  |  Owner  --------+----------+-------+--------- public | supplies | table | doadmin(1 row)

सत्यापित करें कि स्कीमा टाइप करके इच्छित डिज़ाइन को दर्शाता है:

\d supplies
                      Table "public.supplies"    Column    |       Type        | Collation | Nullable | Default--------------+-------------------+-----------+----------+--------- id           | integer           |           | not null | name         | character varying |           |          | description  | character varying |           |          | manufacturer | character varying |           |          | color        | character varying |           |          | inventory    | integer           |           |          |Indexes:    "supplies_pkey" PRIMARY KEY, btree (id)Check constraints:    "supplies_inventory_check" CHECK (inventory > 0)

हम अपने द्वारा निर्दिष्ट प्रत्येक कॉलम और डेटा प्रकार देख सकते हैं। कॉलम की बाधा जिसे हमने inventory . के लिए परिभाषित किया है कॉलम अंत में सूचीबद्ध है।

इसके बाद, हम एक teachers बनाएंगे टेबल। इस तालिका में निम्नलिखित कॉलम मौजूद होने चाहिए:

  • कर्मचारी आईडी :एक विशिष्ट कर्मचारी पहचान संख्या।
  • प्रथम नाम :शिक्षक का पहला नाम।
  • उपनाम :शिक्षक का उपनाम।
  • विषय :वह विषय जिसे पढ़ाने के लिए शिक्षक को काम पर रखा जाता है।
  • ग्रेड स्तर :छात्रों का ग्रेड स्तर जिसे पढ़ाने के लिए पढ़ाया जाता है।

teachers निम्न SQL के साथ उपरोक्त स्कीमा के साथ तालिका:

CREATE TABLE teachers (  id INT PRIMARY KEY,  first_name VARCHAR,  last_name VARCHAR,  subject VARCHAR,  grade_level int);


प्राथमिक कुंजियों और विदेशी कुंजियों के साथ तालिकाएं कैसे बनाएं

आप हमारे कुछ अन्य पोस्टग्रेएसक्यूएल गाइड में प्राथमिक और विदेशी कुंजी के साथ टेबल बनाने के बारे में जानकारी पा सकते हैं। प्राथमिक कुंजियाँ और विदेशी कुंजियाँ PostgreSQL के भीतर दोनों प्रकार की डेटाबेस बाधाएँ हैं।

प्राथमिक कुंजी एक विशेष स्तंभ या स्तंभ है जो एक ही तालिका के भीतर पंक्तियों में अद्वितीय होने की गारंटी देता है। सभी प्राथमिक कुंजियों का उपयोग विशिष्ट पंक्ति को विशिष्ट रूप से पहचानने के लिए किया जा सकता है। प्राथमिक कुंजियाँ न केवल यह सुनिश्चित करती हैं कि प्रत्येक पंक्ति में प्राथमिक कुंजी स्तंभों के लिए एक अद्वितीय मान है, वे यह भी सुनिश्चित करती हैं कि किसी भी पंक्ति में NULL न हो उस कॉलम के लिए मान। अक्सर, PostgreSQL में प्राथमिक कुंजी स्वचालित रूप से असाइन की गई वृद्धिशील प्राथमिक कुंजी निर्दिष्ट करने के लिए निम्न प्रारूप का उपयोग करती है:id SERIAL PRIMARY KEY

विदेशी कुंजियाँ यह सुनिश्चित करने का एक तरीका है कि एक तालिका में एक स्तंभ या स्तंभ किसी अन्य तालिका में निहित मानों से मेल खाता है। यह तालिकाओं के बीच संदर्भात्मक अखंडता सुनिश्चित करने में मदद करता है।




PostgreSQL में टेबल कैसे देखें

आप जिस जानकारी की तलाश कर रहे हैं उसके आधार पर आप PostgreSQL में कुछ अलग-अलग तरीकों से तालिकाओं को सूचीबद्ध कर सकते हैं।

यदि आप देखना चाहते हैं कि आपके डेटाबेस में कौन-सी तालिकाएँ उपलब्ध हैं, तो आप \dt का उपयोग कर सकते हैं psql . के साथ मेटा-कमांड शामिल है क्लाइंट सभी तालिकाओं को सूचीबद्ध करने के लिए, जैसा कि हमने ऊपर दिखाया:

\dt
          List of relations Schema |   Name   | Type  |  Owner--------+----------+-------+--------- public | supplies | table | doadmin public | teachers | table | doadmin(2 rows)

आप यह भी जांच सकते हैं कि तालिका के लिए स्कीमा आपके विनिर्देशों से मेल खाती है:

\d teachers
                     Table "public.teachers"   Column    |       Type        | Collation | Nullable | Default-------------+-------------------+-----------+----------+--------- id          | integer           |           | not null | first_name  | character varying |           |          | last_name   | character varying |           |          | subject     | character varying |           |          | grade_level | integer           |           |          |Indexes:    "teachers_pkey" PRIMARY KEY, btree (id)

teachers तालिका हमारी परिभाषा से मेल खाती प्रतीत होती है।



टेबल बदलें

यदि आपको PostgreSQL में किसी मौजूदा तालिका के स्कीमा को बदलने की आवश्यकता है, तो आप ALTER TABLE का उपयोग कर सकते हैं आज्ञा। ALTER TABLE कमांड CREATE TABLE . से काफी मिलता-जुलता है कमांड, लेकिन मौजूदा टेबल पर काम करता है।


टेबल सिंटैक्स बदलें

PostgreSQL में तालिकाओं को संशोधित करने का मूल सिंटैक्स इस तरह दिखता है:

ALTER TABLE <table_name> <change_command> <change_parameters>

<change_command> यह इंगित करता है कि आप किस प्रकार का परिवर्तन करना चाहते हैं, चाहे इसमें टेबल पर अलग-अलग विकल्प सेट करना, कॉलम जोड़ना या हटाना, या प्रकार या बाधाओं को बदलना शामिल हो। <change_parameters> कमांड के हिस्से में कोई भी अतिरिक्त जानकारी होती है जिसे PostgreSQL को परिवर्तन को पूरा करने की आवश्यकता होती है।



टेबल में कॉलम जोड़ना

आप PostgreSQL तालिका में ADD COLUMN . के साथ एक कॉलम जोड़ सकते हैं आदेश बदलें। परिवर्तन पैरामीटर में कॉलम नाम, प्रकार और विकल्प शामिल होंगे, जैसे आप उन्हें CREATE TABLE में निर्दिष्ट करेंगे। आदेश।

उदाहरण के लिए, missing_column . नामक कॉलम जोड़ने के लिए text . का some_table called नामक तालिका में टाइप करें , आप टाइप करेंगे:

ALTER TABLE some_table ADD COLUMN missing_column text;


टेबल से कॉलम हटाना

यदि, इसके बजाय, आप किसी मौजूदा कॉलम को हटाना चाहते हैं, तो आप DROP COLUMN का उपयोग कर सकते हैं इसके बजाय आदेश। आपको उस कॉलम का नाम निर्दिष्ट करना होगा जिसे आप परिवर्तन पैरामीटर के रूप में छोड़ना चाहते हैं:

ALTER TABLE some_table DROP COLUMN useless_column;


एक कॉलम का डेटा प्रकार बदलना

किसी विशिष्ट कॉलम के लिए PostgreSQL द्वारा उपयोग किए जाने वाले डेटा प्रकार को बदलने के लिए, आप ALTER COLUMN का उपयोग कर सकते हैं SET DATA TYPE . के साथ कमांड बदलें कॉलम कमांड। पैरामीटर में कॉलम का नाम, उसका नया प्रकार और एक वैकल्पिक USING . शामिल है यह निर्दिष्ट करने के लिए कि पुराने प्रकार को नए प्रकार में कैसे परिवर्तित किया जाना चाहिए।

उदाहरण के लिए, id . का मान सेट करने के लिए resident . में कॉलम एक int . के लिए तालिका एक स्पष्ट कलाकार का उपयोग करके, हम निम्नलिखित टाइप कर सकते हैं:

ALTER TABLE resident ALTER COLUMN id SET DATA TYPE int USING id::int;


अन्य तालिका परिवर्तन

कई अन्य प्रकार के परिवर्तन ALTER TABLE . के साथ प्राप्त किए जा सकते हैं आज्ञा। उपलब्ध विकल्पों के बारे में अधिक जानकारी के लिए, ALTER TABLE . के लिए आधिकारिक PostgreSQL दस्तावेज़ देखें ।




ड्रॉप टेबल

यदि आप किसी तालिका को हटाना चाहते हैं, तो आप DROP TABLE . का उपयोग कर सकते हैं एसक्यूएल स्टेटमेंट। यह तालिका के साथ-साथ उसमें संग्रहीत किसी भी डेटा को हटा देगा।

मूल सिंटैक्स इस तरह दिखता है:

DROP TABLE table_name;

यदि तालिका मौजूद है तो यह तालिका को हटा देगा और यदि तालिका का नाम मौजूद नहीं है तो एक त्रुटि फेंक देगा।

यदि आप तालिका के मौजूद होने पर उसे हटाना चाहते हैं और यदि वह मौजूद नहीं है तो कुछ भी नहीं करना चाहते हैं, तो आप IF EXISTS शामिल कर सकते हैं कथन के भीतर योग्यता:

DROP TABLE IF EXISTS table_name;

अन्य तालिकाओं या वस्तुओं पर निर्भरता वाली तालिकाएँ डिफ़ॉल्ट रूप से हटाई नहीं जा सकतीं, जबकि वे निर्भरताएँ मौजूद हैं। त्रुटि से बचने के लिए, आप वैकल्पिक रूप से CASCADE . शामिल कर सकते हैं पैरामीटर, जो स्वचालित रूप से तालिका के साथ किसी भी निर्भरता को छोड़ देता है:

DROP TABLE table_name CASCADE;

अगर किसी टेबल में विदेशी कुंजी है बाधा, जो उस तालिका को संदर्भित करती है जिसे आप हटा रहे हैं, वह बाधा स्वतः हटा दी जाएगी।

supplies हटाएं तालिका जिसे हमने पहले टाइप करके बनाया था:

DROP TABLE supplies;

हम teachers को रखेंगे डेटाबेस यह प्रदर्शित करने के लिए कि डेटाबेस को हटाने का कथन टेबल जैसी सभी चाइल्ड ऑब्जेक्ट्स को भी हटा देता है।



डेटाबेस ड्रॉप करें

DROP DATABASE कथन PostgreSQL को निर्दिष्ट डेटाबेस को हटाने के लिए कहता है। मूल सिंटैक्स इस तरह दिखता है:

DROP DATABASE database_name;

database_name बदलें उस डेटाबेस के नाम के साथ प्लेसहोल्डर जिसे आप हटाना चाहते हैं। यदि यह पाया जाता है तो यह डेटाबेस को हटा देगा। यदि डेटाबेस नहीं मिल सकता है, तो एक त्रुटि होगी:

DROP DATABASE some_database;
ERROR:  database "some_database" does not exist

यदि आप डेटाबेस के मौजूद होने पर उसे हटाना चाहते हैं और अन्यथा कुछ नहीं करते हैं, तो वैकल्पिक IF EXISTS शामिल करें विकल्प:

DROP DATABASE IF EXISTS some_database;
NOTICE:  database "some_database" does not exist, skippingDROP DATABASE

यह डेटाबेस को हटा देगा या अगर यह नहीं मिला तो कुछ भी नहीं करेगा।

school को हटाने के लिए डेटाबेस जिसे हमने इस गाइड में उपयोग किया है, आपके सिस्टम पर मौजूदा डेटाबेस को सूचीबद्ध करें:

\l
                                  List of databases   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges-----------+----------+----------+-------------+-------------+----------------------- _dodb     | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | defaultdb | doadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | school    | doadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +           |          |          |             |             | postgres=CTc/postgres template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +           |          |          |             |             | postgres=CTc/postgres(5 rows)

उन डेटाबेस में से एक के लिए एक नया कनेक्शन खोलें जिसे आप हटाना नहीं चाहते हैं:

\c defaultdb

नया कनेक्शन खुलने के बाद, school को हटा दें निम्नलिखित कमांड के साथ डेटाबेस:

DROP DATABASE school;

इससे school हट जाएगा teachers . के साथ डेटाबेस तालिका में परिभाषित किया गया है।

<ब्लॉकक्वॉट>

यदि आप SQL का उपयोग कर रहे हैं, तो आप यहाँ समाप्त कर सकते हैं या निष्कर्ष पर जा सकते हैं। यदि आप कमांड लाइन से डेटाबेस बनाने और हटाने के तरीके के बारे में सीखना चाहते हैं, तो अगले भाग पर जारी रखें।



डेटाबेस बनाने और हटाने के लिए एडमिनिस्ट्रेटिव कमांड लाइन टूल्स का उपयोग करना

यदि आपके पास सर्वर या क्लस्टर में शेल एक्सेस है जहां PostgreSQL स्थापित है, तो आपके पास कुछ अतिरिक्त कमांड लाइन टूल तक पहुंच हो सकती है जो डेटाबेस बनाने और हटाने में मदद कर सकते हैं। createdb और dropdb पोस्टग्रेएसक्यूएल के इंस्टाल होने पर कमांड्स को बंडल कर दिया जाता है।


कमांड लाइन से एक नया डेटाबेस बनाएं

createdb . के लिए मूल सिंटैक्स कमांड (जिसे सिस्टम उपयोगकर्ता द्वारा PostgreSQL तक व्यवस्थापक पहुंच के साथ चलाया जाना चाहिए) है:

createdb db_name

यह db_name . नामक एक डेटाबेस तैयार करेगा डिफ़ॉल्ट सेटिंग्स का उपयोग करके PostgreSQL के भीतर।

कमांड अपने व्यवहार को बदलने के विकल्पों को भी स्वीकार करता है, ठीक उसी तरह जैसे SQL संस्करण आपने पहले देखा था। आप man createdb . के साथ इन विकल्पों के बारे में अधिक जानकारी प्राप्त कर सकते हैं . कुछ सबसे महत्वपूर्ण विकल्प हैं:

  • --encoding= :डेटाबेस के लिए वर्ण एन्कोडिंग सेट करता है।
  • --locale= :डेटाबेस के लिए लोकेल सेट करता है।

ये यह सुनिश्चित करने में मदद कर सकते हैं कि डेटाबेस डेटा को उन स्वरूपों में संग्रहीत कर सकता है जिन्हें आप समर्थन देने की योजना बना रहे हैं और आपकी परियोजना की स्थानीयकरण प्राथमिकताओं के साथ।

उदाहरण के लिए, यह सुनिश्चित करने के लिए कि आपका डेटाबेस यूनिकोड समर्थन के साथ बनाया गया है और अमेरिकी अंग्रेजी स्थानीयकरण का उपयोग करने के लिए सर्वर के अपने स्थान को ओवरराइड करने के लिए, आप टाइप कर सकते हैं:

createdb --encoding=UTF8 --locale=en_US db_name

यह मानते हुए कि आपके पास सही अनुमतियाँ हैं, डेटाबेस आपके विनिर्देशों के अनुसार बनाया जाएगा।

इस गाइड में उदाहरणों के साथ अनुसरण करने के लिए, आप school . नामक एक डेटाबेस बना सकते हैं टाइप करके डिफ़ॉल्ट लोकेल और UTF8 कैरेक्टर एन्कोडिंग का उपयोग करना:

createdb --encoding=UTF8 school

फिर आप psql . का उपयोग करके डेटाबेस से जुड़ सकते हैं अपनी टेबल को हमेशा की तरह सेट करने के लिए।



डेटाबेस को कमांड लाइन से ड्रॉप करें

dropdb कमांड DROP DATABASE को मिरर करता है एसक्यूएल स्टेटमेंट। इसका मूल सिंटैक्स निम्न है:

dropdb database_name

database_name बदलें प्लेसहोल्डर उस डेटाबेस को संदर्भित करने के लिए जिसे आप हटाना चाहते हैं।

डिफ़ॉल्ट रूप से, यदि निर्दिष्ट डेटाबेस नहीं मिल सकता है तो यह आदेश एक त्रुटि में परिणाम देगा। इससे बचने के लिए, आप वैकल्पिक --if-exists . को शामिल कर सकते हैं झंडा:

dropdb --if-exists database_name

यदि यह मौजूद है तो यह निर्दिष्ट डेटाबेस को हटा देगा। अन्यथा, यह कुछ नहीं करेगा।

school को मिटाने के लिए डेटाबेस हमने पहले बनाया था, टाइप करें:

dropdb school

यह डेटाबेस और किसी भी चाइल्ड एलिमेंट, जैसे टेबल, को अंदर से हटा देगा।




निष्कर्ष

इस लेख में PostgreSQL के भीतर डेटाबेस और तालिकाओं को बनाने और हटाने की मूल बातें शामिल हैं। डेटाबेस सिस्टम को स्थापित करने और आपके डेटा की संरचना को परिभाषित करने के लिए ये कुछ सबसे बुनियादी कमांड हैं।

जैसा कि पहले उल्लेख किया गया है, इस PostgreSQL ट्यूटोरियल में शामिल SQL कथन, विशेष रूप से CREATE TABLE बयान, पोस्टग्रेएसक्यूएल के व्यवहार को बदलने के लिए कई अतिरिक्त पैरामीटर का उपयोग किया जा सकता है। आप इनके बारे में आधिकारिक पोस्टग्रेएसक्यूएल दस्तावेज़ों की जाँच करके अधिक जानकारी प्राप्त कर सकते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आदेश द्वारा ... PostgreSQL में क्लॉज का उपयोग करना

  2. रेल:ActiveRecord::Base . के लिए कोई कनेक्शन पूल नहीं

  3. SQL यादृच्छिक डेटा के साथ तालिका पॉप्युलेट करें

  4. PostgreSql का उपयोग करके Ireports में छवि प्रदर्शित करना

  5. बेंचमार्किंग प्रबंधित PostgreSQL क्लाउड समाधान - Google क्लाउड:भाग तीन