Ravindra Bagale · Cyber Securityसर्व coursesया course चे lessonsशोधाEnglish

Cyber Security · मराठी आवृत्ती

Subqueries: query च्या आत query

रवींद्र बागले यांच्या course वर आधारित · सहज मराठीत explanation

या page मध्ये

Subquery म्हणजे दुसऱ्या query मध्ये वापरलेली query. समजण्यासाठी “आतल्या result चा बाहेर उपयोग” असं म्हणा; optimizer प्रत्यक्ष execution वेगळं करू शकतो आणि correlated subquery बाहेरच्या row वर अवलंबून असते.

-- students who paid more than the average
SELECT name, fees_paid FROM students
WHERE fees_paid > (SELECT AVG(fees_paid) FROM students);

-- students enrolled in 'Ethical Hacking'
SELECT name FROM students
WHERE student_id IN (
  SELECT student_id FROM enrollments
  WHERE course_id = (SELECT course_id FROM courses WHERE course_name = 'Ethical Hacking')
);

-- EXISTS: students with at least one score above 85
SELECT s.name FROM students s
WHERE EXISTS (SELECT 1 FROM enrollments e WHERE e.student_id = s.student_id AND e.score > 85);

-- subquery in FROM (derived table)
SELECT city, total FROM (
  SELECT city, SUM(fees_paid) AS total FROM students GROUP BY city
) AS t WHERE total > 20000;

पहिली query average fees पेक्षा जास्त भरलेले students घेते. दुसरी Ethical Hacking course च्या enrollments मधून students शोधते; inner scalar course query ला एकच row मिळणं अपेक्षित आहे. Course names unique नसल्यास अनेक rows मिळू शकतात. तिसरी EXISTS ने score>85 असलेला किमान एक enrollment शोधते. शेवटची FROM मधली derived table city totals तयार करते आणि बाहेर total filter करते.

Security मध्ये उपयोग

Blind SQL injection मध्ये vulnerable query ला yes/no प्रश्न जोडून data बद्दल माहिती काढण्याचा प्रयत्न होतो. Source मधला उदाहरणार्थ AND (SELECT SUBSTRING(password,1,1) FROM users LIMIT 1) = 'a' हा concept दाखवतो. हा authorized training संदर्भ आहे. Production बचावासाठी input “cleaning” वर एकटं अवलंबून न राहता parameterized queries, आवश्यक validation आणि मर्यादित DB permissions वापरा.

Practice

Subquery ने highest score असलेले student(s) शोधा; ties असतील तर सर्व दाखवा. NOT IN वापरून enrollment नसलेले courses शोधा. Subquery मध्ये NULL course_id असू शकतो का तपासा—NOT IN सोबत NULL आल्यास unexpected empty result मिळू शकतो; NULL वगळणे किंवा NOT EXISTS हा पर्याय समजून घ्या.

Chapter recap

पुढच्या chapter मध्ये data बदलणं, keys, constraints आणि users पाहू.