SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)

Blog / SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)

SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল) Detail Page

SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)

SQLite Views – ভার্চুয়াল টেবিল তৈরি ও ব্যবহারের বাংলা টিউটোরিয়াল

একটি View (ভিউ) হলো ডাটাবেসে সংরক্ষিত একটি নামধারী SQL কোয়েরি, যা দেখতে অনেকটা টেবিলের মতোই কিন্তু প্রকৃতপক্ষে এটি একটি ভার্চুয়াল টেবিল। ভিউ নিজে কোনো ডেটা সংরক্ষণ করে না; বরং যখনই আপনি ভিউটি জিজ্ঞাসা করেন, এটি তার পেছনে থাকা SQL স্টেটমেন্টটি চালিয়ে ফলাফল উপস্থাপন করে। ভিউ ব্যবহারের কয়েকটি বড় সুবিধা হলো:

  • জটিল কোয়েরিকে সহজ করা।
  • নির্দিষ্ট ইউজারকে পুরো টেবিল না দেখিয়ে সীমিত ডেটা দেখানো (নিরাপত্তা)।
  • বিভিন্ন টেবিল থেকে ডেটা সংক্ষেপে উপস্থাপন করা (রিপোর্টিং)।

তবে SQLite-তে ভিউ শুধুমাত্র পঠনযোগ্য (read-only)। আপনি সরাসরি ভিউর ওপর INSERTUPDATE বা DELETE চালাতে পারবেন না (তবে ট্রিগার ব্যবহার করে সীমিতভাবে কাজ করানো যায়)।

আজ আমরা ভিউ তৈরি, ব্যবহার, এবং মুছে ফেলার পূর্ণাঙ্গ প্রক্রিয়া উদাহরণসহ শিখব।


পূর্বপ্রস্তুতি

  • SQLite ইন্সটল থাকতে হবে (সিরিজের ৩য় পর্ব দেখুন)।
  • COMPANY টেবিল ব্যবহার করব। views_demo.db নামে ডাটাবেস প্রস্তুত করি।

টার্মিনাল:

bash

sqlite3 views_demo.db

sql

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR(50),
   SALARY REAL
);

INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY VALUES (2, 'Allen', 25, 'Texas', 15000.00);
INSERT INTO COMPANY VALUES (3, 'Teddy', 23, 'Norway', 20000.00);
INSERT INTO COMPANY VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.00);
INSERT INTO COMPANY VALUES (5, 'David', 27, 'Texas', 85000.00);
INSERT INTO COMPANY VALUES (6, 'Kim', 22, 'South-Hall', 45000.00);
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);
  • আউটপুট ফরম্যাট: .header on.mode column

১. CREATE VIEW – ভিউ তৈরি

ভিউ তৈরি করা অনেকটা CREATE TABLE-এর মতো, কিন্তু ডেটার বদলে একটি SELECT কোয়েরি সংরক্ষিত হয়।

সিনট্যাক্স:

sql

CREATE [TEMP | TEMPORARY] VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • TEMP বা TEMPORARY কীওয়ার্ড দিলে ভিউটি শুধুমাত্র বর্তমান ডাটাবেস সংযোগের জন্য তৈরি হয় এবং সংযোগ বন্ধ হলে মুছে যায়।
  • view_name: ভিউর নাম।
  • SELECT স্টেটমেন্ট: যেকোনো বৈধ SELECT কোয়েরি; এক বা একাধিক টেবিল থেকে, এমনকি অন্য ভিউ থেকেও।

উদাহরণ ১ – একক টেবিল থেকে সহজ ভিউ:
আমরা চাই COMPANY টেবিল থেকে শুধু IDNAMEAGE দেখতে।

sql

CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM COMPANY;

এখন COMPANY_VIEW একটি ভার্চুয়াল টেবিলের মতো। আমরা জিজ্ঞাসা করতে পারি:

sql

SELECT * FROM COMPANY_VIEW;

ফলাফল:

text

ID          NAME        AGE
----------  ----------  ----------
1           Paul        32
2           Allen       25
3           Teddy       23
4           Mark        25
5           David       27
6           Kim         22
7           James       24

উদাহরণ ২ – শর্তযুক্ত ভিউ:
শুধু তাদের দেখতে চাই যাদের বেতন ৩০,০০০-এর বেশি।

sql

CREATE VIEW HIGH_EARNERS AS
SELECT NAME, SALARY
FROM COMPANY
WHERE SALARY > 30000;

sql

SELECT * FROM HIGH_EARNERS;

ফলাফল:

text

NAME        SALARY
----------  ----------
Mark        65000.0
David       85000.0
Kim         45000.0

উদাহরণ ৩ – একাধিক টেবিল থেকে ভিউ (JOIN):
যদি DEPARTMENT নামে আরেকটি টেবিল থাকে, তাহলে:

sql

CREATE VIEW EMP_DEPT AS
SELECT COMPANY.NAME, DEPARTMENT.DEPT
FROM COMPANY
INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;

এখন SELECT * FROM EMP_DEPT; দিয়ে কর্মী ও তাদের বিভাগ দেখা যাবে।


২. টেম্পোরারি ভিউ (Temporary View)

টেম্পোরারি ভিউ শুধুমাত্র বর্তমান সংযোগে থাকে এবং সংযোগ বন্ধ হলে স্বয়ংক্রিয়ভাবে মুছে যায়।

sql

CREATE TEMP VIEW temp_high_salary AS
SELECT NAME, SALARY
FROM COMPANY
WHERE SALARY > 80000;

এটি temp ডাটাবেসে সংরক্ষিত হয় এবং .quit করার সাথে সাথে আর থাকবে না। টেস্টিং বা সাময়িক কাজের জন্য ভালো।


৩. ভিউ-এর সীমাবদ্ধতা

  • শুধু পঠনযোগ্য: SQLite-তে ভিউর ওপর INSERTUPDATEDELETE সরাসরি চালানো যায় না। এটি একটি গুরুত্বপূর্ণ সীমাবদ্ধতা।
  • ট্রিগার দিয়ে কাজ করানো: তবে চাইলে আপনি ভিউর ওপর INSTEAD OF ট্রিগার তৈরি করে INSERT/UPDATE/DELETE ইভেন্টকে হাতের কাজে রূপান্তর করতে পারেন।
  • ভিউর ভেতর ORDER BY: ভিউতে ORDER BY ব্যবহার করলে বাইরের SELECT-এ তা অগ্রাহ্য হতে পারে, যদি না বাইরের SELECT-এ ORDER BY না থাকে। সুতরাং সাধারণত ভিউতে ORDER BY না দেওয়াই ভালো (SQLite 3.33+ সংস্করণে কিছু পরিবর্তন এসেছে, তবে নির্ভরযোগ্য নয়)।

৪. ভিউ তালিকা দেখা

সমস্ত ভিউর নাম sqlite_master থেকে বের করা যায়:

sql

SELECT name FROM sqlite_master WHERE type = 'view';

এটি তৈরি করা সব ভিউর নাম দেখাবে (টেম্পোরারি বাদে, সেগুলো sqlite_temp_master-এ থাকে)।


৫. DROP VIEW – ভিউ মুছে ফেলা

যখন কোনো ভিউ আর প্রয়োজন নেই, তা মুছে ফেলতে DROP VIEW ব্যবহার করুন।

সিনট্যাক্স:

sql

DROP VIEW view_name;

উদাহরণ:

sql

DROP VIEW COMPANY_VIEW;

এখন COMPANY_VIEW আর কাজ করবে না। মনে রাখবেন, ভিউ মুছে ফেললে মূল টেবিলের কোনো ক্ষতি হয় না।


৬. ডিরেক্টরি স্ট্রাকচার ও প্যাকেজ

ডাটাবেস ফাইল: views_demo.db। ভিউ ডাটাবেসেরই অংশ, কোনো পৃথক ফাইল তৈরি করে না। কোনো অতিরিক্ত প্যাকেজ ইন্সটল করতে হবে না।

text

project-folder/
└── views_demo.db

৭. গুরুত্বপূর্ণ টিপস

  • ভিউ দিয়ে জটিলতা লুকান: ইউজারকে জটিল JOIN বা সাবকোয়েরি না দেখিয়ে একটি সহজ নাম দিয়ে ভিউ দিন, তাহলে ডেটা অ্যাক্সেস সহজ হয়।
  • নিরাপত্তার স্তর: সংবেদনশীল কলাম (যেমন বেতন) বাদ দিয়ে ভিউ তৈরি করে নির্দিষ্ট ইউজার গ্রুপকে শুধু প্রয়োজনীয় কলাম দেখাতে পারেন।
  • পারফরম্যান্স: ভিউ স্বয়ংক্রিয়ভাবে দ্রুততর কিছু নয়; এটি কেবল একটি সঞ্চিত কোয়েরি। ভিউর পেছনের SELECT যত দ্রুত, ভিউও তত দ্রুত।
  • ভিউর উপর ভিউ: এক ভিউ থেকে আরেক ভিউ তৈরি করা যায়, তবে জটিলতা বাড়তে পারে। খুব বেশি নেস্টিং পারফরম্যান্স কমাতে পারে।
  • TEMP ভিউ: টেস্টিং বা এককালীন রিপোর্টিং-এর জন্য TEMP ভিউ ব্যবহার করুন, যাতে ডাটাবেস অপ্রয়োজনীয় ভিউতে ভরে না যায়।

৮. সম্পূর্ণ অনুশীলন সেশন

টার্মিনালে নিচের কোডগুলো চালান:

sql

.headers on
.mode column

-- ১. সহজ ভিউ তৈরি
CREATE VIEW EMP_VIEW AS
SELECT ID, NAME, AGE FROM COMPANY;

-- ২. ভিউ থেকে ডেটা দেখি
SELECT * FROM EMP_VIEW;

-- ৩. শর্তযুক্ত ভিউ
CREATE VIEW TEXAS_EMPS AS
SELECT * FROM COMPANY WHERE ADDRESS = 'Texas';
SELECT * FROM TEXAS_EMPS;

-- ৪. ভিউর তালিকা
SELECT name FROM sqlite_master WHERE type = 'view';

-- ৫. টেম্পোরারি ভিউ (একটি)
CREATE TEMP VIEW TEMP_SAMPLE AS SELECT NAME FROM COMPANY;
SELECT * FROM TEMP_SAMPLE;

-- ৬. ভিউ ড্রপ
DROP VIEW EMP_VIEW;

-- ৭. দেখি EMP_VIEW আর নেই
SELECT name FROM sqlite_master WHERE type = 'view';

পরবর্তী পর্বে

আমরা শিখব SQLite Transactions – BEGIN, COMMIT, ROLLBACK দিয়ে ডেটা ইন্টিগ্রিটি রক্ষা করার কৌশল।

লেখকের কথা: ভিউ ডাটাবেস ডিজাইনকে আরও মার্জিত ও নিরাপদ করে তোলে। বাংলায় SQLite শেখার এই ধারা বজায় রাখতে আপনার উৎসাহ আমাদের কাছে অমূল্য। পোস্টটি ভালো লাগলে শেয়ার করুন, এবং সিরিজের সব আপডেট পেতে ToLearnTeam.com সাবস্ক্রাইব করুন। আপনার প্রশ্ন বা মতামত কমেন্টে জানাতে দ্বিধা করবেন না!



SQLite Full Course

  1. SQLite পরিচিতি ও ইন্সটলেশন গাইড – বাংলায় প্রথম ডাটাবেস তৈরি
  2. SQLite কী এবং কেন শিখবেন? সম্পূর্ণ ওভারভিউ ও কমান্ড ক্লাসিফিকেশন (DDL, DML, DQL)
  3. SQLite ইন্সটলেশন গাইড – Windows, Linux ও Mac-এ ধাপে ধাপে সেটআপ
  4. SQLite ডট কমান্ড (Dot Commands) – সম্পূর্ণ গাইড, আউটপুট ফরম্যাট ও sqlite_master
  5. SQLite সিনট্যাক্স (Syntax) – কেস সেনসিটিভিটি, কমেন্ট, সব কমান্ডের গঠন ও উদাহরণ
  6. SQLite ডেটা টাইপ (Data Type) – স্টোরেজ ক্লাস, টাইপ অ্যাফিনিটি, বুলিয়ান ও ডেট-টাইম
  7. SQLite ডেটাবেস তৈরি (Create Database) – ধাপে ধাপে গাইড, .dump এক্সপোর্ট ও রিস্টোর
  8. SQLite ATTACH DATABASE – একাধিক ডাটাবেস সংযুক্ত করার সম্পূর্ণ গাইড (বাংলা)
  9. SQLite DETACH DATABASE – সংযুক্ত ডাটাবেস বিচ্ছিন্ন করার পূর্ণাঙ্গ গাইড
  10. SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)
  11. SQLite DROP TABLE স্টেটমেন্ট – টেবিল ডিলিট করার সম্পূর্ণ গাইড (বাংলা)
  12. SQLite INSERT INTO স্টেটমেন্ট – ডেটা ইনসার্ট করার সম্পূর্ণ গাইড (বাংলা)
  13. SQLite SELECT স্টেটমেন্ট – টেবিল থেকে ডেটা ফেচ করার সম্পূর্ণ গাইড (বাংলা)
  14. SQLite অপারেটর (Operators) – Arithmetic, Comparison, Logical, Bitwise (বাংলা টিউটোরিয়াল)
  15. SQLite এক্সপ্রেশন (Expressions) – বুলিয়ান, নিউমেরিক ও ডেট এক্সপ্রেশন (বাংলা টিউটোরিয়াল)
  16. SQLite AND ও OR অপারেটর – একাধিক শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  17. SQLite UPDATE Query – টেবিলের ডেটা পরিবর্তন করার সম্পূর্ণ গাইড (বাংলা)
  18. SQLite DELETE Query – টেবিল থেকে ডেটা মুছে ফেলার সম্পূর্ণ গাইড (বাংলা)
  19. SQLite LIKE Operator – প্যাটার্ন মিলিয়ে ডেটা খোঁজার সম্পূর্ণ গাইড (বাংলা)
  20. SQLite GLOB Operator – কেস-সেনসিটিভ প্যাটার্ন মিলিয়ে ডেটা খোঁজা (বাংলা)
  21. SQLite LIMIT Clause – ডেটা সীমিত করে আনার সম্পূর্ণ গাইড (বাংলা)
  22. SQLite ORDER BY ক্লজ – ডেটা সাজানোর সম্পূর্ণ গাইড (বাংলা)
  23. SQLite GROUP BY ক্লজ – ডেটা গ্রুপ করে বিশ্লেষণ করার সম্পূর্ণ গাইড (বাংলা)
  24. SQLite HAVING ক্লজ – গ্রুপের উপর শর্ত দিয়ে ডেটা ফিল্টার (বাংলা টিউটোরিয়াল)
  25. SQLite DISTINCT Keyword – ডুপ্লিকেট ডেটা বাদ দিয়ে ইউনিক ভ্যালু পাওয়া (বাংলা)
  26. SQLite PRAGMA কমান্ড – ডাটাবেস কনফিগারেশন ও সেটিংস (বাংলা টিউটোরিয়াল)
  27. SQLite Constraints – NOT NULL, DEFAULT, UNIQUE, PRIMARY KEY, CHECK (বাংলা টিউটোরিয়াল)
  28. SQLite JOINS – CROSS JOIN, INNER JOIN, LEFT OUTER JOIN (বাংলা টিউটোরিয়াল)
  29. SQLite UNION ও UNION ALL – একাধিক SELECT একত্রিত করার সম্পূর্ণ গাইড (বাংলা)
  30. SQLite NULL Values – NULL কী, IS NULL, IS NOT NULL (বাংলা টিউটোরিয়াল)
  31. SQLite ALIAS Syntax – টেবিল ও কলামের অস্থায়ী নাম (বাংলা টিউটোরিয়াল)
  32. SQLite Triggers – স্বয়ংক্রিয় ট্রিগার তৈরি, ব্যবহার ও মুছে ফেলা (বাংলা টিউটোরিয়াল)
  33. SQLite Indexes – CREATE, UNIQUE, COMPOSITE, DROP INDEX (বাংলা টিউটোরিয়াল)
  34. SQLite INDEXED BY Clause – নির্দিষ্ট ইনডেক্স ব্যবহার ও NOT INDEXED (বাংলা)
  35. SQLite ALTER TABLE Command – টেবিলের গঠন পরিবর্তন (বাংলা টিউটোরিয়াল)
  36. SQLite TRUNCATE TABLE Command – DELETE ও DROP দিয়ে টেবিল খালি করা (বাংলা)
  37. SQLite Views – ভার্চুয়াল টেবিল তৈরি, ব্যবহার ও ডিলিট (বাংলা টিউটোরিয়াল)
  38. SQLite Transactions – BEGIN, COMMIT, ROLLBACK ও ACID প্রপার্টি (বাংলা)
  39. SQLite Subqueries – SELECT, INSERT, UPDATE, DELETE-এ সাবকোয়েরি ব্যবহার (বাংলা টিউটোরিয়াল)
  40. SQLite AUTOINCREMENT – স্বয়ংক্রিয়ভাবে প্রাইমারি কি মান বৃদ্ধি (বাংলা টিউটোরিয়াল)
  41. SQLite SQL Injection – কী, কেন বিপজ্জনক ও প্রতিরোধের উপায় (বাংলা টিউটোরিয়াল)
  42. SQLite EXPLAIN ও EXPLAIN QUERY PLAN – কোয়েরি বিশ্লেষণ (বাংলা টিউটোরিয়াল)
  43. SQLite VACUUM – ডাটাবেস পরিষ্কার, স্পেস রিক্লেইম ও অটো-ভ্যাকুয়াম (বাংলা টিউটোরিয়াল)
  44. SQLite Date & Time ফাংশন – date(), time(), datetime(), julianday(), strftime() (বাংলা টিউটোরিয়াল)
  45. SQLite Useful Functions – COUNT, MAX, MIN, AVG, SUM, RANDOM, ABS, UPPER, LOWER, LENGTH (বাংলা টিউটোরিয়াল)
  46. SQLite C/C++ প্রোগ্রামিং – sqlite3_open, exec, close, callback (বাংলা টিউটোরিয়াল)
  47. SQLite PHP প্রোগ্রামিং – PHP-তে SQLite ডাটাবেস ব্যবহার (বাংলা টিউটোরিয়াল)
  48. SQLite Perl প্রোগ্রামিং – DBI/DBD::SQLite দিয়ে ডাটাবেস অপারেশন (বাংলা)
  49. SQLite Python প্রোগ্রামিং – sqlite3 মডিউল দিয়ে CRUD অপারেশন (বাংলা টিউটোরিয়াল)
  50. SQLite Quick Guide – বাংলায় পূর্ণাঙ্গ সংক্ষিপ্ত টিউটোরিয়াল (শেখার সহজ গাইড)

Leave a Reply

Welcome to To Learn Team, a dynamic educational platform where knowledge meets collaboration. Designed for students, educators, and lifelong learners, we provide a curated hub of interactive study groups, expert tutorials, and comprehensive resources across diverse subjects. We believe that learning is most powerful when done together. By uniting a global community, we transform curiosity into confidence and individual aspirations into shared achievements. Join the To Learn Team today—elevate your intellect and grow with us!

Get In Touch

Address

Dhaka, Bangladesh

Email

abir43tee@gmail.com

Phone

+880 1711427737

Quick Search