एसक्यूएल क्या है?

Table of Contents

SQL Concepts for Data Analysts (डेटा एनालिस्ट के लिए SQL कॉन्सेप्ट्स)

SQL क्या है?

SQL (Structured Query Language) एक मानक भाषा है, जिसका उपयोग डेटाबेस से डेटा को डिफाइन, मैनिपुलेट और रिट्रीव करने के लिए किया जाता है। इसका उपयोग डेटा को स्टोर, एक्सेस और एनालाइज करने में किया जाता है।

SQL की प्रमुख ऑपरेशन्स

SQL का उपयोग कई प्रकार के ऑपरेशन्स को करने के लिए किया जाता है, जैसे:

  • Database बनाना और हटाना: `CREATE DATABASE` और `DROP DATABASE` का उपयोग करके।
  • Tables बनाना और हटाना: `CREATE TABLE` और `DROP TABLE` का उपयोग करके।
  • Data Insert करना: `INSERT INTO` का उपयोग करके।
  • Data Update करना: `UPDATE` का उपयोग करके।
  • Data Delete करना: `DELETE FROM` का उपयोग करके।
  • Data Select करना: `SELECT` का उपयोग करके।

Data को Sort और Filter करना

`ORDER BY` का उपयोग करके आप डेटा को सॉर्ट कर सकते हैं और `WHERE` क्लॉज़ का उपयोग करके आप डेटा को फिल्टर कर सकते हैं। ये ऑपरेशन्स बड़े डेटा सेट्स को सटीक रूप से देखने में मदद करते हैं।

SQL Joins

`JOIN` क्लॉज़ का उपयोग एक से अधिक टेबल्स के डेटा को जोड़ने के लिए किया जाता है। इसके कुछ प्रमुख प्रकार हैं:

  • INNER JOIN: केवल उन रिकॉर्ड्स को लौटाता है जो दोनों टेबल्स में मेल खाते हैं।
  • LEFT JOIN: बाएं टेबल के सभी रिकॉर्ड्स और दाएं टेबल के मेल खाने वाले रिकॉर्ड्स को लौटाता है।
  • RIGHT JOIN: दाएं टेबल के सभी रिकॉर्ड्स और बाएं टेबल के मेल खाने वाले रिकॉर्ड्स को लौटाता है।
  • FULL OUTER JOIN: दोनों टेबल्स के मेल खाने वाले और न मेल खाने वाले सभी रिकॉर्ड्स को लौटाता है।

SQL में Data को Aggregate करना

डेटा को सारांशित करने के लिए हम Aggregate Functions जैसे `SUM`, `AVG`, और `COUNT` का उपयोग करते हैं।

  • SUM: एक कॉलम के सभी वैल्यूज़ का योग करता है।
  • AVG: एक कॉलम के सभी वैल्यूज़ का औसत निकालता है।
  • COUNT: रिकॉर्ड्स की संख्या गिनता है।

SQL क्यों सीखें?

SQL डेटा एनालिस्ट के लिए एक आवश्यक कौशल है क्योंकि यह आपको बड़े पैमाने पर डेटा को प्रभावी रूप से प्रबंधित और विश्लेषण करने में मदद करता है। SQL सीखकर आप डेटा से महत्वपूर्ण इनसाइट्स निकाल सकते हैं और व्यवसाय निर्णयों को बेहतर बना सकते हैं।

डेटाबेस प्रबंधन प्रणाली (DBMS) क्या है? | Database Management System

DBMS का परिचय

डेटाबेस प्रबंधन प्रणाली (DBMS) एक सॉफ्टवेयर एप्लिकेशन है जो डेटाबेस को बनाने, स्टोर करने, एक्सेस करने और प्रबंधित करने के लिए उपयोग किया जाता है। यह डेटाबेस में डेटा को व्यवस्थित और सुरक्षित रखने में मदद करता है और उपयोगकर्ताओं को डेटा को आसानी से खोजने और पुनर्प्राप्त करने की सुविधा प्रदान करता है।

DBMS के मुख्य कार्य

  • डेटा को परिभाषित करना
  • डेटा को स्टोर करना
  • डेटा को एक्सेस करना
  • डेटा को अपडेट करना
  • डेटा को हटाना
  • डेटा को सुरक्षित करना
  • डेटा का बैकअप लेना और पुनर्प्राप्त करना
  • डेटा को एक साथ कई उपयोगकर्ताओं द्वारा एक्सेस करने की अनुमति देना

DBMS के लाभ

  • डेटा को व्यवस्थित और सुव्यवस्थित रखना
  • डेटा को डुप्लिकेट होने से रोकना
  • डेटा तक सुरक्षित पहुंच प्रदान करना
  • डेटा को अपडेट और प्रबंधित करना आसान बनाना
  • डेटा का बैकअप और पुनर्प्राप्ति करना आसान बनाना
  • डेटा को एक साथ कई उपयोगकर्ताओं द्वारा एक्सेस करना

DBMS का उपयोग

  • व्यवसायों द्वारा ग्राहक जानकारी और बिक्री डेटा को संग्रहीत करने के लिए
  • सरकारी एजेंसियों द्वारा नागरिकों और कानूनी दस्तावेजों के डेटा को प्रबंधित करने के लिए
  • शैक्षणिक संस्थानों द्वारा छात्र रिकॉर्ड और पाठ्यक्रम डेटा को प्रबंधित करने के लिए
  • गैर-लाभकारी संगठनों द्वारा दान और सदस्यता डेटा को संग्रहीत करने के लिए

SQL डेटा टाइप्स | SQL Data Types

संख्यात्मक (Numeric)

यह डेटा टाइप संख्याओं को संग्रहीत करने के लिए उपयोग किया जाता है, जैसे कि उम्र, वेतन, मूल्य, या मात्रा. इसमें उप-प्रकार हो सकते हैं:

  • पूर्णांक (Integer): पूरे नंबरों को संग्रहीत करने के लिए (उदाहरण: 25, -100)
  • दशमलव (Decimal): दशमलव बिंदुओं वाले नंबरों को संग्रहीत करने के लिए (उदाहरण: 3.14, 125.99)
  • फ़्लोट (Float): दशमलव बिंदु के साथ संख्याएँ (उदाहरण: 5.78, 3.14)
  • नम्बर (Numeric): अधिकतम सटीकता के साथ संख्याएँ संग्रहीत करने के लिए

पाठ्य (Text)

यह डेटा टाइप अक्षरों, संख्याओं और विशेष वर्णों के संयोजन को संग्रहीत करने के लिए उपयोग किया जाता है, जैसे कि नाम, पते, या विवरण. इसमें उप-प्रकार हो सकते हैं:

  • वर्ण (Char): एकल अक्षर को संग्रहीत करने के लिए (उदाहरण: ‘A’, ‘₹’)
  • वर्णमाला (VarChar): परिवर्तनीय लंबाई वाले पाठ्य को संग्रहीत करने के लिए (उदाहरण: “दिल्ली”, “नमस्ते”)
  • टेक्स्ट (Text): बड़ी मात्रा में टेक्स्ट डेटा संग्रहीत करने के लिए (उदाहरण: किसी पोस्ट का विवरण)

तिथि और समय (Date and Time)

यह डेटा टाइप तिथियों और समयों को संग्रहीत करने के लिए उपयोग किया जाता है. विशिष्ट प्रारूप DBMS पर निर्भर करता है (उदाहरण: 2024-04-29, 14:30:00).

  • तिथि (Date): केवल तिथि (उदाहरण: 2024-12-01)
  • समय (Time): केवल समय (उदाहरण: 14:30:00)
  • तिथि और समय (DateTime): तिथि और समय दोनों को संग्रहीत करने के लिए (उदाहरण: 2024-12-01 14:30:00)
  • टाइमस्टैम्प (Timestamp): समय के साथ एक अद्वितीय पहचानकर्ता जोड़ने के लिए

तार्किक (Logical)

यह डेटा टाइप सत्य या असत्य जैसे बूलियन मानों को संग्रहीत करने के लिए उपयोग किया जाता है. इसका उपयोग अक्सर किसी शर्त या स्थिति को दर्शाने के लिए किया जाता है (उदाहरण: True, False).

अन्य डेटा टाइप्स (Other Data Types)

SQL में अन्य प्रकार के डेटा टाइप्स भी होते हैं जो विशिष्ट उपयोग के लिए उपयुक्त होते हैं. इनमें शामिल हैं:

  • बाइनरी (Binary): बाइनरी डेटा को संग्रहीत करने के लिए (उदाहरण: बाइट्स, इमेजेज)
  • XML: XML डेटा को संग्रहीत करने के लिए (उदाहरण: <data></data>)
  • ENUM: एक निश्चित सेट के भीतर से एक मान को चुनने के लिए (उदाहरण: ‘Male’, ‘Female’)
  • JSON: JSON (JavaScript Object Notation) डेटा को संग्रहीत करने के लिए (उदाहरण: {‘name’: ‘John’, ‘age’: 30})
  • UUID: एक अद्वितीय पहचानकर्ता को संग्रहीत करने के लिए (उदाहरण: 123e4567-e89b-12d3-a456-426614174000)

निष्कर्ष (Conclusion)

डेटाबेस डिज़ाइन करते समय उपयुक्त डेटा टाइप का चयन करना बेहद महत्वपूर्ण है, क्योंकि यह डेटा की सटीकता, संग्रहण दक्षता और कार्यों को प्रभावित करता है. सही डेटा टाइप का चयन करके, आप अपने डेटाबेस को अधिक संगठित और प्रभावी बना सकते हैं.

SQL में डेटाबेस ऑब्जेक्ट्स | Database Objects in SQL

टेबल (Tables)

टेबल एक डेटा संग्रह होता है, जिसे आप एक स्प्रेडशीट की तरह समझ सकते हैं. इसमें पंक्तियां (rows) और स्तंभ (columns) होते हैं. प्रत्येक पंक्ति एक रिकॉर्ड (record) का प्रतिनिधित्व करती है, जो किसी विशिष्ट इकाई के बारे में जानकारी रखती है (उदाहरण: एक ग्राहक, एक उत्पाद). प्रत्येक स्तंभ (column) एक विशेष डेटा विशेषता (attribute) को परिभाषित करता है, जो रिकॉर्ड में संग्रहीत सभी रिकॉर्ड्स के लिए एक समान डेटा टाइप रखता है (उदाहरण: ग्राहक का नाम, उत्पाद का मूल्य).

स्तंभ (Columns)

जैसा कि ऊपर बताया गया है, स्तंभ तालिका के भीतर डेटा के विशिष्ट क्षेत्रों को परिभाषित करते हैं. ये टेबल की संरचना को निर्धारित करते हैं और यह बताते हैं कि किस प्रकार का डेटा प्रत्येक क्षेत्र में संग्रहीत किया जाएगा (उदाहरण: ग्राहक का नाम, ईमेल पता, फोन नंबर).

दृश्य (Views)

दृश्य तालिकाओं से वर्चुअल टेबल की तरह कार्य करते हैं. ये वास्तविक डेटा को स्टोर नहीं करते बल्कि एक या अधिक तालिकाओं से डेटा को प्रदर्शित करने का एक तरीका प्रदान करते हैं. दृश्यों का उपयोग डेटा को फ़िल्टर करने, जॉइन करने या केवल विशिष्ट कॉलम दिखाने के लिए किया जा सकता है. यह जटिल प्रश्नों को सरल बनाने और डेटा सुरक्षा को लागू करने में मददगार होता है.

अनुक्रम (Sequences)

अनुक्रम (sequence) अद्वितीय संख्याओं को स्वचालित रूप से उत्पन्न करने के लिए उपयोग किए जाने वाले ऑब्जेक्ट होते हैं. इन्हें अक्सर प्राथमिक कुंजियों (primary keys) के लिए उपयोग किया जाता है, जो तालिका में प्रत्येक रिकॉर्ड की विशिष्ट पहचान सुनिश्चित करती हैं.

इंडेक्स (Indexes)

इंडेक्स तालिकाओं में डेटा को अनुक्रमित (indexed) करने के लिए उपयोग किए जाने वाले ऑब्जेक्ट होते हैं. ये किसी पुस्तक की अनुक्रमणिका की तरह काम करते हैं, जिससे विशिष्ट डेटा को तेजी से ढूंढना आसान हो जाता है. इंडेक्स क्वेरी प्रदर्शन को अनुकूलित करने में मदद करते हैं, खासकर बड़ी तालिकाओं के साथ काम करते समय.

पर्यायवाची (Synonyms)

पर्यायवाची किसी मौजूदा तालिका, दृश्य या अन्य डेटाबेस ऑब्जेक्ट के लिए उपनाम के रूप में कार्य करते हैं. ये उपयोगकर्ताओं को डेटाबेस ऑब्जेक्ट को अधिक सहज या यादगार नाम से एक्सेस करने की अनुमति देते हैं.

ट्रिगर (Triggers)

ट्रिगर डेटाबेस में होने वाली विशिष्ट घटनाओं के लिए स्वचालित रूप से निष्पादित होने वाले कोडेड प्रक्रियाएं होती हैं. उदाहरण के लिए, किसी तालिका में कोई नया रिकॉर्ड सम्मिलित करने पर ट्रिगर सक्रिय हो सकता है और स्वचालित रूप से किसी अन्य तालिका को अपडेट कर सकता है या डेटा सत्यापन लागू कर सकता है.

निष्कर्ष (Conclusion)

SQL में डेटाबेस ऑब्जेक्ट्स विभिन्न कार्यों को सुलभ और व्यवस्थित तरीके से करने के लिए उपयोग किए जाते हैं. ये ऑब्जेक्ट्स एक-दूसरे के साथ काम करते हैं और डेटाबेस को प्रबंधित करने में महत्वपूर्ण भूमिका निभाते हैं. सही डेटाबेस ऑब्जेक्ट्स का उपयोग करके, आप अपने डेटाबेस को अधिक कुशल और प्रभावी बना सकते हैं.

एसक्यूएल का उपयोग किस लिए किया जाता है? | Uses of SQL

डेटाबेस में डेटा को परिभाषित करना

आप CREATE DATABASE और CREATE TABLE स्टेटमेंट का उपयोग करके डेटाबेस और टेबल बना सकते हैं। आप डेटाबेस में स्तंभों, डेटा प्रकारों और बाधाओं को परिभाषित कर सकते हैं।

डेटाबेस में डेटा को हेरफेर करना

आप INSERT, UPDATE और DELETE स्टेटमेंट का उपयोग करके डेटाबेस में डेटा को सम्मिलित, अपडेट और हटा सकते हैं। आप डेटा को विभिन्न तरीकों से फ़िल्टर और क्रमबद्ध कर सकते हैं।

डेटाबेस से डेटा को पुनर्प्राप्त करना

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

डेटा का विश्लेषण और रिपोर्टिंग करना

आप डेटाबेस से डेटा को विभिन्न तरीकों से सारांशित और गणना कर सकते हैं। आप रिपोर्ट और चार्ट बनाने के लिए डेटा का उपयोग कर सकते हैं।

डेटाबेस सुरक्षा

आप डेटाबेस को अनधिकृत पहुंच से बचाने के लिए उपयोगकर्ताओं और अनुमतियों को नियंत्रित कर सकते हैं। आप डेटाबेस का बैकअप ले सकते हैं और डेटा हानि से पुनर्प्राप्त कर सकते हैं।

एसक्यूएल का उपयोग विभिन्न प्रकार के अनुप्रयोगों में

एसक्यूएल का उपयोग विभिन्न प्रकार के अनुप्रयोगों में किया जाता है, जिनमें शामिल हैं:

  • व्यवसाय: ग्राहक डेटा, उत्पाद सूची, बिक्री डेटा और वित्तीय जानकारी का प्रबंधन करना।
  • सरकार: नागरिकों के बारे में जानकारी, कर रिकॉर्ड और कानूनी दस्तावेजों का प्रबंधन करना।
  • शिक्षा: छात्र रिकॉर्ड, पाठ्यक्रम डेटा और अनुसंधान डेटा का प्रबंधन करना।
  • स्वास्थ्य सेवा: रोगी रिकॉर्ड, चिकित्सा इतिहास और बीमा जानकारी का प्रबंधन करना।
  • वैज्ञानिक अनुसंधान: प्रयोगात्मक डेटा, परिणामों और विश्लेषणों का प्रबंधन करना।

निष्कर्ष (Conclusion)

एसक्यूएल एक शक्तिशाली भाषा है जो डेटा के साथ काम करने के लिए आवश्यक विभिन्न प्रकार के कार्यों को करने में सक्षम है। यह डेटाबेस एडमिनिस्ट्रेटर, डेटा एनालिस्ट, डेवलपर्स और डेटा-संचालित निर्णय लेने वाले किसी भी व्यक्ति के लिए एक आवश्यक कौशल है।

डाटा प्राप्ति और हेरफेर (Data Retrieval and Manipulation

CREATE TABLE Customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
city VARCHAR(50) NOT NULL,
phone_number VARCHAR(20)
);
CREATE TABLE Orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
order_date DATE NOT NULL,
customer_id INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES Customers(customer_id)
);
CREATE TABLE Products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
Create table in sql
-- Insert Customers (at least 10 entries)
INSERT INTO Customers (name, email, city, phone_number)
VALUES ('John Doe', 'john.doe@example.com', 'New York', '123-456-7890'),
('Jane Smith', 'jane.smith@example.com', 'Los Angeles', NULL),
('Alice Johnson', 'alice.johnson@example.com', 'Chicago', '987-654-3210'),
('Michael Brown', 'michael.brown@example.com', 'Houston', '555-123-4567'),
('David Miller', 'david.miller@example.com', 'Phoenix', '444-333-2221'),
('Sarah Garcia', 'sarah.garcia@example.com', 'San Antonio', NULL),
('Robert Wilson', 'robert.wilson@example.com', 'San Diego', '888-777-6666'),
('Emily Jones', 'emily.jones@example.com', 'Dallas', '321-654-9870'),
('Matthew Hernandez', 'matthew.hernandez@example.com', 'San Jose', '212-987-6543'),
('Ashley Moore', 'ashley.moore@example.com', 'Austin', '789-456-1230');

-- Insert Orders (at least 5 entries with references to existing customers)
INSERT INTO Orders (order_date, customer_id)
VALUES ('2024-04-20', 1),
('2024-04-25', 3),
('2024-04-30', 5),
('2024-05-01', 7),
('2024-05-01', 9);

-- Insert Products (at least 5 entries)
INSERT INTO Products (product_name, price)
VALUES ('T-Shirt', 19.99),
('Laptop', 799.99),
('Coffee Mug', 9.99),
('Headphones', 49.99),
('Book', 24.95);
insert data in SQL database

ग्राहकों के नाम, ईमेल और शहर प्राप्त करें:

SELECT name, email, city
FROM customers;

 एक विशिष्ट तिथि के बाद किए गए सभी ऑर्डर ढूंढें:

SELECT *
FROM orders
WHERE order_date > '2024-05-01';

उत्पादों को मूल्य के अनुसार क्रमबद्ध करें (आरोही):

SELECT *
FROM products
ORDER BY price ASC;

 क्वेरी परिणामों में कॉलम को अधिक पठनीय नाम देने के लिए उपनाम का उपयोग करें:

SELECT customer_name AS "ग्राहक का नाम",
customer_email AS "ईमेल",
customer_city AS "शहर"
FROM customers;

छूटे हुए फोन नंबर वाले ग्राहकों की पहचान करें:

SELECT *
FROM customers
WHERE phone_number IS NULL;

उत्पाद जानकारी के साथ ऑर्डर विवरण प्राप्त करने के लिए ऑर्डर और उत्पाद तालिकाओं को जॉइन करें:

SELECT o.order_id, o.order_date, o.customer_id, p.product_name, p.price
FROM orders AS o
JOIN products AS p
ON o.product_id = p.product_id;

उन सभी ग्राहकों को ढूंढें जिनके ऑर्डर की कुल राशि एक विशिष्ट मान से अधिक है:

SELECT c.customer_name, SUM(p.price) AS total_amount
FROM customers AS c
JOIN orders AS o
ON c.customer_id = o.customer_id
JOIN order_details AS od
ON o.order_id = od.order_id
JOIN products AS p
ON od.product_id = p.product_id
GROUP BY c.customer_name
HAVING total_amount > 100;

एग्रीगेशन और संक्षेपण (Aggregation and Summarization):

प्रत्येक श्रेणी में उत्पादों की कुल संख्या प्राप्त करें:

SELECT product_name, COUNT(*) AS product_count
FROM products
GROUP BY product_name;

प्रत्येक ग्राहक के लिए औसत ऑर्डर मूल्य की गणना करें:

SELECT customer_name, AVG(order_amount) AS average_order_value
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY customer_name;

सबसे महंगे और सबसे सस्ते उत्पादों की पहचान करें:

SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 1; -- Top 1 most expensive product

SELECT product_name, price
FROM products
ORDER BY price ASC
LIMIT 1; -- Top 1 least expensive product

उत्पादों को श्रेणी के अनुसार समूहबद्ध करें और प्रत्येक श्रेणी के लिए बेची गई कुल मात्रा की गणना करें:

SELECT category, SUM(quantity) AS total_quantity_sold
FROM order_details od
JOIN products p ON od.product_id = p.product_id
GROUP BY category;

तिथि और समय फ़ंक्शंस (Date and Time Functions):

ऑर्डर तिथि कॉलम से वर्ष, माह और दिन निकालें:

SELECT order_id,
YEAR(order_date) AS order_year,
MONTH(order_date) AS order_month,
DAY(order_date) AS order_day
FROM orders;

 दो तिथियों के बीच का अंतर ज्ञात करें (उदाहरण के लिए, ऑर्डर तिथि और डिलीवरी तिथि):

SELECT order_id, order_date, delivery_date, DATEDIFF(delivery_date, order_date) AS days_between
FROM orders;

पिछली तिमाही में किए गए सभी ऑर्डरों की पहचान करें:

SELECT *
FROM orders
WHERE order_date BETWEEN LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 3 MONTH)) + INTERVAL 1 DAY AND CURDATE();

उन्नत अवधारणाएं (Advanced Concepts):

जॉइन (Joins):

विभिन्न जॉइन प्रकारों का उपयोग करके संबंधित तालिकाओं से डेटा मर्ज करें:

  • INNER JOIN: दोनों तालिकाओं में मिलान करने वाले रिकॉर्ड लौटाता है (जॉइन शर्त पर मिलान)।
  • LEFT JOIN: बाईं तालिका से सभी रिकॉर्ड और दाएं तालिका से मिलान करने वाले रिकॉर्ड (असमानता के लिए NULL मान भरता है)।
  • RIGHT JOIN: दाईं तालिका से सभी रिकॉर्ड और बाईं तालिका से मिलान करने वाले रिकॉर्ड (असमानता के लिए NULL मान भरता है)।
  • FULL JOIN: दोनों तालिकाओं से सभी रिकॉर्ड (मिलान या नहीं, NULL मानों के साथ)।

उदाहरण (INNER JOIN):

SELECT c.name, p.product_name, o.order_date
FROM customers c
INNER JOIN orders o ON c.customer_id = o.customer_id
INNER JOIN products p ON o.product_id = p.product_id;

UNION, INTERSECT, और EXCEPT: SQL में परिणाम सेट को मिलाना और फ़िल्टर करना

UNION

UNION ऑपरेटर का उपयोग दो या दो से अधिक SELECT क्वेरी के परिणामों को जोड़ने के लिए किया जाता है, लेकिन यह डुप्लिकेट रिकॉर्ड को हटा देता है। इसका मतलब है कि यदि दोनों क्वेरियों में एक जैसे रिकॉर्ड हैं, तो वे केवल एक बार दिखाई देंगे।

उदाहरण:

SELECT नाम FROM ग्राहक
UNION
SELECT नाम FROM सप्लायर;
            

यह क्वेरी ग्राहक और सप्लायर नामों की सूची को जोड़ता है, लेकिन कोई डुप्लिकेट नाम नहीं दिखाई देंगे।

INTERSECT

INTERSECT ऑपरेटर केवल उन रिकॉर्डों को लौटाता है जो दोनों SELECT क्वेरी के परिणामों में समान होते हैं। इसका मतलब है कि यह केवल उन रिकॉर्डों को दिखाएगा जो दोनों क्वेरियों में होते हैं।

उदाहरण:

SELECT नाम FROM ग्राहक
INTERSECT
SELECT नाम FROM सप्लायर;
            

यह क्वेरी केवल उन नामों को लौटाएगी जो ग्राहक और सप्लायर दोनों की सूची में शामिल हैं।

EXCEPT

EXCEPT ऑपरेटर एक क्वेरी के परिणाम से दूसरी क्वेरी के परिणामों को हटा देता है। इसका मतलब है कि यह पहले SELECT के परिणाम में से उन रिकॉर्ड्स को हटा देता है जो दूसरे SELECT के परिणाम में होते हैं।

उदाहरण:

SELECT नाम FROM ग्राहक
EXCEPT
SELECT नाम FROM सप्लायर;
            

यह क्वेरी उन नामों को लौटाएगी जो ग्राहक सूची में हैं, लेकिन सप्लायर सूची में नहीं हैं।

विंडो फ़ंक्शंस (RANK, ROW_NUMBER): पंक्तियों को रैंक और अनुक्रमिक संख्या असाइन करना

RANK() फ़ंक्शन

RANK() विंडो फ़ंक्शन एक विशिष्ट समूह के भीतर पंक्तियों को रैंक असाइन करता है। अगर दो पंक्तियाँ समान मान रखती हैं, तो उन्हें समान रैंक दी जाती है, और फिर अगले रैंक में एक छलांग होती है। यह टाई के लिए समान रैंक प्रदान करता है, लेकिन अगली पंक्ति को सही रैंक देने के लिए गिनती बढ़ जाती है।

उदाहरण:

SELECT नाम, अंक,
RANK() OVER (ORDER BY अंक DESC) AS रैंक
FROM छात्र;
            

यह क्वेरी छात्रों को उनके अंक के आधार पर रैंक असाइन करती है, सबसे अधिक अंक वाले छात्र को 1 रैंक मिलेगा। अगर दो छात्रों के अंक समान हैं, तो उन्हें समान रैंक मिलेगा, और अगला छात्र एक रैंक उच्च होगा।

ROW_NUMBER() फ़ंक्शन

ROW_NUMBER() विंडो फ़ंक्शन प्रत्येक पंक्ति को एक अद्वितीय अनुक्रमिक संख्या असाइन करता है। इसका उपयोग तब किया जाता है जब आपको प्रत्येक पंक्ति को एक अलग पहचान देने की आवश्यकता हो, बिना किसी समानता या समूह के विचार किए।

उदाहरण:

SELECT नाम, अंक,
ROW_NUMBER() OVER (ORDER BY अंक DESC) AS अनुक्रम
FROM छात्र;
            

यह क्वेरी प्रत्येक छात्र को उसके अंक के आधार पर एक अद्वितीय अनुक्रमिक संख्या देती है, सबसे अधिक अंक वाले छात्र को अनुक्रम 1 मिलेगा और अन्य छात्रों को उसी तरीके से अनुक्रमिक संख्या मिलेगी।

सामान्य तालिका अभिव्यक्ति (CTEs): जटिल प्रश्नों को पुन: प्रयोज्य घटकों में विभाजित करना

CTE (Common Table Expressions) क्या हैं?

सामान्य तालिका अभिव्यक्ति (CTE) SQL में एक प्रकार का वर्चुअल तालिका होता है जिसे आप जटिल क्वेरी में पुन: प्रयोज्य घटक के रूप में उपयोग कर सकते हैं। CTE का उपयोग SELECT, INSERT, UPDATE, और DELETE जैसे कार्यों में किया जा सकता है। यह मुख्य क्वेरी में उपक्वेरी (subquery) या डेटा स्रोत के रूप में कार्य करता है। CTEs क्वेरी को अधिक पढ़ने योग्य और पुन: उपयोगी बनाते हैं, जिससे बड़ी और जटिल क्वेरीज को सरल बनाना आसान हो जाता है।

CTE का उदाहरण

नीचे दिया गया उदाहरण एक सामान्य तालिका अभिव्यक्ति (CTE) का उपयोग करता है। यहां, हम एक CTE ‘customer_orders’ बना रहे हैं, जो ग्राहकों के आदेशों की जानकारी को स्टोर करता है। इसके बाद, हम CTE से डेटा प्राप्त कर रहे हैं जहां आदेश की तारीख 2024-04-01 के बाद है।

WITH customer_orders AS (
    SELECT c.name, o.order_date
    FROM customers c
    JOIN orders o ON c.customer_id = o.customer_id
)
SELECT * FROM customer_orders WHERE order_date > '2024-04-01';
            

यह क्वेरी ग्राहकों के नाम और उनके आदेशों की तारीख को ‘customer_orders’ CTE में संग्रहित करती है, और फिर उन आदेशों को फिल्टर करती है जिनकी तारीख 2024-04-01 के बाद की है। CTE के उपयोग से क्वेरी अधिक सुव्यवस्थित और समझने में आसान हो जाती है।

उपयोगकर्ता द्वारा परिभाषित फ़ंक्शंस (UDFs):

दोहराव वाले कार्यों के लिए कस्टम फ़ंक्शन बनाएं:

  • UDFs को SQL कोड के ब्लॉक के रूप में परिभाषित किया जाता है।
  • उन्हें SELECT, WHERE, आदि क्लॉज में तर्क को कैप्सुलेट करने के लिए उपयोग किया जाता है।

उदाहरण (UDF):

CREATE FUNCTION calculate_order_total(order_id INT)
RETURNS DECIMAL(10,2)
BEGIN
DECLARE order_total DECIMAL(10,2);

SELECT SUM(od.quantity * p.price)
INTO order_total
FROM order_details od
JOIN products p ON od.product_id = p.product_id
WHERE od.order_id = order_id;

RETURN order_total;
END;

SELECT order_id, calculate_order_total(order_id) AS order_total
FROM orders;

डाटा विश्लेषण परिदृश्य (Data Analysis Scenarios):

बिक्री के आधार पर शीर्ष ग्राहकों की पहचान करें:

SELECT customer_name, SUM(order_amount) AS total_sales
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
GROUP BY customer_name
ORDER BY total_sales DESC
LIMIT 10; -- शीर्ष 10 ग्राहक

उत्पाद प्रदर्शन का विश्लेषण करें:

SELECT product_name, SUM(quantity) AS total_sold
FROM order_details od
JOIN products p ON od.product_id = p.product_id
GROUP BY product_name
ORDER BY total_sold DESC
LIMIT 5; -- शीर्ष 5 सबसे अधिक बिकने वाले उत्पाद

सबसे कम बिकने वाले उत्पाद:

SELECT product_name, SUM(quantity) AS total_sold
FROM order_details od
JOIN products p ON od.product_id = p.product_id
GROUP BY product_name
ORDER BY total_sold ASC
LIMIT 5; -- शीर्ष 5सबसे कम बिकने वाले उत्पाद

ग्राहक विभाजन:

SELECT c.name, purchase_category
FROM customers c
JOIN (
SELECT customer_id, MAX(order_date) AS last_order_date
FROM orders
GROUP BY customer_id
) AS last_order_on
ON c.customer_id = last_order_on.customer_id
LEFT JOIN (
SELECT customer_id, AVG(order_amount) AS average_order_amount
FROM orders
GROUP BY customer_id
) AS average_order_on
ON c.customer_id = average_order_on.customer_id
CASE
WHEN last_order_date IS NULL THEN 'New Customer'
WHEN average_order_amount > 500 THEN 'High Spender'
ELSE 'Regular Customer'
END AS purchase_category;

जनसांख्यिकी के आधार पर:

SELECT c.name, age_group, purchase_category
FROM customers c
LEFT JOIN (
SELECT customer_id, CASE
WHEN age BETWEEN 18 AND 24 THEN '18-24'
WHEN age BETWEEN 25 AND 34 THEN '25-34'
ELSE '35+'
END AS age_group
FROM customers
) AS age_on
ON c.customer_id = age_on.customer_id
LEFT JOIN (
SELECT customer_id, CASE
WHEN gender = 'M' THEN 'Male'
ELSE 'Female'
END AS gender_group
FROM customers
) AS gender_on
ON c.customer_id = gender_on.customer_id
CASE
WHEN gender_group = 'Male' THEN 'Male Customers'
WHEN gender_group = 'Female' THEN 'Female Customers'
ELSE 'Other'
END AS purchase_category;
 

 बिक्री रुझान विश्लेषण:

SELECT order_date, SUM(order_amount) AS daily_sales
FROM orders
GROUP BY order_date
ORDER BY order_date;

साप्ताहिक बिक्री:

SELECT WEEK(order_date) AS order_week, SUM(order_amount) AS weekly_sales
FROM orders
GROUP BY WEEK(order_date)
ORDER BY order_week;

मासिक बिक्री:

SELECT MONTH(order_date) AS order_month, SUM(order_amount) AS monthly_sales
FROM orders
GROUP BY MONTH(order_date)
ORDER BY order_month;

कोहॉर्ट विश्लेषण:

-- पहले महीने में अर्जित ग्राहकों के लिए मासिक बिक्री
WITH customer_cohorts AS (
SELECT customer_id, MONTH(order_date) AS cohort_month
FROM orders
WHERE YEAR(order_date) = 2024 AND MONTH(order_date) = 1
GROUP BY customer_id, MONTH(order_date)
)
SELECT cohort_month, MONTH(order_date), SUM(order_amount) AS monthly_sales
FROM orders o
JOIN customer_

Call to Action: Take Your SQL Skills to the Next Level

Explore Additional SQL Tutorials and Real-World Practice

Now that you’ve mastered the LIKE operator and wildcards, it’s time to expand your knowledge and practice with more advanced SQL topics. The best way to improve your skills is through hands-on experience. Explore the following tutorials and practice on real-world datasets to take your SQL expertise to the next level:

These resources will guide you through complex SQL concepts and offer practical tips for real-world applications. Keep learning and refining your skills, and don’t forget to practice on real datasets to solidify your knowledge.