SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)

Blog / SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)

SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা) Detail Page

SQLite CREATE TABLE স্টেটমেন্ট – টেবিল তৈরি করার পূর্ণাঙ্গ গাইড (বাংলা)

SQLite CREATE TABLE স্টেটমেন্ট দিয়ে টেবিল তৈরি করার বাংলা টিউটোরিয়াল

ডাটাবেসের প্রাণ হলো টেবিল – যেখানে সারি (row) ও কলামে (column) ডেটা সাজানো থাকে। SQLite-তে একটি নতুন টেবিল তৈরি করতে আমরা CREATE TABLE স্টেটমেন্ট ব্যবহার করি। এই কমান্ডের মাধ্যমে আমরা টেবিলের নাম, প্রতিটি কলামের নাম ও ডেটা টাইপ এবং বিভিন্ন কনস্ট্রেইন্ট (যেমন প্রাইমারি কি, NOT NULL) নির্ধারণ করি। আজকের পর্বে আমরা এই পুরো প্রক্রিয়াটি খুব সহজ ভাষায় উদাহরণসহ শিখব। আপনি শিখবেন কীভাবে একটি শক্তিশালী টেবিল তৈরি করতে হয় যা ডাটাবেসের বুনিয়াদ হিসেবে কাজ করে।


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

  • আপনার কম্পিউটারে SQLite ইন্সটল থাকতে হবে (সিরিজের ৩য় পর্ব দেখুন)।
  • টার্মিনাল বা কমান্ড প্রম্পট ব্যবহার করতে পারবেন।
  • কোনো অতিরিক্ত প্যাকেজ বা লাইব্রেরির প্রয়োজন নেই।

১. CREATE TABLE-এর সাধারণ সিনট্যাক্স

SQLite-তে টেবিল তৈরির মৌলিক গঠন হলো:

sql

CREATE TABLE database_name.table_name(
   column1 datatype PRIMARY KEY(one or more columns),
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype
);

ব্যাখ্যা:

  • CREATE TABLE: এটি কীওয়ার্ড, যা ডাটাবেস ইঞ্জিনকে নতুন টেবিল তৈরির নির্দেশ দেয়।
  • database_name.table_name: ঐচ্ছিকভাবে আপনি ডাটাবেসের নাম উল্লেখ করতে পারেন। যদি database_name না দেন, তাহলে বর্তমানে ব্যবহৃত মূল ডাটাবেসে (main) টেবিল তৈরি হবে। সংযুক্ত (attached) ডাটাবেসে টেবিল তৈরি করতে চাইলে database_name. প্রিফিক্স ব্যবহার করুন।
  • column1 datatype: কমপক্ষে একটি কলামের নাম ও তার ডেটা টাইপ নির্ধারণ করতে হবে। ডেটা টাইপ হিসেবে আমরা INTINTEGERREALTEXTCHAR(n)BLOB ইত্যাদি দিতে পারি – SQLite এগুলোকে তার অ্যাফিনিটি অনুযায়ী ব্যাখ্যা করে (আগের ডেটা টাইপ পর্ব দেখুন)।
  • PRIMARY KEY(one or more columns): ঐচ্ছিক। টেবিলের প্রতিটি সারিকে অনন্যভাবে চিহ্নিত করার জন্য এক বা একাধিক কলামকে প্রাইমারি কি হিসেবে ঘোষণা করা যায়। সাধারণত একটি কলাম (যেমন id) প্রাইমারি কি হয়।
  • কনস্ট্রেইন্টNOT NULL (মান খালি রাখা যাবে না), UNIQUE (সব মান অনন্য), DEFAULT (ডিফল্ট মান) ইত্যাদি কলামের সাথে যোগ করা যায়।

২. উদাহরণ ১: COMPANY টেবিল তৈরি

ধরুন আমরা একটি কোম্পানির কর্মচারী তালিকা রাখতে একটি টেবিল বানাব। টেবিলের নাম COMPANY এবং এতে থাকবে:

  • আইডি (ID) – পূর্ণসংখ্যা, প্রাইমারি কি, খালি রাখা যাবে না।
  • নাম (NAME) – টেক্সট, খালি নয়।
  • বয়স (AGE) – পূর্ণসংখ্যা, খালি নয়।
  • ঠিকানা (ADDRESS) – ক্যারেক্টার, সর্বোচ্চ ৫০ অক্ষর (এখানে আসলে SQLite TEXT হিসেবেই নেবে)।
  • বেতন (SALARY) – রিয়েল (দশমিক), খালি রাখা যেতে পারে।

কমান্ড:

sql

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

লক্ষ্য করুন:

  • ID INT PRIMARY KEY NOT NULL – আমরা এক লাইনেই কলামকে প্রাইমারি কি ও NOT NULL করেছি। এটি খুবই সাধারণ পদ্ধতি। চাইলে শেষে আলাদা করে PRIMARY KEY(ID) লেখাও যায়।
  • ADDRESS CHAR(50) – SQLite-তে CHAR(50)-ও TEXT অ্যাফিনিটি পাবে, অর্থাৎ এটি টেক্সটের মতোই আচরণ করবে কিন্তু আমরা আকারের ইঙ্গিত দিচ্ছি।
  • SALARY REAL – বেতনের জন্য দশমিক সংখ্যা; এখানে কোনো NOT NULL কনস্ট্রেইন্ট দেওয়া হয়নি, তাই ডেটা না থাকলে NULL সংরক্ষিত হবে।

৩. উদাহরণ ২: DEPARTMENT টেবিল তৈরি

এবার কোম্পানির বিভাগ (department) সংক্রান্ত আরেকটি টেবিল বানাই, যা পরবর্তী অনুশীলনে কাজে লাগবে।

sql

CREATE TABLE DEPARTMENT(
   ID INT PRIMARY KEY      NOT NULL,
   DEPT           CHAR(50) NOT NULL,
   EMP_ID         INT      NOT NULL
);

এখানে EMP_ID দিয়ে আমরা বুঝব কোন কর্মচারী কোন বিভাগে আছে (পরে বিদেশি কি বা জয়েনের জন্য)।


৪. টেবিল তৈরি সফল হয়েছে কিনা যাচাই

SQLite শেলে টেবিল তৈরি করার পর আমরা ডট কমান্ড ব্যবহার করে যাচাই করতে পারি।

.tables কমান্ড: বর্তমান ডাটাবেসের (এবং সংযুক্ত ডাটাবেসগুলোর) সব টেবিলের নাম দেখায়।

sql

sqlite> .tables
COMPANY     DEPARTMENT

আপনি যদি আগে থেকে অন্য কোনো টেবিল তৈরি করে থাকেন, সেগুলোও দেখাবে। যদি ডাটাবেস সংযুক্ত (ATTACH) করে থাকেন, তাহলে অ্যালিয়াস প্রিফিক্সসহ (যেমন mydb.COMPANY) দেখতে পাবেন।

.schema TABLE_NAME কমান্ড: নির্দিষ্ট টেবিলের CREATE স্টেটমেন্টটি আবার দেখার জন্য।

sql

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

এটি নিশ্চিত করে যে টেবিলটি আমাদের কাঙ্খিত গঠনেই তৈরি হয়েছে। .schema কমান্ড ছাড়া কলামের তালিকা একবারে দেখা যায় না, তবে আমরা PRAGMA table_info('COMPANY'); ব্যবহার করেও কলামের বিস্তারিত তথ্য পেতে পারি (আগামী পর্বগুলোতে আলোচিত হবে)।


৫. ডাটাবেসের নাম সহ টেবিল তৈরি (ঐচ্ছিক)

আপনি যদি চান যে test নামে সংযুক্ত কোনো ডাটাবেসে টেবিল তৈরি হবে, তাহলে সিনট্যাক্স হবে:

sql

ATTACH DATABASE 'other.db' AS other;
CREATE TABLE other.products (
    id INTEGER PRIMARY KEY,
    name TEXT
);

এখন .tables চালালে other.products দেখাবে।

কিন্তু আপনি যদি সরাসরি main ডাটাবেসে টেবিল তৈরি করতে চান, তাহলে শুধু টেবিলের নাম লিখলেই হবে, main. দেওয়ার প্রয়োজন নেই (তবে দিলেও চলবে)।


৬. বাস্তব হাতে-কলমে উদাহরণ

আসুন আমরা একটি নতুন ডাটাবেস practice.db খুলে উপরের টেবিল দুটি তৈরি করি এবং যাচাই করি।

ধাপ ১: টার্মিনালে

bash

sqlite3 practice.db

ধাপ ২: টেবিল তৈরি

sql

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

CREATE TABLE DEPARTMENT(
   ID INT PRIMARY KEY NOT NULL,
   DEPT CHAR(50) NOT NULL,
   EMP_ID INT NOT NULL
);

ধাপ ৩: টেবিলের তালিকা দেখি

sql

.tables

আউটপুট:

text

COMPANY     DEPARTMENT

ধাপ ৪: COMPANY টেবিলের স্কিমা দেখি

sql

.schema COMPANY

আমরা আগের মতোই CREATE স্টেটমেন্ট দেখতে পাব।

ধাপ ৫: কিছু ডেটা ইনসার্ট করে দেখি টেবিল কাজ করে কিনা

sql

INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00);
INSERT INTO COMPANY VALUES (2, 'Allen', 25, 'Texas', 15000.00);

sql

SELECT * FROM COMPANY;

ফলাফল আসবে। অর্থাৎ টেবিল সঠিকভাবে তৈরি হয়েছে এবং কাজ করছে।


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

উপরের কাজ করার পর আপনার ফোল্ডারে শুধু practice.db ফাইলটি থাকবে। যদি আপনি আলাদা ডাটাবেস ফাইল সংযুক্ত করেন, তবে সেগুলোও ফোল্ডারে থাকবে। উদাহরণস্বরূপ:

text

project-folder/
└── practice.db

কোনো বিশেষ প্যাকেজ বা অতিরিক্ত কনফিগারেশনের দরকার নেই। SQLite ইন্সটল করা থাকলেই আপনি CREATE TABLE সহ যেকোনো SQL কমান্ড চালাতে পারবেন।


৮. গুরুত্বপূর্ণ টিপস ও কৌশল

  • প্রাইমারি কি নকশা: সাধারণত একটি টেবিলে একটিই প্রাইমারি কি থাকে (যেমন ID), এবং এটি INTEGER PRIMARY KEY হিসেবে ডিফাইন করলে SQLite স্বয়ংক্রিয়ভাবে AUTOINCREMENT-এর মতো আচরণ করে (যদিও AUTOINCREMENT আলাদা কীওয়ার্ড পরে আলোচনা করব)।
  • NOT NULL: যে কলামগুলোতে ডেটা থাকা আবশ্যক, সেখানে অবশ্যই NOT NULL দিন। এটি ডেটা ইন্টিগ্রিটি রক্ষা করে।
  • কনস্ট্রেইন্টের ক্রম: কলাম ডেফিনিশনের পর যে কোনো কনস্ট্রেইন্ট (PRIMARY KEYNOT NULLUNIQUECHECKDEFAULT) বসাতে পারেন।
  • প্রত্যেক কলাম আলাদা লাইনে: কোড পড়ার সুবিধার্থে প্রতিটি কলাম আলাদা লাইনে লেখা ভালো অভ্যাস।
  • বড় হাতের অক্ষর: SQL কীওয়ার্ডগুলো বড় হাতের অক্ষরে লেখা সাধারণ রীতি, যদিও SQLite কেস-ইনসেনসিটিভ।
  • টেবিলের নামকরণ: টেবিলের নাম অর্থবহ এবং ইংরেজি একবচন বা বহুবচন – প্রকল্পের নিয়ম অনুযায়ী ঠিক করুন।

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

আমরা শিখব SQLite-তে ডেটা ইনসার্ট (INSERT INTO) – কীভাবে এক বা একাধিক সারি টেবিলে যোগ করতে হয়, বিভিন্ন কৌশল ও ব্যবহারিক উদাহরণ।

লেখকের কথা: আমরা চেষ্টা করছি বাংলায় 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