টেবিলের অর্থপূর্ণ সৃষ্টি
পূর্ববর্তী বক্তৃতাগুলিতে, আমরা ইতিমধ্যেই টেবিল তৈরির প্রশ্নগুলির সাথে কিছুটা পরিচিত হয়েছি, এখন এটি আরও গভীরে যাওয়ার সময়।
একটি টেবিল তৈরি করা জাভাতে একটি ক্লাস ঘোষণা করার অনুরূপ এবং এই প্যাটার্ন রয়েছে:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
উদাহরণস্বরূপ, আসুন একটি প্রশ্ন লিখি যা ব্যবহারকারীদের সাথে একটি টেবিল তৈরি করে:
CREATE TABLE user (
id INT,
name VARCHAR(100),
level INT,
created_date DATE,
);
এটা খুব সহজ দেখায়, কারণ এখানে অনেক সূক্ষ্মতা নির্দেশিত হয় না।
প্রথমত, টেবিলে অতিরিক্ত সেটিংস থাকতে পারে।
এবং দ্বিতীয়ত, প্রতিটি কলামে অতিরিক্ত সেটিংস থাকতে পারে।
এবং আমরা কলাম তৈরির সেটিংস দিয়ে শুরু করব।
টেবিলে কী
নাম এবং ডেটা টাইপ ছাড়াও, একটি টেবিল কলামে নিম্নলিখিত সেটিংসও থাকতে পারে:
প্রাথমিক কী | কলাম হল টেবিলের চাবিকাঠি |
অনন্য কী | সমস্ত কলাম মান অনন্য হতে হবে. |
ডিফল্ট মান | ডিফল্ট মান |
নাল না | মান NULL গ্রহণ করার নিষেধাজ্ঞা |
অটো | টেবিলে একটি নতুন রেকর্ড যোগ করা হলে SQL সার্ভার স্বয়ংক্রিয়ভাবে মান বৃদ্ধি করবে |
জেনারেটেড | গণনা করা ক্ষেত্র |
স্টোরেজ | কোথায় ডেটা সংরক্ষণ করবেন: ডিস্কে বা মেমরিতে |
মন্তব্য করুন | কলাম মন্তব্য, যেমন স্থানীয় ভাষায় শিরোনাম |
নীচে আমরা তাদের কিছু দেখব।
প্রথমত, এটি প্রাথমিক কী ৷
প্রায়শই, এটি নাম আইডি এবং টাইপ INT সহ একটি পৃথক কলাম। এটি টেবিলের তথাকথিত "মাস্টার কী" এবং এর সমস্ত সারিতে এই কীটির অনন্য মান রয়েছে। এটি প্রাথমিকভাবে ব্যবহার করা হয় যাতে অন্যান্য টেবিল আমাদের টেবিলের রেকর্ড উল্লেখ করতে পারে এবং এর নির্দিষ্ট রেকর্ডের দিকে নির্দেশ করতে পারে।
দ্বিতীয়টি হল ইউনিক কী ।
কিছু উপায়ে, এটি প্রাইমারি কী-এর অনুরূপ, যদিও এর শব্দার্থিক লোড সম্পূর্ণ ভিন্ন। যদি একটি কলামে অনন্য বৈশিষ্ট্য থাকে, তাহলে সেই কলামের সমস্ত মান অবশ্যই অনন্য হতে হবে। UNIQUE KEY এবং PRIMARY KEY-এর মধ্যে পার্থক্যের একটি ভালো উদাহরণ হল পাসপোর্ট অফিসের লোকদের তালিকা।
ট্যাক্স নম্বর একটি প্রাথমিক কী, এটি অন্যান্য টেবিল থেকে সঠিক ব্যক্তিকে সহজে উল্লেখ করার জন্য ব্যবহার করা হয়।
পাসপোর্ট নম্বরটি একটি অনন্য কী৷ কোনো দুই ব্যক্তির একই পাসপোর্ট নম্বর থাকতে পারে না। তবে পাসপোর্ট নম্বর পরিবর্তন করা যাবে। যেমন উপাধি পরিবর্তন করার সময়। এবং ট্যাক্স নম্বর চিরকাল আপনার সাথে থাকবে। এটি হল PRIMARY KEY এর প্রধান কাজ। প্রাথমিক কী নির্দিষ্ট করে একটি প্রশ্নের উদাহরণ:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(100),
level INT,
created_date DATE,
);
ডেটা টাইপ সেটিংস
কম গুরুত্বপূর্ণ কিন্তু দরকারী বৈশিষ্ট্য আছে.
ডিফল্ট মান
একটি টেবিলে ডেটা সন্নিবেশ করার সময় (একটি নতুন সারি যোগ করা), আপনি কিছু কলামের মান ছেড়ে দিতে পারেন যদি তাদের একটি ডিফল্ট মান থাকে। এই ক্ষেত্রে, SQL সার্ভার কেবল কলামের মান নির্ধারণ করবে।
MySQL এর সংস্করণ 8 দিয়ে শুরু করে, আপনি মান হিসাবে একটি অভিব্যক্তি নির্দিষ্ট করতে পারেন।
নাল না
যদি আপনি একটি টেবিল তৈরি করার সময় একটি কলামের জন্য NOT NULL বৈশিষ্ট্য উল্লেখ করেন, তাহলে SQL সার্ভার নিশ্চিত করবে যে এই কলামে একটি NULL মান সংরক্ষণ করা অসম্ভব। ডিফল্টরূপে, যেকোনো কলামের একটি NULL মান থাকতে পারে, এমনকি একটি INT কলাম। যা একটি জাভা প্রোগ্রামারের জন্য কিছুটা অ-স্পষ্ট।
অটো
এটি সাধারণত কলাম আইডির জন্য ব্যবহৃত হয়। আপনি যখন একটি টেবিলে একটি নতুন সারি যোগ করেন, আপনি সত্যিই চান যে এসকিউএল সার্ভার এই এন্ট্রির জন্য একটি আইডি বরাদ্দ করুক। সার্ভারের চেয়ে ভালো কে জানে টেবিলে কতগুলো সারি আছে। বিশেষ করে যদি বিভিন্ন ক্লায়েন্ট থেকে অনুরোধ একই SQL সার্ভারে যায়।
AUTO_INCREMENT অ্যাট্রিবিউটটি ঠিক এটিই করে। একটি নতুন সারি যোগ করার সময়, আমরা কেবল একটি আইডি হিসাবে কিছু পাস করি না, এবং এসকিউএল সার্ভার এই রেকর্ডের জন্য সঠিক আইডি নির্দিষ্ট করবে: এটি কেবলমাত্র সর্বশেষ বিদ্যমান রেকর্ডের আইডি নেবে এবং এটি 1 দ্বারা বৃদ্ধি করবে। এই বৈশিষ্ট্যটি শুধুমাত্র হতে পারে পূর্ণসংখ্যা এবং বাস্তব সংখ্যা প্রকারের সাথে ব্যবহৃত হয়। এবং, অবশ্যই, আসুন এই জাতীয় টেবিল তৈরির একটি উদাহরণ তৈরি করি:
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
level INT DEFAULT 1,
created_date DATE NOT NULL,
);
GO TO FULL VERSION