SELECT — WHERE, ORDER BY, LIMIT

লেসন ২১ / ৩৯

Basic SELECT

SELECT * FROM users;
SELECT id, name, email FROM users;

-- Alias
SELECT name AS full_name FROM users;

-- DISTINCT
SELECT DISTINCT city FROM users;

-- Calculated
SELECT name, price * 1.15 AS price_with_tax FROM products;

-- CONCAT
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users;

WHERE — Filter

SELECT * FROM users WHERE age > 18;
SELECT * FROM users WHERE status = 'active';

-- LIKE
WHERE name LIKE 'ক%'     -- ক দিয়ে শুরু
WHERE name LIKE '%ম'     -- ম দিয়ে শেষ
WHERE name LIKE '%রি%'   -- রি থাকলে

-- Logical
WHERE age >= 18 AND age <= 30
WHERE city = 'ঢাকা' OR city = 'চট্টগ্রাম'

-- BETWEEN
WHERE price BETWEEN 100 AND 500

-- IN
WHERE id IN (1, 3, 5, 7)
WHERE role NOT IN ('banned','deleted')

-- NULL
WHERE email IS NULL
WHERE email IS NOT NULL

ORDER BY

SELECT * FROM users ORDER BY name ASC;
SELECT * FROM users ORDER BY created_at DESC;
SELECT * FROM users ORDER BY city ASC, age DESC;

LIMIT ও Pagination

-- প্রথম 10টি
SELECT * FROM users LIMIT 10;

-- Pagination: page 2 (11-20)
SELECT * FROM users LIMIT 10 OFFSET 10;

-- সূত্র: OFFSET = (page - 1) * per_page
-- Page 3, 20 per page
SELECT * FROM posts
ORDER BY created_at DESC
LIMIT 20 OFFSET 40;

Query Structure

SELECT columns
FROM table
WHERE conditions
GROUP BY columns
HAVING group_conditions
ORDER BY columns
LIMIT n OFFSET m;
💡 Execution: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT

Practical Examples

-- গত ৭ দিনের user
SELECT * FROM users
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 7 DAY);

-- Search
SELECT * FROM users
WHERE name LIKE '%করিম%' OR email LIKE '%করিম%';

-- শীর্ষ ১০ দামী product
SELECT name, price FROM products
WHERE stock > 0
ORDER BY price DESC
LIMIT 10;