Skip to content

SQL सीखिए, हिंदी में। Interview में आत्मविश्वास के साथ जाइए।

Notes, live practice sandbox, 10 interview questions और certificate वाला 50 सवालों का exam, सब एक ही जगह।

42+ Queries Live Sandbox Interview Prep 50-Question Exam
Limited Offer
🎁

Exam में 80%+ score करें और जीतें Certificate + Gifts!

  • ✅ पूरा course free
  • 🎓 Final Exam में 80%+ = Certificate
  • 📝 50 Questions
  • 🎁 Cheat Sheet + Gifts + बहुत कुछ

🧭 SQL बिल्कुल नहीं आता? बस ये 4 बातें समझ लीजिए!

SQL कोई कठिन programming नहीं है। सोचिए आपके पास एक Excel Sheet खुली है और आप उसे type करके बोल रहे हैं कि क्या करना है:

1. Database एक अलमारी या Folder जिसमें कई सारी अलग-अलग sheets रखी होती हैं।
2. Table Excel की एक Sheet जिसमें Columns (headings) और Rows (records) होते हैं।
3. Row vs Column Column = Header (जैसे Name, City)। Row = एक व्यक्ति का पूरा data।
4. Golden Formula SELECT (क्या देखना है) + FROM (किस sheet से) + WHERE (क्या filter है)।
ℹ️ Dialect note: SQL के अलग-अलग database (MySQL, SQL Server, PostgreSQL, Oracle) में बुनियादी commands एक जैसी हैं, पर कुछ syntax बदल जाता है। इस course के examples और outputs MySQL style में हैं; जहाँ syntax अलग है (जैसे LIMIT / TOP, AUTO_INCREMENT, Stored Procedure) वहाँ दूसरे databases का syntax भी साथ में दिया गया है।

⚡ Live Interactive SQL Sandbox (Browser Engine)

AlaSQL Engine Active

यहाँ आप live SQL queries चलाकर देख सकते हैं! नीचे दिए गए quick buttons पर click करें या अपना SQL code लिखकर Run Query (Ctrl + Enter) दबाएँ:

Quick Queries:
Results will appear here...

🗄️ Active Sandbox Data Tables (हमारा Sample Data)

Sheet 1: Customers 4 Rows

CustomerIDCustomerNameCityCountry
1Amit SharmaDelhiIndia
2Pooja VermaMumbaiIndia
3John MillerBerlinGermany
4Sara SmithLondonUK

Sheet 2: Employees 4 Rows

EmpIDNamedept_idSalary
101Rahul Roy1065000
102Sneha Rao2048000
103Vikas Jain1072000
104Karan MehtaNULL42000

Sheet 3: Products 4 Rows

ProductIDProductNamePriceSupplierID
1Mechanical Keyboard451
2Gaming Mouse251
3HD Monitor1802
4USB Hub153

1. SQL Basics & Queries (रोज़मर्रा की Basic Commands)

SQL SELECT & FROM

देखो भाई, Sheet में से बस अपनी पसंद के columns का data निकालना है।

💡 सरल भाषा में: सोचो Excel खोली है और बस अपने पसंद के columns देख रहे हो। सारे columns चाहिए तो * (star) लगा दो, बहुत सिंपल है।
Syntax:SELECT column1, column2 FROM table_name;
Example:SELECT CustomerName, City FROM Customers;
Output:+--------------+--------+ | CustomerName | City | +--------------+--------+ | Amit Sharma | Delhi | | Pooja Verma | Mumbai | | John Miller | Berlin | | Sara Smith | London | +--------------+--------+ 4 rows in set (0.00 sec) [4 records fetched]

SQL SELECT DISTINCT

जो values repeat हो रही हैं, उन्हें हटाकर सिर्फ़ unique values देखना।

💡 सरल भाषा में: Excel का Remove Duplicates button समझ लो। 10 लोग India के हैं, तो India सिर्फ़ एक बार दिखेगा, ठीक है?
Syntax:SELECT DISTINCT column_name FROM table_name;
Example:SELECT DISTINCT Country FROM Customers;
Output:+---------+ | Country | +---------+ | India | | Germany | | UK | +---------+ 3 rows in set (0.00 sec) [India 2 बार था, पर सिर्फ़ 1 बार दिखा]

SQL WHERE

एक शर्त लगाओ, और सिर्फ़ वही rows आएँगी जो उस शर्त पर फ़िट बैठती हैं।

💡 सरल भाषा में: Excel में Filter दबाकर बोलना कि सिर्फ़ 'India' वाले दिखाओ। बस यही WHERE है।
Syntax:SELECT * FROM table WHERE condition;
Example:SELECT CustomerName, City FROM Customers WHERE Country = 'India';
Output:+--------------+--------+ | CustomerName | City | +--------------+--------+ | Amit Sharma | Delhi | | Pooja Verma | Mumbai | +--------------+--------+ 2 rows in set (0.00 sec)

SQL AND, OR, NOT

एक से ज़्यादा शर्तों को एक साथ जोड़ना, ठीक है?

💡 सरल भाषा में: AND में दोनों बातें सच होनी चाहिए। OR में कोई एक भी चलेगी। NOT में उसे उल्टा कर देते हैं।
Syntax:SELECT * FROM table WHERE cond1 AND cond2;
Example:SELECT * FROM Customers WHERE Country='India' AND City='Delhi';
Output:+------------+--------------+-------+---------+ | CustomerID | CustomerName | City | Country | +------------+--------------+-------+---------+ | 1 | Amit Sharma | Delhi | India | +------------+--------------+-------+---------+ 1 row in set (0.00 sec) [सिर्फ़ Amit दोनों शर्तों पर फ़िट बैठा]

SQL ORDER BY

Data को छोटे से बड़ा या बड़े से छोटा क्रम में लगाना।

💡 सरल भाषा में: Excel का Sort button समझो: A-to-Z यानी ASC, Z-to-A यानी DESC।
Syntax:SELECT * FROM table ORDER BY column ASC|DESC;
Example:SELECT CustomerName, City FROM Customers ORDER BY CustomerName DESC;
Output:+--------------+--------+ | CustomerName | City | +--------------+--------+ | Sara Smith | London | | Pooja Verma | Mumbai | | John Miller | Berlin | | Amit Sharma | Delhi | +--------------+--------+ 4 rows in set (0.00 sec) [Z से A alphabetical order]

SQL INSERT INTO

Table में बिल्कुल नई row जोड़ना, यार।

💡 सरल भाषा में: Register में नई line लिखकर जोड़ देना, इतनी सी बात है।
Syntax:INSERT INTO table (col1, col2) VALUES (val1, val2);
Example:INSERT INTO Customers (CustomerName, City, Country) VALUES ('Rohan Das', 'Pune', 'India');
Output:Query OK, 1 row affected (0.01 sec) [नई row जुड़ गई: CustomerID 5, Rohan Das, Pune]

SQL UPDATE

जो data गलत पड़ा है उसे ठीक करना, पूरी table नहीं बदलनी।

💡 सरल भाषा में: पहले से लिखे नाम को eraser से मिटाकर सही कर देना। और एक बात, हमेशा WHERE लगाना, वरना सबका data बदल जाएगा!
Syntax:UPDATE table SET column = new_val WHERE condition;
Example:UPDATE Customers SET City = 'Noida' WHERE CustomerID = 1;
Output:Query OK, 1 row affected (0.02 sec) Rows matched: 1 Changed: 1 [Amit Sharma का city अब Delhi से बदलकर Noida हो गया]

SQL DELETE

Table से कोई row हमेशा के लिए हटाना।

💡 सरल भाषा में: Excel में row पर right click करके Delete Row दबाना, यही है DELETE।
Syntax:DELETE FROM table WHERE condition;
Example:DELETE FROM Customers WHERE CustomerName = 'Amit Sharma';
Output:Query OK, 1 row affected (0.01 sec) [Amit Sharma का record table से completely delete हो गया]

SQL LIMIT / TOP

सिर्फ़ शुरू के कुछ records देखना। (MySQL / PostgreSQL / SQLite में LIMIT, SQL Server / MS Access में TOP)

💡 सरल भाषा में: लंबी list में से सिर्फ़ टॉप 2 या टॉप 5 दिखाना। काम एक ही है, बस database बदलने पर लिखने का तरीका बदल जाता है।
Syntax (MySQL / PostgreSQL / SQLite):SELECT * FROM table LIMIT count;
Syntax (SQL Server / MS Access):SELECT TOP count * FROM table;
Syntax (Oracle 12c+ / SQL standard):SELECT * FROM table FETCH FIRST count ROWS ONLY;
Example (MySQL):SELECT CustomerName, City FROM Customers LIMIT 2;
Same Example (SQL Server):SELECT TOP 2 CustomerName, City FROM Customers;
Output:+--------------+--------+ | CustomerName | City | +--------------+--------+ | Amit Sharma | Delhi | | Pooja Verma | Mumbai | +--------------+--------+ 2 rows in set (0.00 sec) [दोनों queries का output एक जैसा: सिर्फ़ पहले 2 records मिले]

SQL NULL Values

देखो, खाली box है या नहीं, यह check करना।

💡 सरल भाषा में: NULL का मतलब 0 नहीं है, यार। इसका मतलब है 'खाली / data है ही नहीं'। इसीलिए = NULL नहीं, IS NULL लिखते हैं।
Syntax:SELECT * FROM table WHERE column IS NULL;
Example:SELECT Name, dept_id FROM Employees WHERE dept_id IS NULL;
Output:+-------------+---------+ | Name | dept_id | +-------------+---------+ | Karan Mehta | NULL | +-------------+---------+ 1 row in set (0.00 sec) [Karan का कोई department assign नहीं था]

2. SQL Aggregate Functions (Automatic गणित और हिसाब)

SQL MIN() & MAX()

सबसे छोटा और सबसे बड़ा number निकालना।

💡 सरल भाषा में: दुकान में सबसे सस्ता item कौन सा है और सबसे महँगा कौन सा? बस यही पूछ रहे हैं।
Syntax:SELECT MIN(col), MAX(col) FROM table;
Example:SELECT MIN(Price) AS Sasta, MAX(Price) AS Mehnga FROM Products;
Output:+-------+--------+ | Sasta | Mehnga | +-------+--------+ | 15 | 180 | +-------+--------+ 1 row in set (0.00 sec) [USB Hub = 15, HD Monitor = 180]

SQL COUNT(), SUM(), AVG()

कितने हैं, कुल कितना बना, और औसत कितना है, यह निकालना।

💡 सरल भाषा में: COUNT से गिनती मिलती है, SUM से कुल जोड़, और AVG से औसत। सिंपल है।
Syntax:SELECT COUNT(*), SUM(col), AVG(col) FROM table;
Example:SELECT COUNT(ProductID) AS Kul_Item, SUM(Price) AS Jod, AVG(Price) AS Ausat FROM Products;
Output:+----------+-----+-------+ | Kul_Item | Jod | Ausat | +----------+-----+-------+ | 4 | 265 | 66.25 | +----------+-----+-------+ 1 row in set (0.00 sec) [Total 4 items, Total rate 265, Average 66.25]

3. Advanced Querying & Joins (Smart Search और दो Sheets मिलाना)

SQL LIKE & Wildcards (%)

नाम के शुरू या आख़िरी अक्षरों से search करना।

💡 सरल भाषा में: Contact list में 'Del' लिखकर search करना, तो Delhi, Dehradun सब आ जाएँगे।
Syntax:SELECT * FROM table WHERE col LIKE 'text%';
Example:SELECT CustomerName, City FROM Customers WHERE City LIKE 'Del%';
Output:+--------------+-------+ | CustomerName | City | +--------------+-------+ | Amit Sharma | Delhi | +--------------+-------+ 1 row in set (0.00 sec)

SQL BETWEEN & IN

एक range के बीच या कुछ चुने हुए options में से ढूँढना।

💡 सरल भाषा में: बोलना कि भाई 20 से 50 रुपये के बीच वाला सामान दिखाओ।
Syntax:SELECT * FROM table WHERE col BETWEEN 20 AND 50;
Example:SELECT ProductName, Price FROM Products WHERE Price BETWEEN 20 AND 50;
Output:+---------------------+-------+ | ProductName | Price | +---------------------+-------+ | Mechanical Keyboard | 45 | | Gaming Mouse | 25 | +---------------------+-------+ 2 rows in set (0.00 sec)

SQL Aliases (AS)

Column को एक नया, अच्छा सा नाम दे देना, बस।

💡 सरल भाषा में: Code में column का नाम cust_first_nm है, पर screen पर Client_Name दिखाना है। यही alias करता है।
Syntax:SELECT col AS Nickname FROM table;
Example:SELECT CustomerName AS Client_Name FROM Customers LIMIT 2;
Output:+-------------+ | Client_Name | +-------------+ | Amit Sharma | | Pooja Verma | +-------------+ 2 rows in set (0.00 sec) [Header सुंदर और साफ़ दिखा]

SQL INNER JOIN

दो अलग sheets को common ID से आपस में जोड़ना।

💡 सरल भाषा में: एक sheet में Employee का नाम है, दूसरी में Department। दोनों को dept_id से मिलाकर एक बड़ी table बना लो, यही JOIN है।
Syntax:SELECT t1.col, t2.col FROM t1 INNER JOIN t2 ON t1.id = t2.id;
Example:SELECT e.Name, d.DeptName FROM Employees e INNER JOIN Departments d ON e.dept_id = d.DeptID;
Output:+------------+-------------+ | Name | DeptName | +------------+-------------+ | Rahul Roy | Engineering | | Sneha Rao | Marketing | | Vikas Jain | Engineering | +------------+-------------+ 3 rows in set (0.00 sec) [Karan Mehta छूट गया क्योंकि उसका dept_id खाली था]

SQL GROUP BY & HAVING

एक जैसी values वाली rows के group बनाकर summary निकालना।

💡 सरल भाषा में: Excel का Pivot Table समझ लो। देश के हिसाब से गिनो कि किस देश से 2 या ज़्यादा लोग हैं।
Syntax:SELECT col, COUNT(*) FROM t GROUP BY col HAVING COUNT(*) >= 2;
Example:SELECT Country, COUNT(CustomerID) AS Total FROM Customers GROUP BY Country HAVING COUNT(CustomerID) >= 2;
Output:+---------+-------+ | Country | Total | +---------+-------+ | India | 2 | +---------+-------+ 1 row in set (0.00 sec) [UK और Germany filter हो गए]

SQL CASE Statement

Condition के हिसाब से फ़ैसला लेना, यानी if-else।

💡 सरल भाषा में: अगर salary 60,000 से ऊपर है तो 'Senior' बोलो, वरना 'Associate'। बिल्कुल if-else।
Syntax:CASE WHEN cond THEN 'A' ELSE 'B' END;
Example:SELECT Name, CASE WHEN Salary >= 60000 THEN 'Senior' ELSE 'Associate' END AS Level FROM Employees;
Output:+-------------+-----------+ | Name | Level | +-------------+-----------+ | Rahul Roy | Senior | | Sneha Rao | Associate | | Vikas Jain | Senior | | Karan Mehta | Associate | +-------------+-----------+ 4 rows in set (0.00 sec)

SQL COALESCE / IFNULL

खाली (NULL) जगह पर कोई default value दिखा देना।

💡 सरल भाषा में: किसी का department खाली है तो error मत दिखाओ, सीधा '0' या 'Not Assigned' लिख दो।
Syntax:SELECT COALESCE(col, default_val) FROM table;
Example:SELECT Name, COALESCE(dept_id, 0) AS SafeDept FROM Employees;
Output:+-------------+----------+ | Name | SafeDept | +-------------+----------+ | Rahul Roy | 10 | | Sneha Rao | 20 | | Vikas Jain | 10 | | Karan Mehta | 0 | +-------------+----------+ 4 rows in set (0.00 sec) [NULL की जगह 0 आ गया!]

SQL UNION

दो lists को एक के नीचे एक जोड़कर एक लंबी list बनाना।

💡 सरल भाषा में: एक Delhi की दुकान की list, एक Mumbai की। दोनों को एक के नीचे एक चिपका दो।
Syntax:SELECT col FROM t1 UNION SELECT col FROM t2;
Example:SELECT City FROM Customers UNION SELECT 'Jaipur' AS City;
Output:+--------+ | City | +--------+ | Delhi | | Mumbai | | Berlin | | London | | Jaipur | +--------+ 5 rows in set (0.00 sec) [सभी शहरों की एक single list बन गई]

4. Database & Table Management (नई File और Sheet बनाना)

SQL CREATE TABLE

बिल्कुल नई खाली table तैयार करना।

💡 सरल भाषा में: Excel में नई sheet खोलकर पहली row में headers लिखना, जैसे ID, Name, Salary।
Syntax:CREATE TABLE table_name (col1 type, col2 type);
Example:CREATE TABLE Users (UserID INT, FullName VARCHAR(100));
Output:Query OK, 0 rows affected (0.02 sec) [Table 'Users' बन गई, अब इसमें data डाला जा सकता है]

SQL ALTER TABLE

बनी हुई table में नया column जोड़ना या हटाना।

💡 सरल भाषा में: चलती हुई sheet में बाद में एक नया 'Email' column जोड़ना, बस यही है।
Syntax:ALTER TABLE table_name ADD col_name datatype;
Example:ALTER TABLE Customers ADD Email VARCHAR(255);
Output:Query OK, 0 rows affected (0.02 sec) [Customers sheet में 'Email' का नया column successfully जुड़ गया]

SQL Primary Key

हर row की एक अनोखी पहचान बनाने वाला ID number।

💡 सरल भाषा में: School का Roll Number समझ लो। दो लोगों का same नहीं हो सकता, और खाली भी नहीं छोड़ सकते।
Syntax:ID INT NOT NULL PRIMARY KEY
Example:CREATE TABLE Students (RollNo INT PRIMARY KEY, Name VARCHAR(50));
Output:Query OK, 0 rows affected (0.03 sec) [Primary Key active: duplicate RollNo आते ही database मना कर देगा]

SQL AUTO_INCREMENT / IDENTITY

हर नई entry के साथ ID अपने-आप 1, 2, 3 बढ़ती जाए। (MySQL में AUTO_INCREMENT, SQL Server में IDENTITY)

💡 सरल भाषा में: Token machine की तरह समझो। नया customer आया, उसे अगला number अपने-आप मिल गया।
Syntax (MySQL):ID INT AUTO_INCREMENT PRIMARY KEY
Syntax (SQL Server):ID INT IDENTITY(start, step) PRIMARY KEY
Syntax (PostgreSQL / SQLite):PostgreSQL: ID SERIAL PRIMARY KEY SQLite: ID INTEGER PRIMARY KEY AUTOINCREMENT
Example (MySQL):CREATE TABLE Users (UserID INT AUTO_INCREMENT PRIMARY KEY, FullName VARCHAR(50)) AUTO_INCREMENT = 101; INSERT INTO Users (FullName) VALUES ('David Miller');
Same Example (SQL Server):CREATE TABLE Users (UserID INT IDENTITY(101, 1) PRIMARY KEY, FullName VARCHAR(50)); INSERT INTO Users (FullName) VALUES ('David Miller');
Output:Query OK, 1 row affected (0.01 sec) [System generated: UserID = 101 अपने-आप allot हो गया]

5. Stored Procedures & Security (Shortcut और सुरक्षा)

SQL Stored Procedure

बड़ी query को एक नाम देकर save कर लेना, बार-बार लिखनी नहीं पड़ेगी। (MySQL में CALL, SQL Server में EXEC)

💡 सरल भाषा में: Excel का Macro समझो। 20 line की query बार-बार type मत करो, एक बार save करो और एक click से चलाओ।
Syntax (MySQL):DELIMITER // CREATE PROCEDURE ProcName() BEGIN query; END // DELIMITER ; CALL ProcName();
Syntax (SQL Server):CREATE PROCEDURE ProcName AS query; GO EXEC ProcName;
Example (MySQL):DELIMITER // CREATE PROCEDURE AllCustomers() BEGIN SELECT CustomerName, Country FROM Customers; END // DELIMITER ; CALL AllCustomers();
Same Example (SQL Server):CREATE PROCEDURE AllCustomers AS SELECT CustomerName, Country FROM Customers; GO EXEC AllCustomers;
नोट: MySQL में DELIMITER इसलिए बदलते हैं ताकि procedure के अंदर का ; पूरी command को बीच में न काट दे। PostgreSQL (11+) में भी CALL चलता है, पर procedure की body लिखने का तरीका अलग है।
Output:+--------------+---------+ | CustomerName | Country | +--------------+---------+ | Amit Sharma | India | | Pooja Verma | India | +--------------+---------+ 2 rows in set (0.00 sec) [Procedure instantly executed]

SQL Comments (--)

Code के साथ अपने लिए note छोड़ना।

💡 सरल भाषा में: Sticky note लगाने जैसा है। Database query चलाते वक़्त इसे ignore कर देता है।
Syntax:-- Single Line Note /* Multi Line Note */
Example:-- सिर्फ़ active employees चाहिए SELECT Name FROM Employees WHERE dept_id IS NOT NULL;
Output:+------------+ | Name | +------------+ | Rahul Roy | | Sneha Rao | | Vikas Jain | +------------+ 3 rows in set (0.00 sec) [Comment (-- वाली line) ignore हो गई और query execute हो गई]

🎯 Top 10 Technical SQL Interview Questions

ये 10 सवाल हर technical round (Amazon, Flipkart, Google, TCS, Infosys, Data Analyst, Software Engineer) में बार-बार पूछे जाते हैं:

Q1: How do you find the 2nd Highest Salary in an Employee table? Most Frequent #1
💼 Interviewer यह क्यों पूछता है: देखना यह है कि आपको Subquery और Window Functions समझ आते हैं या आप सिर्फ़ बेसिक LIMIT पर टिके हो।
Solution A (Using Subquery - Standard SQL): सबसे पहले सबसे बड़ी salary निकालो, फिर उससे छोटी जो सबसे बड़ी salary हो उसे select करो:
SELECT MAX(Salary) AS SecondHighestSalary FROM Employees WHERE Salary < (SELECT MAX(Salary) FROM Employees);
Solution B (Using LIMIT & OFFSET - MySQL/PostgreSQL/SQLite):
SELECT DISTINCT Salary FROM Employees ORDER BY Salary DESC LIMIT 1 OFFSET 1;
Solution C (Using OFFSET-FETCH - SQL Server 2012+):
SELECT DISTINCT Salary FROM Employees ORDER BY Salary DESC OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY;
Result on Employees Table:+---------------------+ | SecondHighestSalary | +---------------------+ | 65000 | +---------------------+ 1 row in set (0.00 sec) [Top is Vikas: 72000, 2nd is Rahul: 65000]
Q2: How do you find duplicate records in a table? Data Cleaning
💼 Interviewer यह क्यों पूछता है: Data cleaning और duplicates ढूँढना हर data analyst का रोज़ का काम है, इसलिए पूछते हैं।
जब किसी column पर GROUP BY लगाकर HAVING COUNT(*) > 1 check करते हैं, तो सारे duplicate records निकलकर आ जाते हैं:
SELECT Country, COUNT(*) AS DuplicateCount FROM Customers GROUP BY Country HAVING COUNT(*) > 1;
Output:+---------+----------------+ | Country | DuplicateCount | +---------+----------------+ | India | 2 | +---------+----------------+ 1 row in set (0.00 sec)
Q3: What is the exact difference between DELETE, TRUNCATE, and DROP? Core Concept
💼 Interviewer यह क्यों पूछता है: आपको पता है कि कौन सा operation rollback हो सकता है और कौन सा table ही उड़ा देता है, यही चेक करना है।
FeatureDELETE (DML)TRUNCATE (DDL)DROP (DDL)
करता क्या हैRows को एक-एक करके हटाता हैसारी rows को एक झटके में खाली करता हैTable और उसके structure दोनों को मिटा देता है
WHERE Clauseहाँ (Specific rows filter कर सकते हैं)नहीं (पूरी sheet साफ़ होगी)नहीं
Rollbackहाँ (Transactions के साथ वापस आ सकता है)नहीं (बहुत मुश्किल / Engine dependent)नहीं (Permanently delete)
SpeedSlow (हर row का log बनता है)Very Fast (Storage de-allocate करता है)Fastest
Q4: Find customers who NEVER placed any order (Unmatched Records). Joins & Subqueries
💼 Interviewer यह क्यों पूछता है: LEFT JOIN में NULL कैसे behave करता है, यह आपको समझ आया या नहीं, यह जाँचने के लिए।
-- Approach 1: LEFT JOIN with NULL check SELECT u.name, u.city FROM Users u LEFT JOIN Orders o ON u.user_id = o.user_id WHERE o.order_id IS NULL; -- Approach 2: Using NOT EXISTS SELECT u.name, u.city FROM Users u WHERE NOT EXISTS (SELECT 1 FROM Orders o WHERE o.user_id = u.user_id);
Output:+-------------+--------+ | name | city | +-------------+--------+ | Varun Joshi | Jaipur | +-------------+--------+ 1 row in set (0.00 sec) [Varun ने अभी तक 1 भी order नहीं किया]
Q5: What is a SELF JOIN and when do we use it? (Manager-Employee Hierarchy) Advanced Join
💼 Interviewer यह क्यों पूछता है: जब एक ही table में data एक दूसरे से जुड़ा हो, जैसे employee का manager भी उसी table में employee है।
एक ही table को दो अलग नाम (Aliases e और m) देकर आपस में जोड़ने को SELF JOIN कहते हैं:
SELECT e.Name AS EmployeeName, m.Name AS ManagerName FROM Employees e LEFT JOIN Employees m ON e.ManagerID = m.EmpID;
Concept Result:+--------------+-------------+ | EmployeeName | ManagerName | +--------------+-------------+ | Sneha Rao | Rahul Roy | | Vikas Jain | Rahul Roy | | Rahul Roy | NULL | +--------------+-------------+ 3 rows in set (0.00 sec)
Q6: What is the difference between WHERE and HAVING clause? Fundamental Filter
💼 Interviewer यह क्यों पूछता है: 90% beginners WHERE और HAVING में confuse हो जाते हैं, इसलिए यह पूछा जाता है।
• WHERE: Data के group बनने से पहले individual rows पर filter लगाता है। इसमें SUM(), AVG() नहीं चलते।
• HAVING: GROUP BY होने के बाद calculated summary पर filter लगाता है (जैसे HAVING COUNT(*) > 2)।
SELECT City, COUNT(*) AS Total FROM Customers WHERE Country = 'India' -- पहले सिर्फ़ India छाँटा (WHERE) GROUP BY City HAVING COUNT(*) >= 1; -- Group बनने के बाद filter किया (HAVING)
Q7: What is the difference between PRIMARY KEY and UNIQUE KEY? Schema Design
1. Count: एक table में सिर्फ़ 1 Primary Key हो सकती है, लेकिन कई सारी Unique Keys हो सकती हैं।
2. NULL Value: Primary key कभी भी NULL नहीं हो सकती। लेकिन Unique key में NULL allow होता है।
3. उपयोग: Primary Key row की पहचान होती है। Unique key extra unique data के लिए होती है।
Q8: What is the difference between ROW_NUMBER(), RANK(), and DENSE_RANK()? Window Functions
💼 Interviewer यह क्यों पूछता है: Senior interview में ranking functions सबसे ज़्यादा पूछते हैं, ख़ासकर तब जब दो लोगों के number same हों।
मान लीजिए दो लोगों के marks बराबर (90, 90) हैं:
  • ROW_NUMBER(): हमेशा लगातार अलग number देगा: 1, 2, 3, 4.
  • RANK(): बराबर आने पर rank repeat करेगा, फिर अगला number skip करेगा: 1, 2, 2, 4.
  • DENSE_RANK(): बराबर आने पर rank repeat करेगा, और कोई number skip नहीं करेगा: 1, 2, 2, 3.
SELECT Name, Salary, DENSE_RANK() OVER (ORDER BY Salary DESC) AS SalaryRank FROM Employees;
Q9: What is SQL Injection and how do you protect against it? Security & Best Practices
💼 Interviewer यह क्यों पूछता है: Production में security सबसे पहली priority होती है, इसलिए यह सवाल आता है।
SQL Injection: जब कोई hacker login form में ' OR '1'='1 लिखकर बिना password के data access कर लेता है।
बचाव (Defense): हमेशा Parameterized Queries (Prepared Statements) का use करें।
Secure Pattern:SELECT * FROM Users WHERE Username = ? AND Password = ?;
Q10: What is a Database INDEX, and what are its pros and cons? Performance Tuning
💼 Interviewer यह क्यों पूछता है: अगर table में 1 करोड़ rows हैं तो query fast कैसे चलेगी? यह इंटरव्यूअर जानना चाहता है।
Index: किताब के आख़िर में बने Index की तरह होता है।
• फ़ायदा (Pros): SELECT और WHERE search speed 100x fast हो जाती है।
• नुकसान (Cons): Write operation (INSERT/UPDATE) थोड़ा slow हो जाता है और extra storage लगती है।
CREATE INDEX idx_city ON Customers(City);

🚀 Capstone Mini Project: "QuickCart" Online Store Analytics

अब जब आपने सारी basic और advanced commands सीख ली हैं, चलिए देखते हैं कि real company में data analyst बनकर आप इनका उपयोग कैसे करते हैं।

📁 Database Schema:

1. Users (ग्राहक) 5 Rows

user_idnamecity
1Aman GuptaDelhi
2Riya SenMumbai
3Kabir DasDelhi
4Neha SharmaBangalore
5Varun JoshiJaipur

2. Items (सामान) 4 Rows

item_idtitleprice (₹)
101Wireless Earbuds1200
102Fast Charger500
103Smart Watch2500
104Laptop Stand800

3. Orders (Sales Record) 5 Rows

order_iduser_iditem_idstatus
5011101Delivered
5022103Delivered
5031102Delivered
5043103Cancelled
5054104Delivered
🔹 Step 1: महँगे सामान की List निकालना SELECT + WHERE + ORDER BY
💼 मालिक का सवाल: "हमारी दुकान में ₹1,000 या उससे ज़्यादा क़ीमत के कौन से products हैं? उन्हें सबसे महँगे से सस्ते order में arrange करके दिखाओ।"
SELECT title, price FROM Items WHERE price >= 1000 ORDER BY price DESC;
🔹 Step 2: Total Sales (कमाई) का हिसाब निकालना COUNT + SUM + INNER JOIN
💼 मालिक का सवाल: "Successfully deliver हुए orders से हमारी कुल कितनी कमाई (Revenue) हुई और total कितने orders deliver हुए?"
SELECT COUNT(o.order_id) AS total_orders_delivered, SUM(i.price) AS total_revenue_inr FROM Orders o INNER JOIN Items i ON o.item_id = i.item_id WHERE o.status = 'Delivered';
🔹 Step 3: Complete Invoice Report 3-Table INNER JOIN + Aliases
💼 मालिक का सवाल: "मुझे एक ऐसी summary report चाहिए जिसमें साफ़ दिखे कि किस customer ने कौन सा product ख़रीदा है और उसका delivery status क्या है?"
SELECT o.order_id, u.name AS customer_name, u.city, i.title AS product_name, i.price, o.status FROM Orders o INNER JOIN Users u ON o.user_id = u.user_id INNER JOIN Items i ON o.item_id = i.item_id ORDER BY o.order_id ASC;
🔹 Step 4: शहर के अनुसार कमाई (City Analytics) GROUP BY + SUM + ORDER BY
💼 मालिक का सवाल: "किस शहर से हमें कितने रुपये की delivered sales आई है? सबसे ज़्यादा कमाई करवाने वाले शहर को top पर दिखाओ।"
SELECT u.city, COUNT(o.order_id) AS orders_count, SUM(i.price) AS city_revenue FROM Orders o INNER JOIN Users u ON o.user_id = u.user_id INNER JOIN Items i ON o.item_id = i.item_id WHERE o.status = 'Delivered' GROUP BY u.city ORDER BY city_revenue DESC;
🔹 Step 5: शांत रहने वाले Customers और VIP Tagging LEFT JOIN + COALESCE + CASE
💼 मालिक का सवाल: "सभी registered customers को list करो। अगर किसी ने ₹2,000 से ऊपर ख़र्च किया है तो 'VIP' लिखो, कम ख़र्च वाले को 'Regular', और जिसने एक भी order नहीं किया उसे 'Inactive' tag दो।"
SELECT u.name, u.city, COALESCE(SUM(CASE WHEN o.status = 'Delivered' THEN i.price ELSE 0 END), 0) AS total_spent, CASE WHEN COUNT(o.order_id) = 0 THEN 'Inactive (Send Coupon)' WHEN SUM(CASE WHEN o.status = 'Delivered' THEN i.price ELSE 0 END) >= 2000 THEN '⭐ VIP Customer' ELSE 'Regular Customer' END AS customer_tag FROM Users u LEFT JOIN Orders o ON u.user_id = o.user_id LEFT JOIN Items i ON o.item_id = i.item_id GROUP BY u.user_id, u.name, u.city ORDER BY total_spent DESC;

🎁 Free Sign Up

Details भरें, फिर Final Exam (50 Questions) दें और Certificate जीतें।
एक Email और एक Phone number से सिर्फ़ एक बार Sign Up हो सकता है। पहले से registered हैं? Login करें

🔑 Login

Sign up के समय दिया गया Email और Phone number डालें।

📊 Students & Marks