Site icon Electrical Gurukul [ ইলেকট্রিকাল গুরুকুল ] GOLN

ডাটা ডেফিনিশন ল্যাংগুয়েজ এবং ম্যানিপুলেশন ল্যাংগুয়েজ এর বেসিক অপারেশন | অধ্যায়-২ | ডাটাবেস ম্যানেজমেন্ট সিস্টেম

ডাটা ডেফিনিশন ল্যাংগুয়েজ এবং ম্যানিপুলেশন ল্যাংগুয়েজ-এর বেসিক অপারেশন

আজকে আমাদের আলোচনার বিষয় – ডাটা ডেফিনিশন ল্যাংগুয়েজ এবং ম্যানিপুলেশন ল্যাংগুয়েজ এর বেসিক অপারেশন যা অধ্যায়-২ এর ডাটাবেস ম্যানেজমেন্ট সিস্টেম এ অন্তর্ভুক্ত। এটি চার বছর মেয়াদি কোর্সের আলোকে লেখা হয়েছে। ডাটাবেস ম্যানেজমেন্ট সিস্টেমের বিভিন্ন ইংরেজি বই অনুসরণ করেই রচনা করা হয়েছে। ইঞ্জিনিয়ারিং বিষয়ের যে-কোন বই সম্পূর্ণরূপে বাংলা ভাষায় রচনা করা সম্ভব নয়। এজন্যে কিছু কিছু ইংরেজি শব্দকে বাংলায় অনুবাদ করা হয়নি। ফলে ছাত্রছাত্রীদের হয়ত কিছুটা অসুবিধা হতে পারে।

ডাটা ডেফিনিশন ল্যাংগুয়েজ এবং ম্যানিপুলেশন ল্যাংগুয়েজ এর বেসিক অপারেশন

ডাটা ডেফিনিশন ল্যাংগুয়েজ এবং ম্যানিপুলেশন ল্যাংগুয়েজ-এর বেসিক অপারেশন

basic operation of DDL, DML and data dictionary) :

ডাটাবেস ল্যাংগুয়েজঃ যে ল্যাংগুয়েজের সাহায্যে ডাটাবেস সিস্টেমে স্কীমা ডেফিনিশন, কুয়েরি অপারেশন, ডাটা মডিফিকেশ ইত্যাদি কাজ করা হয়, সে সব ল্যাংগুয়েজকে ডাটাবেস ল্যাংগুয়েজ বলে।

ডাটাবেস ল্যাংগুয়েজ হিসেবে ২ ধরনের ল্যাংগুয়েজ রয়েছে, যেমন-

১। Data Definition Language (DDL) এবং

২। Data Manipulation Language( DML)

DDL এবং DML দু’টি আলাদা কোন ল্যাংগুয়েজ নয়। ইহারা ডাটাবেস ল্যাংগুয়েজের একেকটি অংশ মাত্র।

১. Data Definition Language (DDL)-এর বেসিক অপারেশনঃ যে ডাটাবেস ল্যাংগুয়েজ এর মাধ্যমে রিলেশনাল ডাটাকে স্কীমাগুলোকে ডিফাইন, ডিলিটিং, ইনডেক্স ক্রিয়েটিং, মডিফাইং (For defining, deleting, Indexing and modifying relation schemas) করা হয় এবং এর জন্য প্রয়োজনীয় কমান্ডসমূহ সরবরাহ করে থাকে, তাকে ডাটা ডেফিনিশন ল্যাংগুয়েজ বলে।

ব্যবহৃত কমান্ডসমূহঃ

ক. Create statement

খ. Drop statement

গ. Alter statement

ঘ. Rename statement

ঙ. Integrity Constraint

ক. Create statement: Create statement কমান্ড দ্বারা রিলেশনাল ডাটাবেসে সাধারণত ডাটাবেসের টেবিল তৈরি করা হয় টেবিল তৈরি করার জন্য সবার আগে জানতে হবে টেবিল তৈরির Syntax. (নিয়ম)। নিম্নে টেবিল তৈরির Syntex. (নিয়ম) দেয়া হলঃ

Syntax:

CREATE TABLE table_name

(column_name datatype(size), Column_name datatype (size));

উপরোক্ত Syntax-এ SQL Statement এর শুরুতে ‘CREATE’ একটি Verb, যার অধীনে আছে TABLE’ নামক একটি noun এবং ‘<table_name>’ নামক একটি adjective.

CREATE TABLE কমান্ডে Column definition এর একটি মাত্র ক্লোজ (a single clause) রয়েছে এবং প্রত্যেক কলামে একটি করে প্যরামিটার (Parameter) রয়েছে, যা কমা (,) দ্বারা পৃথক (Separated) করা আছে। SQL Statement-কে terminated করার জন্য সর্বশেষে সেমিকোলন (;) আছে।

সুতরাং CREATE TABLE হল মূল কী-ওয়ার্ড। কী-ওয়ার্ডটি লেখার পরে<টেবিলের নাম লিখতে হয়। অতঃপর কলামের নাম, ডাটা টাইপ ও সাইজ লেখার পরে কমা (,) ব্যবহার করতে হয়।

উদাহরণ-১: client_master নামক একটি table তৈরি করা যাক, যার structure হল-

 

Column Name Data Type Size
Client_no varchar2 6
Name varchar2 20
Address varchar2 30
City varchar2 15
Pin code number 6
Remark varchar2 60
Bal_due number 10,2

 

টেবিলের কোড:

SQL> create table client master

2 (client no varchar2 (6), name varchar2 (20), address varchar2 (30),

3 city varchar2 (15), pincode number (6), remarks varchar2 (60),

4 baldue number (10, 2);

সফলতার সাথে টেবিল তৈরি হলে এন্টার দেয়ার সাথে সাথে নিচের ম্যাসেজটি আসবে:

Table created.

সত্যিই টেবিলটি হয়েছে কিনা, তা দেখার জন্য নিচের Syntax টি লেখা হয়।

Syntax:

DESCRIBE tablename

 

 

উদাহরণ-২: product_master নামে আরো একটি table তৈরি করা যাক, যার structure হল-

 

Column Name Data Type size
product_no varchar2 6
description varchar2 25
profit_percent number 4,2
unit_measure varchar2 10
qty_no_hand number 8
sell_price number 8,2
cost_price number 8,2

 

টেবিলের কোডঃ

SQL> create table product master

2 (product no varchar2 (6), description varchar2 (25).

3 profit_percent number (4, 2), unit_measure varchar2 (10),

4 qty_no_hand number (8), sell_price number (8, 2),

5 qty price number (8, 2);

খ. Drop statement: টেবিল মুছে ফেলার জন্য DROP স্টেটমেন্ট ব্যবহার করা হয়। এজন্য সিন্ট্যাক্স হলঃ

Syntax:

DROP TABLE table_name

উদাহরণঃ ধরি, Supplier নামের টেবিলটি মুছে ফেলার জন্য নিম্নরূপ কমান্ড প্রয়োগ করে ফলাফল লক্ষ করিঃ

SQL> DROP TABLE Supplier:

গ. Alter statement: কোন টেবিল তৈরি করার পরে বিভিন্ন কারণে তা পরিবর্তন বা সংশোধন করার প্রয়োজন হতে পারে। এ কারণে টেবিলের স্ট্রাকচার পরিবর্তন করার জন্য সাধারণত টেবিলে কোন নতুন কলাম সংযোগ করা যায় কিংবা কোন টেবিলের কলামের বর্তমান ডাটা টাইপকে পরিবর্তন করে মডিফাই করা যায়। এ জন্য Alter স্টেটমেন্ট ব্যবহার করা হয়।

নতুন কলাম যোগ করার সিন্ট্যাক্স হল :

Syntax:

ALTER TABLE table_name ADD

(newcolumn_name datatype(size), newcolumn_name datatype(size),);

উদাহরণ-১ঃ ধরি, Client_master নামক টেবিলে client_tel ও client_fax নামক দু’টি কলাম যোগ করা হবে। প্রথম কলামটির দৈর্ঘ্য হবে ৭ সংখ্যা এবং দ্বিতীয় কলামটির দৈর্ঘ্য হবে ১০ সংখ্যা। এজন্য নিম্নরূপ কমান্ড প্রয়োগ করে ফলাফল লক্ষ করি:

 

 

লক্ষ করঃ দু’টি নতুন কলাম যুক্ত হয়েছে।

টেবিলের কলাম-এর বর্তমান ডাটা টাইপকে পরিবর্তন করে মডিফাই করা যায়। তার জন্য সিন্ট্যাক্স হলঃ

Syntax:

ALTER TABLE table_name

MODIFY(columnname newdatatype(newsize));

উদাহরণঃ ধরি, Client_master নামক টেবিলে client_fax নামক কলামে বর্তমান ডাটা টাইপকে Varchar2 এবং বর্তমান দৈর্ঘ্য ১০ কে

পরিবর্তন করে ১৫ দ্বারা পরিবর্তন করা যায়। এজন্য নিম্নরূপ কমান্ড প্রয়োগ করে ফলাফল লক্ষ করি :

SQL> Alter table client_master

2 Modify (client fax varchar2 (15));

এবং

 

 

লক্ষ করলে দেখা যাচ্ছে যে, client_master টেবিলটির client_fax নামক কলাম পরিবর্তিত হয়েছে, যা তীরচিহ্ন দ্বায়া চিহ্নিত করা হয়েছে।

ঘ. Rename statement : RENAME স্টেটমেন্ট দ্বারা টেবিলের নাম পরিবর্তন করা যায়। তার জন্য সিন্ট্যাক্স হলঃ

Syntax:

RENAME old_tablename TO new_tablename;

উদাহরণঃ ধরি, Client_master নামের টেবিলকে Client_master! নামে পরিবর্তন করি। এজন্য নিম্নরূপ কমান্ড প্রয়োগ করে ফলাফল

লক্ষ করিঃ

SQL> Rename client_master to client_master 1: Table renamed.

 

 

উপরে চিহ্নিত টেবিলই পরিবর্তিত টেবিল।

ঙ. ইন্টিগ্রিটি কন্সট্রেইন্ট (Integrity Constraint) : ডাটাবেসে প্রবেশকৃত বা এন্ট্রিকৃত ডাটা কী সঠিক (accurate)? বৈধ (valid)? সঙ্গতিপূর্ণ (Consistent)? ইত্যাদি স্পেসিফাই বা নিদিষ্ট করার জন্য প্রয়োজনীয় কমান্ডসমূহ SQL এর এ অংশে অন্তর্ভুক্ত থাকে। এ জাতীয় কমান্ডের মাধ্যমে বাধ্যবাধকতা প্রয়োগ করে ডাটাবেসে ডাটা সংরক্ষণও করা যায়।

যেমন- কোন ব্যাংক অ্যাকাউন্ট থেকে ক্রেডিট/ডেবিট কার্ডের মাধ্যমে একবারে সর্বোচ্চ ৫০,০০০ টাকা চেয়ে বেশি উত্তোলন করা যাবে না এবং অ্যাকাউন্টে ৫,০০০/- টাকার নিচে থাকলে কোন টাকা উত্তোলন করা যাবে না।
ডাটা ইন্টিগ্রিটিকে তিন ভাগে ভাগ করা যায়-

ক. এন্টিটি ইন্টিগ্রিটি (Entity Integrity)

খ. ডোমেইন ইন্টিগ্রিটি (Domain Integrity)

গ. রেফারেন্সিয়াল ইন্টিগ্রিটি (Referential Integrity)।

(ক) এনটিটি ইন্টিগ্রিটি (Entity Integrity): একই টেবিলে একই ধরনের দু’টি রো প্রবেশের অনুমতি বা অনুমোদন না করাই Entity Integrity

খ) ডোমেইন ইন্টিগ্রিটি (Domain Integrity): রেস্ট্রিকটেড (restricted) ডাটাকে পূর্বেই ডাটা টাইপ নির্দিষ্ট করাই ডোমেইন ইন্টিগ্রিটি।

সুতরাং, ডোমেন কনস্ট্রেইন্ট হল এমন একটি চেকিং (checking) ব্যবস্থা, যার মাধ্যমে কোন নির্দিষ্ট ডোমেন-এ ডাটা ভ্যালু এন্ট্রি করার সময় পরীক্ষা করে দেখা হয় যে, এ ভ্যালুটি এ ডোমেনের অ্যাট্রিবিউটকে এসোসিয়েট করে কিনা অথবা এ ভ্যালুটিকে এ ডোমেনের অ্যাট্রিবিউট সমর্থন করে কিনা। কোন কোন ক্ষেত্রে এ বিষয়টি অতি সহজ আবার কোন কোন ক্ষেত্রে এটি নির্ণয় করা খুব দুষ্কর, যেমন- customer name branch_name উভয়ই ক্যারেকটার ডাটা।

অতএব, পরস্পরের মধ্যে ডোমেইন পরিবর্তন হলেও তা নির্ণয় করা যাবে না। কিন্তু যদি কোন অ্যাট্রিবিউটের নাম hourly_wage হয় এবং তার ডোমেন-এ 4.00 এর বেশি এন্ট্রি করার অনুমতি না থাকে, তবে এটি পরীক্ষা করা তেমন কঠিন নয়। এক্ষেত্রে ডোমেন পরীক্ষার জন্যে check clause ব্যবহার করা হয়।

ডাটাবেস টেবিলে ডাটাকে প্রবেশ, সংরক্ষণ, ডিলিটিং, পরিবর্তন, ম্যানিপুলেট ইত্যাদি করার জন্য Domain constraint এর চারটি অংশ বা ক্লোজ রয়েছে, যথা-

উদাহরণ:

নতুন ডোমেইনকে ডিফাইন করার জন্য Create Domain clause ব্যবহার করা হয়, যেমন-

Create Domain Takas numeric (10, 3)

Create Domain Dollars numeric (10, 3)

Taka এবং Dollar ডোমেইনের জন্য নিউমেরিক টাইপের মোট ১০টি ডিজিট ব্যবহার করা যাবে, যাদের মধ্যে দশমিকের পরে ৩টি ডিজিট থাকবে।

(গ) রেফারেন্সিয়াল ইন্টিগ্রিটি (Referential Integrity): একটি টেবিলের একটি রো’য়ের মত অন্য আরেকটি টেবিলের একই ধরনের রো এবং একই ধরনের ডাটা প্রবেশ করানোই রেফারেন্সিয়াল ইন্টিগ্রিটি (Referential Integrity), যেমন- কাস্টমারের জন্য Customer ID নামক রোটি।

অতএব, রেফারেন্সিয়াল ইন্টিগ্রিটি হল ডাটার একটি বৈশিষ্ট্য বা property, যা কোন একটি রিলেশন ডাটাবেসের (টেবিলের) একটি এট্রিবিউট (কলাম) এর প্রত্যেকটি ভ্যালুকে যাচাই-বাছাই (satisfied and requires) করে অন্য আরেকটি ভিন্ন কিংবা একই রিলেশনের অ্যাট্রিবিউটের ভ্যালুতে অবস্থান করে। অর্থাৎ যে নিয়মের কারণে দুই বা ততোধিক রিলেশনশীপের টেবিলের মধ্যকার রেকর্ডসমূহ যৌগপদিকরণ অবস্থায় অবস্থান, তাকে রেফারেন্সিয়াল ইস্ট্রিগ্রিটি বা রেফারেন্সিয়াল ইন্টিগ্রিটি কন্সট্রেইন্ট বলে।

রেফারেন্সসিয়াল ইন্টিগ্রিটিতে দু’টি key-এর কমবিনেশন থাকবে; যার একটি হল Primary key, যেটি অবস্থান করবে Master বা মেইন টেবিলে আর অন্যটি হল Foreign key, যা annex বা সংযোজিত টেবিলে অবস্থান করবে।

উদাহরণঃ

একটি Customer নামক টেবিল তৈরি করি, যেখানে cname কে primary key হিসাবে declare করি।

create table customer

primary key (cname))

Branch নামক আরো একটি টেবিল তৈরি করি, যেখানে bname কে primary key হিসাবে declare করি।

account নামক আরো একটি টেবিল তৈরি করি, যেখানে account #-কে primary key হিসাবে declare করি এবং bname-কে। Branch টেবিল থেকে রেফারেন্স হিসাবে Foreign key হিসাবে declare করি।

depositor নামক আরো একটি টেবিল তৈরি করি, যেখানে customer এবং account টেবিল থেকে cname এবং account# কে Foreign key হিসাবে রেফারেন্স করি।

২. Data Manipulation Language (DML) : যে ডাটাবেস ল্যাংগুয়েজ এর মাধ্যমে রিলেশনাল ডাটাবেসে রিলেশনাল অ্যালজেবরা এবং টুপল রিলেশনাল ক্যালকুলাস এর উপর ভিত্তি করে প্রতিষ্ঠিত একটি কুয়েরি ল্যাংগুয়েজ (DML includes a Query language based on both the relational algebra and the tuple relational calculus) ব্যবহৃত হয়, যার মাধ্যমে রিট্রিভ, ইনসার্ট, ডিলিট, মডিফাই ইত্যাদি অপারেশ করা হয় এবং এর জন্য প্রয়োজনীয় কমান্ডসমূহ সরবরাহ করে থাকে, তাকে ডাটা ম্যানিপুলেশন
ল্যাংগুয়েজ বলে।

ব্যবহৃত কমান্ডসমূহঃ

ক. Insert Statement

খ. Update statement

গ. Delete statement

ঘ. Truncate statement

ঙ. Merge statement

ক. Insert Statement : ডাটাবেসের টেবিলে সরাসরি টাইপ করে ডাটা ইনপুট করতে INSERT স্টেটমেন্ট ব্যবহৃত হয়

INSERT এর সাথে INTO ব্যবহৃত হয়। স্টেটমেন্ট এর Syntax নিম্নরূপ।

Syntax:

INSERT INTO table_name

(column_name, column_name)

VALUES (expression, expression);

উদাহরণঃ ধরি Client_master টেবিলের নিম্নোক্ত কলামসমূহে ডাটা ইনপুট করি-

 

Column Name Value
Client_no C02000
Name Smriti
Address
H-16, Thana line Halishahar
City Chittagong
Pincode 400057
Remark Elisted

 

রেকর্ড ইনপুট করার জন্য নিম্নোক্তভাবে কোড লেখা যায়-

SQL> INSERT INTO client_master

2 (client_on, name, address, city,

3 pincode, renarks)

4 Values (‘C02000’, ‘Smriti’,

5 ‘H-16, thana line halishahar’,

6 ‘Chittagong’, 400057, ‘Enlisted’);

কোন টেবিল থেকে Existing টেবিলে ডাটা ইনপুট করানো যায়। এক্ষেত্রে সিন্ট্যাক্সটি নিম্নরূপ-

Syntax:

INSERT INTO tablename

SELECT columnname, Columnname.

FROM tablename;

খ. Update Statement : টেবিলের এক বা একাধিক রো এর কোন কলাম বা কলামসমূহের ভ্যালু আপডেট করার প্রয়োজন হয়। টেবিলের রেকর্ড কোন ভ্যালু দ্বারা আপডেট করার জন্য UPDATE স্টেটমেন্ট ব্যবহার করা হয়। যে ভ্যালু দ্বারা কলাম আপডেট করা হবে, তা Set ক্লোজের সাথে উল্লেখ করতে হয়। UPDATE স্টেটমেন্ট দ্বারা নিম্নোক্ত ২টি কাজ করা যায়-

টেবিলের সকল রো আপডেট করার সিন্ট্যাক্স নিম্নরূপঃ

Syntax:

UPDATE tablename

SET columnname=expression, columnname=expression;

শর্তসাপেক্ষে কতিপয় রো আপডেট করার Syntax:

UPDATE schame.table

SET column=value

WHERE condition;

উদাহরণঃ ধরি, Client_master টেবিলে সকল ক্লায়েন্টের bal_due কলাম থেকে ৫০০ টাকা কমিশন দেয়া হবে। এজন্য bal_due কলামটি আপডেট করা প্রয়োজন। শুরুতে আগে bal_due এর পরিমাণ দেখে নেয়ার জন্য নিচের কোড এবং ফলাফল তাত্ত্বিক অংশ
লক্ষ করি:

 

 

এবার কলামটি আপডেট করার জন্য নিম্নরূপ কমান্ড প্রয়োগ করে ফলাফল লক্ষ করি :

 

 

গ. Delete Statement : ডাটাবেসের রেকর্ড বা টেবিল মুছে ফেলার জন্য Delete কমান্ডটি ব্যবহৃত হয়। এজন্য সিন্ট্যাক্সটি নিম্নরূপ:

Syntax:

DELETE FROM tablename;

উদাহরণ-১ : Supplier table থেকে সকল রেকর্ড মুছে ফেলার জন্য কমান্ড এবং ফলাফল লক্ষ্য করি-

SQL> Delete From supplier;

2 rows deleted.

কোন টেবিল থেকে শর্তসাপেক্ষে এক বা একাধিক রেকর্ড মুছে ফেলতেও Delete কমান্ডটি ব্যবহৃত হয়। এজন্য সিন্ট্যাক্সটি হচ্ছে ৪

Syntax:

DELETE FROM tablename

WHERE search_condition;

উদাহরণ-২ঃ যে সকল Salesman-গণ ১০০ ডলারের কম কমিশন অর্জন করেছে, তাদেরকে Emp টেবিল থেকে মুছে ফলদ
জন্য নিচের মতো কমান্ড প্রয়োগ করে ফলাফল লক্ষ করি-

SQL> Delete From emp

2 where comm<100;

1 row deleted.

ঘ. Truncate Statement: কোন টেবিল থেকে খুব দ্রুতভাবে সকল ডাটা মুছে ফেলার জন্য এ স্টেটমেন্টটি ব্যবহৃত হয়।

ঙ. Merge Statement : সাধারণত একাধিক টেবিল থেকে ডাটাগুলোকে একত্র করার জন্য এ কমান্ডটি ব্যবহৃত হয়। এটি Insert এবং Update কমান্ডকে একত্র (Combine) করে থাকে। এ জন্য একে মাঝে মাঝে “Upsert”-ও বলা হয়।

ডাটা ডিকশনারির সংজ্ঞা (Definition data dictionary)

ডাটাবেসের ডিজাইন বা কাঠামোকে বলে ডাটাবেস স্কীমা DDL (Data definition language)-এর সাহায্যে এ স্কীমারে ডিজাইন বা বর্ণনা করা হয়। অর্থাৎ DDL বা ডাটা ডেফিনিশন এর স্টেটমেন্টসমূহের সাহায্যে স্কীমাকে ডিজাইন বা বর্ণনা করা হয়। উক্ত DDL এর স্টেটমেন্টসমূহকে কম্পাইলেশন করার পর একসেট টেবিল পাওয়া যায় এবং এ টেবিলগুলোকে একটি বিশেষ বা নির্দিষ্ট ফাইলে জমা রাখা হয়। এ বিশেষ ফাইলকেই ডাটা ডিকশনারি (Data Dictionary) বলা হয়। এটি মেটা ডাটা (Meta data) অর্থাৎ ডাটা সম্পর্কিত ডাটা (data about data) দ্বারা গঠিত।

ডাটা ডিকশনারি একটি বিশেষ উদ্দেশ্যে ব্যবহৃত হয়। আর তা হল ডাটাবেসের কন্টেন্টকে বর্ণনা করা। ডাটাবেস ম্যানেজমেন্ট সিস্টেমে সরাসরি ডাটা ডিকশনারি হতে ডাটাকে অ্যাকসেস বা মডিফিকেশন বা আপডেট করা যায় না বরং access এবং update এর
কার্যক্রম ডাটাবেস স্বয়ংক্রিয়ভাবে করে থাকে।

সুতরাং, ডাটাবেস সিস্টেমে ডাটাকে পরিবর্তনের উদ্দেশ্যে Read বা write করা হয়। তখন তা পরিবর্তনের পূর্বেই ডাটাবেস প্রথমে ডাটা ডিকশনারির সাথে পরামর্শ করে। কেননা ডাটাবেসকে রীড, রাইট, অ্যাকসেস কিংবা আপডেট এর কার্যক্রম নিজেকে সম্পন্ন করতে হয়। অতএব, ডাটা ডিকশনারি সমর্থন করলেই ডাটাবেস পরিবর্তনের অপারেশন সম্পন্ন করে।

উদাহরণঃ ইউজার-ইন্টারফেস সম্বলিত একটি software-এর ডাটা ডিকশনারির অংশটুকু চিত্রাকারে নিচে দেয়া হলঃ

 

চিত্রঃ ডাটা ডিকশনারি

 

আরও দেখুনঃ

Exit mobile version