SQL (এসকিউএল) FOREIGN KEY কনস্ট্রেইন্টস্. SQL Foreign Key Constraint

SQL (এসকিউএল) FOREIGN KEY কনস্ট্রেইন্টস্

Article By: Protap Chandra

FOREIGN KEY কনস্ট্রেইন্ট ব্যবহার করা যায় টেবিলগুলোর মধ্যে আন্ত:সংযোগ যাতে নষ্ট না হয় তা নিশ্চিত করার জন্য। এছাড়া FOREIGN KEY কনস্ট্রেইন্ট foreign key যুক্ত কলামে অগ্রহণযোগ্য ডাটা ইনপুটে দেয়ার হাত থেকেও ব্যবহারকারীদের বিরত রাখে। কারণ FOREIGN KEY সঙ্গায়িত কলামে কেবল সেই ডাটা ইনপুট দেয়া যাবে যে ডাটা PRIMARY KEY তে আছে।

একটি টেবিলের FOREIGN KEY অন্য টেবিলে PRIMARY KEY এর সংগে সংযুক্ত।

নিচের দু’টি টেবিলের সাহায্যে আমরা FOREIGN KEY সম্পর্কে ধারণা নিব।

প্রথমটি হচ্ছে “Persons” টেবিল:

P_Id

LastName

FirstName

Address

City

1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

দ্বিতীয়টি হচ্ছে “Orders” টেবিল:

O_Id

OrderNo

P_Id

1 77895 3
2 44678 3
3 22456 2
4 24562 1

লক্ষ্য করুন, “Orders” টেবিলের “P_Id” কলাম “Persons” টেবিলের “P_Id” কলাম থেকে এসেছে। একারণে “Persons” টেবিলের “P_Id” কলাম “Persons” টেবিলের PRIMARY KEY.

অন্যদিকে, “Orders” টেবিলের “P_Id” কলাম “Orders” টেবিলের FOREIGN KEY.

নিচের SQL স্টেটমেন্টটি “Orders” টেবিল তৈরী করার সময় “P_Id” কলামটিকে FOREIGN KEY হিসেবে তৈরী করবে।

MySQL এর ক্ষেত্রে:

CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

)

SQL Server / Oracle / MS Access এর ক্ষেত্রে:

CREATE TABLE Orders

(

O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

P_Id int FOREIGN KEY REFERENCES Persons(P_Id)

)

একাধিক কলামে FOREIGN KEY কনস্ট্রেইন্ট তৈরী করতে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:

MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:

CREATE TABLE Orders

(

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)

REFERENCES Persons(P_Id)

)

যদি আগে থেকে তৈরী করা একটি টেবিলের কোনো কলামে FOREIGN KEY কনস্ট্রেইন্ট যোগ করার প্রয়োজন হয় তবে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:

MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:

ALTER TABLE Orders

ADD FOREIGN KEY (P_Id)

REFERENCES Persons(P_Id)

যদি আগে থেকে তৈরী করা একটি টেবিলের FOREIGN KEY তে কোনো নাম যুক্ত করার প্রয়োজন হয়, তবে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:

MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:

ALTER TABLE Orders

ADD CONSTRAINT fk_PerOrders

FOREIGN KEY (P_Id)

REFERENCES Persons(P_Id)

FOREIGN KEY কনস্ট্রেইন্ট মুছে ফেলতে চাইলে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:

MySQL এর ক্ষেত্রে:

ALTER TABLE Orders

DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access ক্ষেত্রে:

ALTER TABLE Orders

DROP CONSTRAINT fk_PerOrders

এসকিউএল চেক কন্সট্রেইন্ট. SQL Check Constraint

এসকিউএল চেক কন্সট্রেইন্ট

এসকিউএল(SQL) কনস্ট্রেইন্টগুলোর(Constraint) মধ্যে অন্যতম হলো CHECK কন্সট্রেইন্ট। CHECK কন্সট্রেইন্ট একটি কলামে রাখার মতো ভ্যালু রেঞ্জকে সীমিত করে দেয়ার জন্য ব্যবহৃত হয়। যদি আপনি একটি কলামে CHECK কন্সট্রেইন্ট সংজ্ঞায়িত করে দেন তাহলে ঐ কলাম শুধুমাত্র নির্দিষ্ট কতগুলো ভ্যালু গ্রহন করতে পারবে। যদি একটি টেবলে CHECK কন্সট্রেইন্ট সংজ্ঞায়িত করে দেয়া হয় তাহলে সেটি নির্দিষ্ট কলামগুলোকে ঐ রো বা সারির অন্য কলামগুলোর ভ্যালু অনুসারে ভ্যালু গ্রহন করার যোগ্যতা সীমিত করে দেয়।

CREATE TABLE এ এসকিউএল CHECK কন্সট্রেইন্টঃ
নিচের এসকিউএল সিন্টেক্সটটি যখন “Persons” টেবল তৈরি করা হয় তখন “P_Id” কলামে একটি চেক কন্সট্রেইন্ট তৈরি করে। CHECK কন্সট্রেইন্টটি নির্ধারিত করে দেয় যে “P_Id” কলাম শুধুমাত্র শূন্য থেকে বড় পূর্ণ সংখ্যা(Integer) অন্তর্ভূক্ত করতে পারবে।

MySQL:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
)

SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

CHECK কন্সট্রেইন্টের নামকরন করার জন্য এবং অনেকগুলো কলামে একটি CHECK কন্সট্রেইন্ট সংজ্ঞায়িত করার জন্য নিচের এসকিউএল সিন্ট্যাক্সট ব্যবহার করুনঃ

MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City=’Sandnes’)
)

ALTER TABLE এ এসকিউএল CHECK কন্সট্রেইন্ট
যখন টেবলটি ইতোমধ্যেই তৈরি করা হয়ে গেছে তখন “P_Id” কলামে CHECK কন্সট্রেইন্ট তৈরি করতে নিচের এসকিএউএল সিন্টেক্সটি ব্যবহার করুনঃ

MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (P_Id>0)

CHECK কন্সট্রেইন্টের নামকরন করার জন্য এবং অনেকগুলো কলামে একটি CHECK কন্সট্রেইন্ট সংজ্ঞায়িত করার জন্য নিচের এসকিউএল সিন্ট্যাক্সট ব্যবহার করুনঃ

MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City=’Sandnes’)

CHECK কন্সট্রেইন্ট ড্রপ(DROP) করার জন্য নিচের এসকিউএলটি ব্যবহার করুনঃ

SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
MySQL:
ALTER TABLE Persons
DROP CHECK chk_Person

SQL প্রাইমারি Constraint . SQL Primary Key Constraint

SQL প্রাইমারি Constraint
RIAZ-UL-HAQUE MIAN
প্রাইমারি Constraint একটি টেবিল এর যেকোনো একটি কলাম এর স্বতন্ত্রতা/ uniqueness কে বুঝায় .
টেবিল এর প্রাইমারি কি অবশই ইউনিক হতে হবে এবং NULL হতে পারবেনা . প্রতিটা টেবিল এ ই একটা প্রাইমারি key থাকা উচীঠ
একটা টেবিল এর একটা মাত্র কলাম কে ই প্রাইমারি কি করতে পারবেন
এখন আমরা দেখব টেবিল তৈরী করার সময় কি ভাবে প্রাইমারি Constraint সেট করে |
ধরে নেই আমাদের একটা টেবিল তৈরী করতে হবে যার নাম Persons এবং সেই টেবিল এর একটা কলাম P_Id যাকে আমরা SQL প্রাইমারি Constraint সেট করব |
SQL Server / Oracle / MS Access queary টি হবে :
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
আর MySQL জন্য হবে :
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)

এই কাজ টি একাধিক কলাম এর জন্য করতে হলে নিচের queary টি লিখতে হবে (MySQL / SQL Server / Oracle / MS Access:)
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
এত্তক্ষন আমরা দেখলাম কিভাবে একটা টেবিল তৈরী করার সময় প্রাইমারি Constraint
সেট করে। এবার মনে করি Persons টেবিল টি আগে থাকে ই তৈরী করা আছে এখন আমাদের কে P_Id প্রাইমারি Constraint সেট করতে হবে। এক্ষেত্রে আমরা অল্টার টেবিল statement ব্যবহার করব
ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
এক্ষেত্রে টেবিল cloumn আগে থেকে ই not NULL করা থাকতে হবে
সব শেষে দেখব কিভাবে কে প্রাইমারি Constraint রিমুভ করে । এক্ষেত্রে MySQL ও SQL Server / Oracle / MS Access SQL starement নিচে দিয়া হলো
MySQL ক্ষেত্রে query টি হবে নিন্মরূপ :
ALTER TABLE Persons
DROP PRIMARY KEY
আর SQL Server / Oracle / MS Access ক্ষেত্রে quraery টি হবে নিন্মরূপ :
ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

SQL default (ডিফল্ট) Constraint . SQL Default Constraint

SQL default (ডিফল্ট) Constraint
RIAZ-UL-HAQUE MIAN
টেবিল এ যখন কোনো নতুন ভ্যালু insert করা হয় তখন কোনো টেবিল এর কোনো ফিল্ড এ ফিক্সড কোনো ভ্যালু সেট করতে হলে default (ডিফল্ট) Constraint ব্যবহার করতে হবে | যখন কোনো নিউ ভ্যালু টেবিল এ insert করা হবে তখন default (ডিফল্ট) Constraint টি row insert সাথে insert হয়ে যাবে |
এখন আমরা দেখব টেবিল তৈরী করার সময় কি ভাবে সেট করে | উধারণ সরূপ আমরা Persons Table এর city (সিটি) কলাম এ সব সময় Dhaka (ঢাকা) সেট করতে চাই সেক্ষেত্রে SQL syntax হবে :
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT ‘Dhaka’
)
default (ডিফল্ট) Constraint এ SQL server function ও ব্যবহার করা যায় যেমন
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
)
এত্তক্ষন আমরা দেখলাম কিভাবে একটা টেবিল তৈরী করার সময় default (ডিফল্ট) Constraint সেট করে। এবার মনে করি Persons টেবিল টি আগে থাকে ই তৈরী করা আছে এখন আমাদের কে city column এর ডিফল্ট ভ্যালু Dhaka (ঢাকা) করতে হবে এক্ষেত্রে আমরা অল্টার টেবিল statement ব্যবহার করব
MySQL:
ALTER TABLE Persons
ALTER City SET DEFAULT ‘SANDNES’
SQL Server / MS Access:
ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT ‘SANDNES’
Oracle:
ALTER TABLE Persons
MODIFY City DEFAULT ‘SANDNES’

সব শেষে দেখব কিভাবে কে default (ডিফল্ট) Constraint রিমুভ করে । এক্ষেত্রে MySQL ও SQL Server / Oracle / MS Access SQL starement নিচে দিয়া হলো
MySQL ক্ষেত্রে query টি হবে নিন্মরূপ :
ALTER TABLE Persons
ALTER City DROP DEFAULT
আর SQL Server / Oracle / MS Access ক্ষেত্রে quraery টি হবে নিন্মরূপ :
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT

SQL (এসকিউএল) ALTER TABLE স্টেটমেন্ট . SQL Alter Table Statement

SQL (এসকিউএল) ALTER TABLE স্টেটমেন্ট

Article By : Protap Chandra

ডাটাবেজে বিদ্যমান একটি টেবিলের পুরাতন ডাটার সঙ্গে নতুন ডাটা যোগ করতে, বর্তমান ডাটা মুছে ফেলতে কিংবা কলামে কোনো ধরনের পরিবর্তন আনতে ALTER TABLE স্টেটমেন্ট ব্যবহার করা হয়।

SQL ALTER TABLE সিনট্যাক্স (Syntax)

ALTER TABLE স্টেটমেন্ট ব্যবহার করে টেবিলে পরিবর্তন আনতে গেলে একেক কাজের জন্য একেক রকম বাক্যরীতি বা সিনট্যাক্স ব্যবহার করা হয়। নিচের উদাহরণগুলো আমাদের এ ব্যাপারে পরিষ্কার ধারণা দেবে।

টেবিলে একটি নতুন কলাম যোগ করতে নিচের সিনট্যাক্স প্রয়োগ করা হয়:

ALTER TABLE table_name

ADD column_name datatype

এখানে table_name বলতে বুঝানো হয়েছে যে টেবিল যোগ করবেন তার নাম। আর column_name হচ্ছে যে কলাম যোগ করা হবে তার নাম। কলামে কোন ধরনের ডাটা সংগ্রহ করা হবে তার প্রকৃতি (varchar, date, number ইত্যাদি) datatype এর স্থলে লেখা হয়।

টেবিল থেকে কোনো কলাম মুছে ফেলতে চাইলে নিচের সিনট্যাক্স প্রয়োগ করতে হবে (এখানে উল্লেখ্য যে, কিছু কিছু ডাটাবেজ সিস্টেমে কলাম মুছে ফেলার সুযোগ থাকে না):

ALTER TABLE table_name

DROP COLUMN column_name

আর টেবিলের কোনো কলামের ডাটাটাইপ পরিবর্তন করতে গেলে ডাটাবেজ ভেদে নিচের সিনট্যাক্সগুলি ব্যবহার করা হয়:

SQL Server / MS Access এর ক্ষেত্রে:

ALTER TABLE table_name

ALTER COLUMN column_name datatype

My SQL / Oracle এর ক্ষেত্রে:

ALTER TABLE table_name

MODIFY COLUMN column_name datatype

Oracle 10G এবং এর পরবর্তী ভার্সনগুলোর ক্ষেত্রে:

ALTER TABLE table_name

MODIFY column_name datatype

Persons নামের নিচের টেবিলটির দিকে খেয়াল করুন:

P_Id

LastName

FirstName

Address

City

1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

টেবিলটিতে ৫টি কলাম আছে। টেবিলটিতে আমরা DateOfBirth নামে একটি নতুন কলাম যোগ করতে চাই। এই কাজ করতে আমরা নিচের SQL স্টেটমেন্টটি ব্যবহার করব:

ALTER TABLE Persons

ADD DateOfBirth date

লক্ষ্য করুন টেবিলে DateOfBirth নামের নতুন যে কলাম যোগ করা হয়েছে তার ডাটাটাইপ হচ্ছে date এবং এই কলামে কেবল তারিখ যোগ করা যাবে। MS Access, MySQL এবং SQL Server এর ডাটাটাইপ সম্পর্কে পূর্ণ ধারণা পেতে Data Types reference লিংকটি ব্রাউজ করতে পারেন।

নতুন কলাম যোগ করার পর Persons টেবিলটির চেহারা এমন হবে:

P_Id

LastName

FirstName

Address

City

DateOfBirth

1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Data Type পরিবর্তনের উদাহরণ:

এখন আমরা Persons টেবিলের DateOfBirth কলামের ডাটাটাইপ পরিবর্তন করব। এজন্য নিচের SQL টেস্টমেন্ট ব্যবহার করতে হবে:

ALTER TABLE Persons

ALTER COLUMN DateOfBirth year

লক্ষ্য করুন DateOfBirth কলামের ডাটাটাইপ এখন year যার ফলে এটি এখন দুই কিংবা চার অঙ্কের ফরম্যাটে year ডাটা ধারণ করবে।

DROP COLUMN স্টেটমেন্টের উদাহরণ:

এখন আমরা Persons টেবিল থেকে DateOfBirth কলামটি মুছে ফেলতে চাই। এজন্য নিচের এসকিউএল স্টেটমেন্টটি প্রয়োগ করব:

ALTER TABLE Persons

DROP COLUMN DateOfBirth

Persons টেবিলটি এবার আগের চেহারায় ফিরে যাবে:

P_Id

LastName

FirstName

Address

City

1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

SQL statement এ ALTER FUNCTION এর বাবহার . SQL Alter Table Statement

নাম-শারিফুল ইসলাম
Job category-Php Coder
বিষয়- SQL statement এ ALTER FUNCTION এর বাবহার
Alter এই statement টি mysql এ বাবহার করা হয় database table এর মধ্যে কিছু ফিল্ড যোগ ,বাদ বা সংযোজন করার জন্য। আসলে কিভাবে করতে হয় তা আমরা একটি টেবিল তৈরি করার মাধমে জানতে পারব এবং কিভাবে সেখানে sql statement বাবহার করব সেই নিয়ম অনুসরন করব। প্রথমে আমরা ব্রাউজার ওপেন করে এড্রেস বারে লিখব localhost সেইখান থেকে phpmyadmin এ ক্লিক করি।উপরের মেনুবার থেকে database এ ক্লিক করি। create database field এর ঘরে টাইপ করি user এবং ডানপাশে create বাটন এ ক্লিক করি। এর মাধমে আমাদের user database তৈরি হয়ে গেল।এখন আমরা persons নামে একটি টেবিল তৈরি করব। সেখানে ৫ টি ফিল্ড তৈরি করব। বামপাছ থেকে user database এ ক্লিক করি। এখন টেবিল তৈরি করার জন্য জাইগা দিবে। টেবিল এর ঘরে লিখি persons এবং column এর ঘরে ৫ লিখি।এই ৫ টি কলাম এ ৫ টি ফিল্ড এর নাম লিখব। এবং তাদের settings গুলো ঠিক করে দিব।
Column1
Name-P_id, auto increment এ তিক দেই
Column2
Name-LastName, type-text, length-50
Column3
Name-FirstName, type-text, length-50
Column4
Name-Address, type-varchar, length-250
Column5
Name-City, type-text, length-50
এবং সবশেষে সেভ button ক্লিক করি। আমাদের database তৈরি হয়ে গেল। এখন আমাদের alter sql statement বাবহার করতে হবে। উপরের মেনু থেকে sql মেনুতে ক্লিক করি একটি textarea বক্স আসবে এখানে আমরা statement লিখব। ধরুন আমরা নতুন একটা ফিল্ড DateofBirth নামে যোগ করব।
বক্স এর মধ্যে আমরা টাইপ করি “ALTER TABLE Persons ADD COLUMN DateofBirth Date”। এবং সবশেষে go বাটন এ ক্লিক করি দেখুন অই নামে নতুন একটি কলাম যোগ হয়েছে।
আমাদের কোন কলাম পরিবরতন করার দরকার পরতে পারে।আমরা আবার আগের মতন বক্স এ টাইপ করি
“ALTER TABLE Persons ALTER COLUMN Birth Date” দেখুন DateofBirth ফিল্ড টি পরিবরতন হয়ে নতুন নাম হয়েছে শুধু Birth.
যদি কোন কলাম বাদ দিতে চাই তার জন্য এই statement বাবহার করব
“ALTER TABLE Persons DROP COLUMN Birth Date” go বাটন এ ক্লিক করার সাথে সাথে দেখুন আমাদের এই কলাম তা বাদ হয়ে গেছে। এই ভাবেই আমাদের SQL statement e এ ALTER Function ব্যবহার করতে হয়।

: SQL Views

Title: SQL Views
অনুবাদক: ফয়সাল রকি (এম.এ)
Total words in the article: 478

SQL এ view বলতে virtual table এর view কে বোঝায়, অর্থাৎ real table কে virtually দেখানো হয়।
কিভাবে view create, update বা delete করা হয় তা এই অধ্যায়ে আলোচনা করা হবে।

SQL CREATE VIEW Statement
SQL statement এর result-set এর উপর ভিত্তি করে virtual table তৈরির মাধ্যমে view দেখানো হয়।
View এর ক্ষেত্রে real table এর মতোই rows এবং columns থাকে। View এর fields গুলো database এর এক বা একাধিক real table হতে নেয়া হয়।
view এবং present করার ক্ষেত্রে যদি একটি মাত্র table হতে data নেয়া হয় তাহলে WHERE ও JOIN এর মতো SQL functions গুলো add করা যাবে।

SQL CREATE VIEW Syntax
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
নোট: view এর মাধ্যমে সবর্দাই হালনাগাদ বা up-to-date data দেখানো হয়। কোনো user যখন SQL statement view এর জন্য query করে তখন database engine ডাটাকে recreate করে দেখায়।

SQL CREATE VIEW Examples
আপনার কাছে যদি Northwind database টি থাকে তাহলে আপনি দেখবেন যে সেখানে by default অনেকগুলো view ইন্সটল রয়েছে।
“Current Product List” View টিতে শুধুমাত্র active product গুলোকে দেখানো হয়, অর্থাৎ যেসকল product active নয় বা পরবর্তীতে discontinue করেছে সেগুলোকে দেখানো হয়নি। নিম্নোক্ত SQL এর সাহায্যে View টি প্রস্তুত করা হয়েছে।
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No

আমরা এই View টি নিম্নোক্তভাবে query করতে পারি।
SELECT * FROM [Current Product List]

Northwind sample database এর অন্য আরেকটি View এর ক্ষেত্রে “Products” table এর যেসকল Product এর unit price গড় বা average unit price এর চেয়ে বেশি সেগুলোকে নিম্নোক্তভাবে দেখানো যায়:
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products)

আমরা এই View টি নিম্নোক্তভাবে query করতে পারি।
SELECT * FROM [Products Above Average Price]

Northwind sample database এর অন্য আরেকটি View এর ক্ষেত্রে প্রত্যেক category তে 1997 সালের মোট বিক্রয় বা total sale এর calculation দেখানো হয়েছে। এখানে উল্লেখ্য যে, এই View এর ডাটাগুলো অন্য আরেকটি View “Product Sales for 1997” হতে নেয়া হয়।
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName

আমরা এই View টি নিম্নোক্তভাবে query করতে পারি।
SELECT * FROM [Category Sales For 1997]
আমরা এই query তে condition যোগ করতে পারি। আমরা শুধূ মাত্র “Beverages” Category এর total sale দেখার জন্য নিম্নোক্তভাবে query করতে পারি।
SELECT * FROM [Category Sales For 1997]
WHERE CategoryName=’Beverages’

SQL Updating a View
নিম্নোক্ত syntax ব্যবহার করে View কে update করা যেতে পারে।

SQL CREATE অথবা REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

এখন যদি আমরা “Current Product List” view এ “Category” column টি যোগ করতে চাই, তাহলে নিম্নোক্ত SQL এর মাধ্যমে View টিকে update করতে হবে।
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Category
FROM Products
WHERE Discontinued=No

SQL Dropping a View
DROP VIEW command এর সাহায্যে কোনো View কে delete করা যায়।
SQL DROP VIEW Syntax
DROP VIEW view_name

SQL (এসকিউএল) CREATE INDEX স্টেটমেন্ট

SQL (এসকিউএল) CREATE INDEX স্টেটমেন্ট
Article By : Protap Chandra

ইনডেক্স শব্দের অর্থ হলো সূচিকরণ। সহজে ও কম সময়ে ডাটা খুঁজে বের করার জন্য ডাটাকে একটি বিশেষ অর্ডারে সাজিয়ে রাখাকে ইনডেক্সিং বলে। টেবিলের ডাটাকে ইনডেক্সিং করতে CREATE INDEX স্টেটমেন্ট ব্যবহার করা হয়। ইনডেক্স করা থাকলে খুব সহজে ডাটা খুঁজে বের করা যায়। ডাটা নির্বাচন করতে ডাটাবেজ অ্যাপ্লিকেশনকে পুরো টেবিল পড়তে হয় না। তবে ডাটাবেজ ব্যবহারকারীরা কিন্তু ইনডেক্স অংশটি দেখতে পায় না।

যে টেবিলে ইনডেক্স করা থাকে সেই টেবিল আপডেট করতে তুলনামূলক বেশি সময় লাগে। কারণ বিদ্যমান ইনডেক্সিংয়েরও আপডেট প্রয়োজন হয়। একারণে, কেবল সেইসব টেবিল এবং কলামে ইনডেক্স করা উচিত যেগুলো হরহামেশা সার্চ করার প্রয়োজন হয়।

এসকিউএল CREATE INDEX স্টেটমেন্ট এর গঠনরীতি:
নিচের স্টেটমেন্টটি একটি টেবিলে ইনডেক্স তৈরী করবে। এটির ক্ষেত্রে duplicate (নকল) ভ্যালুও তৈরী হতে পারে।

CREATE INDEX index_name
ON table_name (column_name)

এসকিউএল CREATE UNIQUE INDEX স্টেটমেন্ট এর গঠনরীতি:
নিচের স্টেটমেন্টটি একটি টেবিলে অনন্য (unique) ইনডেক্স তৈরী করবে। এখানে duplicate ভ্যালু তৈরী হবে না।

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

আরো উল্লেখ করা প্রয়োজন যে, আলাদা আলাদা ডাটাবেজে indexe করার গঠনরীতি বা syntax আলাদা হতে পারে। তাই যে ডাটাবেজ নিয়ে কাজ করছেন সেই ডাটাবেজের ইনডেক্স গঠনরীতি ভালো করে জেনে নিতে হবে।

CREATE INDEX এর উদাহরণ:

ইনডেক্স তৈরী করার সময় ইনডেক্সের একটা নাম দিতে হয়। নিচের SQL স্টেটমেন্টটি “Persons” টেবিলের “LastName” কলামে একটি ইনডেক্স তৈরী করবে, যার নাম হবে “PIndex”.

CREATE INDEX PIndex
ON Persons (LastName)

একাধিক কলামের উপরেও ইনডেক্স তৈরী করা যায়। সেক্ষেত্রে কলামগুলোর নাম বন্ধনীর ভেতর কমা দিয়ে আলাদা করে লিখতে হবে। যেমন:

CREATE INDEX PIndex
ON Persons (LastName, FirstName)

এসকিউএল ফুল আউটার জয়েন কিওয়ার্ড . SQL FULL OUTER JOIN Keyword

এসকিউএল ফুল আউটার জয়েন কিওয়ার্ড
Sheikh Mahfuzur Rahman

FULL OUTER JOIN কিওয়ার্ড বাম দিকের টেবল(table1) এবং ডান দিকের টেবলের(table2) সবগুলো সারিকে ফেরত দেয়। FULL OUTER JOIN কিওয়ার্ড LEFT ও RIGHT উভয় সংযোগ-স্থলকেই মিলিয়ে দেয়।

এসকিউএল FULL OUTER JOIN সিন্টেক্সটঃ
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;

নমুনা ডাটাবেজ
এই টিউটোরিয়ালে আমরা সুপরিচিত নর্থউইন্ড(Northwind) নমুনা ডাটাবেজ ব্যবহার করব। নিচে “Customers” টেবলের একটি অংশকে তুলে ধরা হয়েছেঃ

CustomerID
CustomerName
ContactName
Address
City
PostalCode
Country
1
Alfreds Futterkiste
Maria Anders
Obere Str. 57
Berlin
12209
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Avda. de la Constitución 2222
México D.F.
05021
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mataderos 2312
México D.F.
05023
Mexico

এবং এই অংশটি “Orders” টেবল থেকে নেয়া হয়েছেঃ

OrderID
CustomerID
EmployeeID
OrderDate
ShipperID
10308
2
7
1996-09-18
3
10309
37
3
1996-09-19
1
10310
77
8
1996-09-20
2

এসকিউএল FULL OUTER JOIN এর উদাহরণ
নিচের এসকিউএল স্টেটমেন্টটি সব কাস্টমার এবং সবগুলো অর্ডারকে নির্বাচন করেঃ
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

এই জন্য যে ফলাফল তৈরি হয় তার একটি বাছাইকরা অংশটি ঠিক এরকম দেখাবেঃ

CustomerName
OrderID
Alfreds Futterkiste

Ana Trujillo Emparedados y helados
10308
Antonio Moreno Taquería
10365

10382

10351

লক্ষ্যনীয়ঃ FULL OUTER JOIN কিওয়ার্ড বাম দিকের টেবল(Customers) এবং ডান দিকের টেবলের(Orders) সবগুলো সারিকে ফেরত দিয়েছে। যদি “Customers” টেবলে এমন কিছু সারি থাকে যা “Orders” টেবলের সাথে মিলেনা অথবা “Orders” টেবলের সারিগুলোর কোনটি যদি “Customers” টেবলের সাথে না মিলে তাহলে ঐ রো বা সারিগুলোও লিস্টে চলে আসবে।

SQL (এসকিউএল) Constraints (কনস্‌ট্রেইন্টস্) .

SQL (এসকিউএল) UNIQUE কনস্ট্রেইন্ট

Author: Protap Chandra | sincerely.yours2512[at]gmail.com

UNIQUE অর্থ অনন্য বা অদ্বিতীয়। অর্থাত একই জিনিস দুটি হতে পারবে না। একটি ডাটাবেজ টেবিলে ইউনিক ডাটা স্টোর করা হয় ডাটা সার্চ করার সময় বিভ্রান্তি এড়াতে। যে কলামের ডাটা ইউনিক হিসেবে ঘোষণা করা হবে সেই কলামের একটি রেকর্ডের সঙ্গে অন্য রেকর্ডের সামান্য হলেও তফাত থাকতে হবে।

UNIQUE এবং PRIMARY KEY উভয় কনস্ট্রেইন্ট এক বা একাধিক কলামে অনন্য মান প্রবেশ করানো নিশ্চিত করে। PRIMARY KEY কনস্ট্রেইন্ট স্বয়ংক্রিয়ভাবে ইউনিক মান জমা করানোর নির্দেশ প্রাপ্ত হয়। তবে এটা স্মরণ রাখা প্রয়োজন যে একটি টেবিলে অনেকগুলো কলামে UNIQUE কনস্ট্রেইন্ট ঘোষণা করা যায় কিন্তু প্রতি টেবিল মাত্র একটি PRIMARY KEY কনস্ট্রেইন্ট ধারণ করতে পারে।

টেবিল তৈরীর সময় এসকিউএল UNIQUE কনস্ট্রেইন্ট প্রয়োগ:

ধরা যাক আমরা “Persons” নামের একটি টেবিল তৈরী করছি। “P_Id” কলামে UNIQUE কনস্ট্রেইন্ট ব্যবহার কতে চাইলে নিচের এসকিউএল স্টেটমেন্ট ব্যবহার করতে হবে:

SQL Server / Oracle / MS Access এর ক্ষেত্রে:

CREATE TABLE Persons

(

P_Id int NOT NULL UNIQUE,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255)

)

MySQL এর ক্ষেত্রে:

CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

UNIQUE (P_Id)

)

একাধিক কলামে UNIQUE কনস্ট্রেইন্ট ঘোষণা করতে গেলে নিচের এসকিউএল স্টেটমেন্ট ব্যবহার করতে হবে:

MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:

CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

)

ALTER TABLE কমান্ডের সাথে UNIQUE কনস্ট্রেইন্ট:

ধরা যাক “Persons” টেবিলটি তৈরী করা হয়ে গেছে। তৈরীর সময় UNIQUE কনস্ট্রেইন্ট প্রয়োগ করা হয়নি। এখন সেই কাজটি করতে চাইলে ALTER TABLE কমান্ড দিয়ে সেটি করতে হবে। নিচের স্টেটমেন্ট “P_Id” কলামে UNIQUE কনস্ট্রেইন্ট যুক্ত করবে:

MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:

ALTER TABLE Persons

ADD UNIQUE (P_Id)

নিচের এসকিউএল স্টেটমেন্ট একাধিক কলামে (P_Id এবং LastName) UNIQUE কনস্ট্রেইন্ট যুক্ত করবে:

MySQL / SQL Server / Oracle / MS Access এর ক্ষেত্রে:

ALTER TABLE Persons

ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

UNIQUE কনস্ট্রেইন্ট মুছে ফেলতে চাইলে নিচের SQL স্টেটমেন্ট ব্যবহার করতে হবে:

MySQL এর ক্ষেত্রে:

ALTER TABLE Persons

DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access এর ক্ষেত্রে:

ALTER TABLE Persons

DROP CONSTRAINT uc_PersonID