কেন VIEW দরকার?
বড় employee table — অনেক column। HR শুধু চায়: id, name, department, joining_date।
একই SELECT বারবার লিখতে ভালো লাগে? যদি query-কে একটা নাম দিয়ে রাখা যেত?
Business Stories
HR
id, name, dept, join — salary/bank hide → HR View
Sales
product, category, sales, date → Sales Report View
Finance
invoice, customer, amount, status → Finance View
Support
customer, email, order status — no finance → Support View
TABLE vs VIEW
| বিষয় | TABLE | VIEW |
|---|---|---|
| Actual data store? | Yes | Normally no |
| Query definition? | No | Yes |
| Physical rows? | Yes | Derived result |
| SELECT like table? | Yes | Yes |
| Simplify complex SQL? | Not main job | Yes |
| Security help? | Limited | Useful |
Window Analogy
First CREATE VIEW
Read a View
| employee_id | employee_name | department | joining_date |
|---|---|---|---|
| 101 | Rahim | IT | 2023-01-10 |
| 102 | Karim | HR | 2022-05-15 |
| 103 | Jannat | IT | 2024-02-20 |
| 104 | Sakib | Sales | 2023-08-12 |
| 105 | Nadia | HR | 2021-11-01 |
কেন Useful?
Filtered View
Hide Sensitive Columns
View vs Original Table
Multi-table View
Business Reporting View
Aggregate Report View
Name Already Exists
একই নামে View থাকলে সাধারণ CREATE VIEW fail হতে পারে। Safe workflow: check → replace বা drop → recreate।
List / Inspect Views
CREATE OR REPLACE VIEW
DROP VIEW
DROP VIEW IF EXISTS
INSERT/UPDATE via View?
View Security
Data Freshness
View ≠ Table Copy
Detailed Comparison
| Feature | Table | View |
|---|---|---|
| Stores data | Yes | Usually no |
| Query definition | No | Yes |
| SELECT | Yes | Yes |
| Simplify complex SQL | Limited | Yes |
| Hide columns | Not main job | Yes |
| Reflects base changes | Is the data | Usually yes |
View vs Saved Query Text
View শুধু নোটপ্যাডে SQL নয় — database object নামসহ, table-এর মতো reference করা যায়।
Dashboards
E-commerce Sales View
Mini Project — Employee Reporting
employees + departments · ১৫+ employees।
- employee_basic_view
- hr_view (incl. salary)
- public_view (no sensitive)
- department_summary
- management multi-table view
Lifecycle: create → query → inspect → replace → drop → recreate → compare → dashboard-ready.
Live Lab Steps
- CREATE DATABASE company_db
- Create tables + insert
- CREATE VIEW basic
- SELECT FROM view
- Filtered view
- Reporting view
- Multi-table view
- SHOW CREATE VIEW
- CREATE OR REPLACE
- DROP VIEW IF EXISTS
Common Mistakes
- View = separate data copy ভাবা
- DROP VIEW → table যাবে ভাবা
- Same name recreate conflict
- Base change / deps ignore
- Too many useless views
- Confusing names
- Sensitive cols in public view
- Assume always updatable
- Blind SELECT *
- Over-complex nested views
Naming Best Practices
Professional Design
Good
Bad
Performance
Dependency
Industry Workflow
Activities (১৫)
Predict the Output (১৫)
Debugging (১০)
Interview (৩০)
MCQ (২৫)
Viva (২০)
Exercises (২০)
Quick Revision + Memory Map
CREATE VIEW · SELECT FROM VIEW · CREATE OR REPLACE VIEW
SHOW CREATE VIEW · DROP VIEW · DROP VIEW IF EXISTS
TABLE = data · VIEW = query definition · SELECT like table
BASE TABLES → SQL LOGIC → VIEW → Analyst / BI / Report → Decision
VIEW = saved SQL query used like a table