DanLevy.net

क्विज़: डीप Postgres: भाग 1

क्या SQL आपको चीखने पर मजबूर करता है?

भाग 1 दो में से। भाग 2 तक जाएं

PostgreSQL 🐘 मेरा पसंदीदा डेटाबेस है! मैं हमेशा नए ट्रिक्स और अजीब-सी बातें सीख रहा हूँ, इसलिए मैंने उन्हें एक नए क्विज़ में डालने का फैसला किया!

यह क्विज़ परिचित और कम ज्ञात PostgreSQL फीचर्स और अजीब-सी बातों के मिश्रण को कवर करता है: बिल्ट-इन एग्रीगेट्स से लेकर टाइप कास्टिंग, कंस्ट्रेंट्स और अधिक तक।

शुभकामनाएँ! 🍀

PostgreSQL में कौन सा बिल्ट-इन एग्रीगेट फंक्शन नहीं है?

SELECT
MIN(grade) as lowest,
MAX(grade) as highest,
AVG(grade) as average,
MEDIAN(grade) as middle
FROM grades;

MEDIAN बिल्ट-इन नहीं है! आपको आवश्यकता है:

PERCENTILE_CONT(0.5)
WITHIN GROUP (ORDER BY grade)

सामान्य बिल्ट-इन एग्रीगेट्स:

  • MIN, MAX, COUNT
  • AVG, SUM
  • ARRAY_AGG, STRING_AGG
  • विभिन्न सांख्यिकीय फंक्शन

इनमें से कौन-सा प्रकार परिवर्तन ❌ अमान्य है?

PostgreSQL में टाइप बदलने के ये रूप हैं। नीचे अभिव्यक्ति और प्रकार केवल समझाने के लिए प्लेसहोल्डर हैं, चलाने योग्य SQL नहीं:

  1. ANSI SQL: CAST(अभिव्यक्ति AS प्रकार).
  2. PostgreSQL: अभिव्यक्ति::प्रकार.
  3. टाइप वाला लिटरल: प्रकार 'लिटरल'.

सभी कार्यात्मक रूप से एक-समान हैं, लेकिन:

  • CAST() सबसे अधिक पोर्टेबल है।
  • :: PostgreSQL-विशिष्ट है लेकिन अक्सर उपयोग में लिया जाता है।
  • इनफिक्स-स्टाइल प्रकार 'लिटरल' कम आम है लेकिन अभी भी वैध है।

यहाँ कितने NULL मान अनुमत हैं?

CREATE TABLE student_emails (
student_id INTEGER,
email VARCHAR(255),
UNIQUE(email)
);

PostgreSQL में UNIQUE प्रतिबंध:

  • कई NULL मानों की अनुमति देता है।
  • अद्वितीयता जाँच में NULL ≠ NULL होता है।

NULL मानों को रोकने के लिए NOT NULL जोड़ें:

CREATE TABLE student_emails (
student_id INTEGER,
email VARCHAR(255) NOT NULL,
UNIQUE(email)
);

यह क्या लौटाता है?

SELECT '2024-11-27'::date + interval '24 hours';

अंतराल तिथि श्रेणी संचालन को सरल बनाने के लिए एक शक्तिशाली उपकरण हैं!

पोस्टग्रेएसक्यूएल में तिथि अंकगणित:

  • + interval '24 hours' 24 घंटे जोड़ता है
  • + interval '1 day' 1 दिन जोड़ता है
  • + interval '1 month' 1 महीना जोड़ता है
  • + interval '1 year' 1 वर्ष जोड़ता है

परिणाम 2024-11-28 00:00:00 होता है।

timestamptz और timestamp के बारे में सबसे सटीक कथन क्या है?

दोनों 8 बाइट लेते हैं, लेकिन उनके अर्थ अलग हैं: timestamptz किसी निश्चित क्षण को दर्शाता है, जबकि timestamp बिना समय-क्षेत्र के तारीख और समय को दर्शाता है।

अंतर क्या है? इनपुट पार्सिंग में है।

timestamptz

  • इनपुट को एक निरपेक्ष समय बिंदु में नॉर्मलाइज करता है।
  • एक्सप्लिसिट ऑफसेट के बिना इनपुट के लिए सर्वर/कनेक्शन TimeZone सेटिंग को ध्यान में रखता है और आउटपुट डिस्प्ले करते समय।

timestamp

  • टाइमज़ोन परिवर्तन के बिना तारीख और समय संग्रहीत करता है।
  • टाइमज़ोन जानकारी को संरक्षित या नॉर्मलाइज नहीं करता।

चकरा देने वाले डेटा प्रकार

इनमें से कौन ❌ एक मान्य PostgreSQL प्रकार नहीं है?

PostgreSQL में डेटा प्रकारों का एक समृद्ध सेट है, लेकिन STRING(100) उनमें से एक नहीं है।

सही स्ट्रिंग प्रकार शामिल हैं:

  • VARCHAR(100) (चर-लंबाई वाली स्ट्रिंग)
  • CHAR(100) (स्थिर-लंबाई वाली स्ट्रिंग)
  • TEXT (अपरिमित लंबाई)
  • CHARACTER VARYING(100) (VARCHAR(100) के बराबर है)

इनमें से कौन सा ❌ एक मान्य PostgreSQL प्रकार नहीं है?

यह दिख सकता है कि decimal128 अन्य स्रोतों (जैसे मॉंगो और जावा) में उपलब्ध है। लेकिन यह PostgreSQL में मान्य प्रकार नहीं है, decimal ही मान्य है।

सही संख्यात्मक प्रकार इस प्रकार हैं:

  • int (4-बाइट पूर्णांक)
  • bigint (8-बाइट पूर्णांक)
  • real (4-बाइट फ्लोटिंग-पॉइंट)
  • double precision (8-बाइट फ्लोटिंग-पॉइंट)
  • bigserial (8-बाइट स्वचालित बढ़ता पूर्णांक)
  • smallserial (2-बाइट स्वचालित बढ़ता पूर्णांक)

इनमें से कौन-सा ❌ एक वैध पोस्टग्रेस प्रकार नहीं है?

क्या यह आपको निराश कर रहा है, यहां तक कि क्रोधित? आप अकेले नहीं हैं! किसी अनाम “कोर” डेटाबेस योगदानकर्ता के शब्दों में, “वॉट द हेल, डैन?! मैंने प्रकार प्रश्नों पर टूट गया! यह खतरनाक है सर! मेरे स्कोर के बारे में नहीं बताऊंगा, हाह।” 😈 आपका स्वागत है।

पोस्टग्रेस के समृद्ध नेटवर्क प्रकार सेट में ipv4 शामिल नहीं है। हर बार जब मैं इसे गूगल किए बिना प्रयास करता हूं, तो मैं गलत करता हूं। शायद macaddr8 इस बात का संकेत देता है कि आवश्यक रूप से ipv4 और ipv6 प्रकार होना चाहिए। नहीं, inet दोनों को शामिल करता है। इसके अलावा, cidr दोनों के लिए नेटवर्क मास्क को शामिल करता है।

वैध नेटवर्क प्रकार शामिल हैं:

  • cidr (IPv4/IPv6 नेटवर्क पता)
  • inet (IPv4/IPv6 होस्ट पता)
  • macaddr (MAC पता)
  • macaddr8 (EUI-64 MAC पता)

इनमें से कौन सा ❌ एक वैध पोस्टग्रेस प्रकार नहीं है?

पोस्टग्रेस में विशिष्ट प्रकारों का एक समृद्ध सेट है, लेकिन currency इनमें से एक नहीं है!

वैध प्रकार शामिल हैं:

  • xml (XML डेटा)
  • uuid (UUID)
  • money (मुद्रा राशि)
  • interval (समय अंतराल)

इनमें से कौन ❌ एक वैध पोस्टग्रेस प्रकार नहीं है?

PostgreSQL में विशिष्ट प्रकारों का एक समृद्ध सेट है, लेकिन triangle उनमें से एक नहीं है।

यह प्रश्न PostgreSQL के बिल्ट-इन ज्यामितीय प्रकारों के बारे में है। PostGIS जैसे एक्सटेंशन अपनी ज्यामिति सुविधाएँ देते हैं; इससे triangle PostgreSQL का बिल्ट-इन प्रकार नहीं बन जाता।

सही विशिष्ट प्रकार शामिल हैं:

  • box (आयताकार बॉक्स)
  • line (अपरिमित रेखा)
  • point (2D बिंदु)
  • circle (2D वृत्त)
  • polygon (2D बहुभुज)

जब कुल संभावित छात्र आईडी गणना करते हैं तो क्या होता है?

SELECT 256 * 256 * 256 * 256;

PostgreSQL का integer प्रकार 32-बिट signed integer (ऋणात्मक और धनात्मक मानों वाला) होता है, जिसकी सीमा -2,147,483,648 से 2,147,483,647 तक होती है।

256^4 = 4,294,967,296 की गणना इस सीमा से अधिक होती है।

बड़ी संख्याओं के लिए:

-- Use BIGINT
SELECT 256::bigint * 256 * 256 * 256;
-- Or numeric for arbitrary precision
SELECT 256::numeric * 256 * 256 * 256;

PostgreSQL की छह-अंकीय सेकंड-अंश सटीकता से आगे जाने वाले उदाहरणों में, किसमें सबसे कम अतिरिक्त अंक हैं?

पोस्टग्रेस के टाइमस्टैम्प में माइक्रोसेकंड (6 दशमलव स्थान) सटीकता होती है।

  • अधिकतम: .123456 (6 अंक)
  • नैनोसेकंड (9 अंक) समर्थित सटीकता तक गोल कर दिए जाते हैं या काट दिए जाते हैं
  • टाइमज़ोन ऑफसेट timestamptz के लिए स्वीकार किए जाते हैं, लेकिन आवश्यक नहीं हैं

अक्सर भूले जाने वाला टिप्स: कुछ भाषाओं/फ्रेमवर्क नैनोसेकंड सटीकता भेजते हैं, लेकिन पोस्टग्रेस टाइमस्टैम्प माइक्रोसेकंड सटीकता में संग्रहीत करता है।

इनमें से कौन सा ❌ एक मान्य पोस्टग्रेस SQL प्रकार नहीं है?

(हाँ, ये (अधिकांश रूप से) वास्तविक प्रकार हैं।)

पोस्टग्रेस SQL में कई ज्यामितीय और टेक्स्ट खोज प्रकार शामिल हैं, लेकिन tsrank उनमें से एक नहीं है।

सही ज्यामितीय और टेक्स्ट खोज प्रकार शामिल हैं:

  • lseg (रेखाखंड)
  • bytea (बाइनरी डेटा)
  • tsquery (टेक्स्ट खोज प्रश्न)
  • tsvector (टेक्स्ट खोज दस्तावेज़)

इस ग्रेड प्रतिबंध की जाँच कब की जाती है?

ALTER TABLE students
ADD CONSTRAINT valid_grade
CHECK (
(grade >= 0 AND grade <= 100) OR
grade IS NULL
) NOT VALID;

NOT VALID प्रतिबंध:

  • नए डेटा जोड़े जाते हैं और अपडेट होते हैं तुरंत जाँच किए जाते हैं
  • मौजूदा पंक्तियों की जाँच नहीं करते
  • बाद में VALIDATE CONSTRAINT के साथ मौजूदा पंक्तियों की जाँच की जा सकती है
  • बड़े टेबल के लिए उपयोगी हैं

NOT VALID न होने पर:

  • प्रतिबंध तुरंत जाँच किया जाता है
  • सभी मौजूदा पंक्तियों की जाँच की जाती है
  • बड़े टेबल पर धीमा हो सकता है

अच्छा किया! आपने कई क्षेत्रों में गहराई तक पहुंचा! 🐘

आशा करते हैं कि आपने कुछ नया सीखा, या कम से कम एक अंक प्राप्त किया जिस पर खुशी हो। 🏆

अधिक Postgres मज़ा के लिए भाग 2 देखें! 🚀

जीवन में अधिक उत्साह चाहते हैं? मेरे प्रश्नोत्तर संग्रह को देखें अनंत* मज़ा के लिए!