SQL SELECT Statement (এসকিউএল বিবৃতি নির্বাচন):

SQL SELECT Statement (এসকিউএল বিবৃতি নির্বাচন):

Article By
Fazle Rabbi
B.Sc in CSE at PSTU

SELECT স্টেটমেন্ট একটি ডাটাবেস থেকে তথ্য নির্বাচন করতে ব্যবহার করা হয়।

The SQL SELECT Statement:
SELECT স্টেটমেন্ট একটি ডাটাবেস থেকে তথ্য নির্বাচন করতে ব্যবহার করা হয়।
এর ফল টেবিলের মধ্যে সংরক্ষিত হয়, যাকে রেজাল্ট সেট বলে।

SQL SELECT Syntax (এসকিউএল নির্বাচন সিনট্যাক্স):

SELECT column_name,column_name
FROM table_name;
এবং
SELECT * FROM table_name;

Demo Database(ডেমো ডাটাবেস):
এই টিউটোরিয়ালে আমরা সুপরিচিত প্রতিলিপি নমুনা ডাটাবেস ব্যবহার করব।
নীচে “Customers” টেবিল থেকে selection বা নির্বাচন দেখানো হয়েছে:

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
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

SELECT Column Example(নির্বাচন কলাম উদাহরণ):
নিম্নোক্ত SQL বিবৃতি “Customers” টেবিল থেকে “CustomerName” এবং “City” কলাম কিভাবে SELECT বা নির্বাচন করতে হয় তার একটা উদাহরণ দেখানো হল:

SELECT CustomerName,City FROM Customers;

SELECT * Example:
নিম্নোক্ত SQL বিবৃতি “Customers” টেবিল থেকে সব কলাম নির্বাচন করবে:

SELECT * FROM Customers;

Navigation in a Result-set(রেজাল্ট সেটে ন্যাভিগেশন):
অধিকাংশ ডাটাবেস সফ্টওয়্যার সিস্টেম রেজাল্ট সেটে ন্যাভিগেশন অনুমতি দেয় নিন্মক্ত প্রোগ্রামিং ফাংশন বাবহারের মধ্যমে,
উদাহরন্সরুপঃ Move-To-First-Record, Get-Record-Content, Move-To-Next-Record, ইত্যাদি।

প্রোগ্রামিং ফাংশনগুলো এই টিউটোরিয়াল এর অংশ নয়. ফাংশান কলের সঙ্গে তথ্য অ্যাক্সেস সম্পর্কে জানতে, আমাদের এএসপি টিউটোরিয়াল বা আমাদের পিএইচপি টিউটোরিয়াল অনুগ্রহ করে পরিদর্শন করুন.

SQL কি? Introduction to SQL

SQL কি?

SQL কে আমরা Structured Query Language বলি। সাধারণত আমরা একে সংক্ষেপে SQL বলি। এসকিউএল একটি তথ্যভান্ডারের সঙ্গে যোগাযোগ করতে ব্যবহার করা হয়। ডেটাবেসের বেশিরভাগ কাজ এসকিউয়েল স্টেটমেন্ট এর দ্বারা করা যায়। ANSI (আমেরিকান ন্যাশনাল স্ট্যান্ডার্ড ইনস্টিটিউট) মতে, এটি রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম জন্য আদর্শ ভাষা। এসকিউএল স্টেটমেন্ট কোন ডেটাবেস থেকে তথ্য একটি ডাটাবেসের উপর আপডেট করা কর্ম সঞ্চালন।

এসকিউয়েল দিয়ে কি কি করা যায়ঃ

১। নতুন একটা ডেটাবেস তৈরী করা যায়।
২। নতুন টেবিল তৈরী করা যায়।
৩। Query করা যায়।
৪। ডেটাবেস থেকে ডেটা তুলে আনা যায়।
৫। ডেটাবেসে নতুন রেকর্ড ঢুকানো যায়।
৬। রেকর্ড আপডেট করা যায় ইত্যাদি।

কিভাবে আপনার ওয়েব সাইটের এ এসকিউএল ব্যবহার করবেনঃ

কোন ডেটাবেস থেকে তথ্য প্রদর্শন এমন একটি ওয়েব সাইট তৈরি করার জন্য, আপনাকে করতে হবে-

১। একটি RDBMS ডাটাবেস প্রোগ্রাম (অর্থাৎ মাইক্রোসফট এক্সেস, এসকিউএল সার্ভার, মাইএসকিউএল)
২। পিএইচপি বা এএসপি মত একটি সার্ভার সাইড স্ক্রিপ্টিং ভাষা ব্যবহার করা।
৩। HTML / CSS এর ব্যবহার করা।

ধন্যবাদ।

এসকিউএল টিউটোরিয়াল . SQL Tutorial

এসকিউএল টিউটোরিয়াল
Sheikh Mahfuzur Rahman

এসকিউএল(SQL) হলো ডাটাবেজগুলোতে প্রবেশ বা অ্যাক্সেস করার জন্য একটি প্রোগ্রামিং ভাষা। যারা ওয়েব ডেভলাপার হতে চান তাদের জন্য এসকিউএল একটি অত্যন্ত গুরুত্বপূর্ণ ল্যাঙ্গুয়েজ। আমাদের টিউটোরিয়ালগুলো আপনাকে এসকিউএল এর যথাযথ ব্যবহার শেখাবে যাতে আপনি এই ভাষাটি ব্যবহার করে মাইএসকিউএল(MySQL), এসকিউএল সার্ভার(SQL Server), মাইক্রোসফট অ্যাক্সেস(Access), ওরাকল(Oracle), সিবেইজ(SyBase), ডিবিটু(DB2) এবং অন্যান্য ডাটাবেজ সিস্টেমে প্রবেশ এবং ডাটা মেন্যুপিউলেট করতে পারেন।

প্রত্যেক অধ্যায়ের উদাহরণসমূহঃ
আমাদের অনলাইন এসকিউএল এডিটরের মাধ্যমে আপনি এসকিউএল স্টেইটমেন্ট এডিট করতে পারবেন এবং একটি বাটনে ক্লিক করে তার ফলাফল জানতে পারবেন।

এই প্রক্রিয়াটি কিভাবে কাজ করে তা বুঝার জন্য উপরের ট্রাই ইট ইউরসেলফ(Try It Yourself) বাটনে ক্লিক করুন।

এখনই এসকিউএল শেখা শুরু করুন!

এসকিউএল কুইজ টেস্ট
আমাদের সাইটের এসকিউএল কুজ টেস্টে অংশ নিয়ে আপনার এসকিউএল দক্ষতা যাচাই করুন!

এসকিউএল কুইক রেফারেন্স
নিচের লিংকটিতে আছে একটি এসকিউএল কুইক রেফারেন্স। এটি প্রিন্ট করে নিন এবং আপনার সাথে রাখুন!

এসকিউএল ডাটা টাইপ
মাইক্রোসফট অ্যাক্সেস, মাইএসকিউএল এবং এসকিউএল সার্ভার এর ডাটা টাইপ ও রেঞ্জগুলো সম্পর্কে ধারণা পেতে নিচের লিংকে ভিজিট করুন।

তাছাড়া আপনার এসকিউএল দক্ষতার স্বীকৃতি পেতে এবং পেশাগতভাবে সেটিকে কাজে লাগাতে আমাদের অনলাইন পরীক্ষাগুলোতে অংশ নিন!

SQL ইউনিক Constraint . SQL Unique Constraint

SQL ইউনিক Constraint
RIAZ-UL-HAQUE MIAN
ইউনিক Constraint একটি টেবিল এর যেকোনো একটি কলাম এর স্বতন্ত্রতা/ uniqueness কে বুঝায় . টেবিল এর প্রাইমারি কি সেট করলে তা automatically ইউনিক Constraint হয়ে যায়। তাহলে প্রশ্ন হলো ইউনিক Constraint দরকার কি ? কারণ আপনি একটা টেবিল এর একটা মাত্র কলাম কে ই প্রাইমারি কি করতে পারবেন , কিন্ত যদি আপনার একটা টেবিল এ একাধিক কলাম কে ইউনিক করতে হয় তাহলে SQL ইউনিক Constraint ব্যবহার করতে হবে |
টেবিল এর ইউনিক Constraint কে দুই ভাবে সেট করা যায় । প্রথম টি হলো টেবিল তৈরী করার সময় create Table starement ব্যবহার করে আর অন্য টি হলো টেবিল অল্টার করে, অর্থাত একটা টেবিল alrady তৈরী করা আছে তার কোনো একটা কলাম কে alter table statement ব্যবহার করে |
এখন আমরা দেখব টেবিল তৈরী করার সময় কি ভাবে সেট করে |
ধরে নেই আমাদের একটা টেবিল তৈরী করতে হবে যার নাম Persons এবং সেই টেবিল এর একটা কলাম P_Id যাকে আমরা SQL ইউনিক Constraint সেট করব |
SQL Server / Oracle / MS Access queary টি হবে :
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)
)
এই কাজ টি একাধিক কলাম এর জন্য করতে হলে নিচের 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 uc_PersonID UNIQUE (P_Id,LastName)
)

এত্তক্ষন আমরা দেখলাম কিভাবে একটা টেবিল তৈরী করার সময় ইউনিক Constraint
সেট করে। এবার মনে করি Persons টেবিল টি আগে থাকে ই তৈরী করা আছে এখন আমাদের কে P_Id ইউনিক Constraint সেট করতে হবে। এক্ষেত্রে আমরা অল্টার টেবিল statement ব্যবহার করব
ALTER TABLE Persons
ADD UNIQUE (P_Id)
সব শেষে দেখব কিভাবে কে ইউনিক Constraint রিমুভ করে । এক্ষেত্রে MySQL ও SQL Server / Oracle / MS Access SQL starement নিচে দিয়া হলো
MySQL ক্ষেত্রে query টি হবে নিন্মরূপ :
ALTER TABLE Persons
DROP INDEX uc_PersonID
আর SQL Server / Oracle / MS Access ক্ষেত্রে quraery টি হবে নিন্মরূপ :
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

SQL ডিফল্ট Constraint

SQL ডিফল্ট Constraint
NAZMA AKHRET
টেবিল এ যখন কোনো নতুন ভ্যালু 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

Title: SQL CREATE INDEX Statement . SQL Create Index Statement

Title: SQL CREATE INDEX Statement
অনুবাদক: ফয়সাল রকি (এম.এ)
Total word count: 247

—————————————————–
CREATE INDEX স্টেটমেন্টের সাহায্যে কোনো table এর index প্রস্তুত করা হয়।
index ব্যবহার করে database application এর সাহায্যে কোন table এর মধ্যকার data কে সহজে খুঁজে বের করা যায়। এক্ষেত্রে পুরো table টি খুঁজতে হয় না, ফলে দ্রুত data খুঁজে পাওয়া যায়।

Indexes
index এর সাহায্যে table এর মধ্যকার data দ্রুত ও দক্ষতার সাথে খুঁজে পাওয়া যায়। এক্ষেত্রে ব্যবহারকারী index কে দেখতে পায় না তবে দ্রুত ও দক্ষতার সাথে search বা query সম্পন্ন হয়।
নোট: যেসকল table এ index যুক্ত করা থাকে সেসকল table কে update করতে index বিহীন table অপেক্ষা বেশি সময় প্রয়োজন হয়, কেননা data এর পাশাপাশি index-ও update হয়।

SQL CREATE INDEX Syntax
একটি table এ নিম্নোক্ত উপায়ে index তৈরি করা যায় (Duplicate values গ্রহণযোগ্য/ থাকতে পারে):
CREATE INDEX index_name
ON table_name (column_name)

SQL CREATE UNIQUE INDEX Syntax
একটি table এ নিম্নোক্ত উপায়ে unique index তৈরি করা যায় (Duplicate values অ্গ্রহণযোগ্য/থাকবে না):
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
উল্লেখ্য যে, ভিন্ন ভিন্ন database এ index তৈরি করার ক্ষেত্রে syntax এর পার্থক্য হতে পারে। তাই আপনার database এর index তৈরি করার সময় syntax টি ভালভাবে check করুন।

CREATE INDEX উদাহরণ
নিম্নোক্ত SQL statement এর সাহায্যে “Persons” table এর “LastName” column এ “PIndex” নামক index তৈরি করা হয়েছে:
CREATE INDEX PIndex
ON Persons (LastName)

যদি আপনি একাধিক column এর মধ্যে index তৈরি করতে চান তাহলে প্রথম বন্ধনী বা parentheses এর মধ্যে comma separated বা কমা’র সাহায্যে আলাদা করে column এর list করতে পারেন।নিম্নে একটি উদাহরণ দেয়া হলো:
CREATE INDEX PIndex
ON Persons (LastName, FirstName)

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

Sheikh Mahfuzur Rahman
Blogger @ BloggersEcho.Com
Bengali Word Count: 155-159

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

ওয়েব ডাটাবেজ ল্যাঙ্গুয়েজ এসকিউএল(SQL) এ কন্সট্রেইন্টগুলো(Constraints) কোন টেবলের ডাটাগুলোর রুলস বা নীতি নির্ধারণে ব্যবহৃত হয়। এক্ষেত্রে ডাটা অ্যাকশান এবং কন্সট্রেইন্টের নীতির মধ্যে সাংঘর্ষিক(Violation) কিছু ঘটলে কন্সট্রেইন্টের কার্যকারিতা বাতিল হয়ে যায়। যখন টেবল তৈরি করা হয় তখন CREATE TABLE স্টেটম্যান্টের ভিতরে অথবা টেবল তৈরি করার পর ALTER TABLE স্টেটম্যান্টের ভিতরে কন্সট্রেইন্টগুলো নির্দিষ্ট করে দেয়া যায়।

এসকিউএল ক্রিয়েট টেবল + কন্সট্রেইন্ট সিন্ট্যাক্স:

CREATE TABLE table_name
(
column_name1 data_type(size) constraint_name,
column_name2 data_type(size) constraint_name,
column_name3 data_type(size) constraint_name,
….
);

এসকিউএল-এ নিচের কন্সট্রেইন্টগুলো রয়েছেঃ

NOT NULL – নির্দেশ করে যে একটি কলাম নাল ভ্যালু ধারণ করতে পারবেনা।

UNIQUE – একটি কলামের প্রত্যেক রো এর ইউনিক ভ্যালু নিশ্চিত করে।

PRIMARY KEY – এটি হলো নট নাল ও উনিক এর সমন্বয়। নিশ্চিত করে যে একটি কলাম অথবা দুই বা আরও বেশী কলাম কম্বিনশনের একটি ইউনিক বা অনন্য পরিচিতি থাকে যা একটি টেবলে কোন নির্দিষ্ট রেকর্ড সহজে এবং দ্রুততার সাথে খুঁজে পেতে সাহাজ্য করে।

FOREIGN KEY – একটি টেবলের ডাটার রেফারেন্সিয়াল ইন্টিগ্রিটি নিশ্চিত করে যাতে অন্য টেবলের ভ্যালুগুলোর সাথে মেলানো যায়।

CHECK – কোন কলামের ভ্যালু যেন একটি নির্দিষ্ট বৈশিষ্ট্য অর্জন করে তা নিশ্চিত করে।

DEFAULT – কলামের জন্য যখন কোন ভ্যালু নির্ধারণ করা হয় হয় না তখন এটি একটি ডিফল্ট ভ্যালু নির্ধারন করে দেয়।

এই ছিল এসকিউএল কস্ট্রেইন্টগুলোর প্রাথমিক ধারনা। পরবর্তী অধ্যায়ে প্রতিটি কন্সট্রেইন্ট সম্পর্কে বিস্তারিতভাবে আলোচনা করা হবে।

SQL এর PRIMARY KEY তথা প্রাথমিক চাবি এর বাধ্যবাদকতা।SQL Primary Key Constraint

SQL এর PRIMARY KEY তথা প্রাথমিক চাবি এর বাধ্যবাদকতা।
ফাছিহুর রহমান।
MSCSE From Royal University of Dhaka.
টেকনিক্যার এক্সপার্ট, বাংলাদেশ নির্বাচন কমিশন সচিবালয়।

SQL এর প্রাথমিক কি এর বাধ্যবাদকতা।
প্রাথমিক কি বাধ্যবাদকতাটি ডাটাবেজের টেবিলের প্রত্যেকটি Record তথা ক্ষেত্রকে নির্দিষ্ট ভাবে চিন্হিত করে। প্রাথমিক কি অবশ্যয় নির্দিষ্ট মান বহন করে। একটি primary key সম্বলীত কলামকে কখন ও খালি রাখা কে গ্রহণ করে না। অধিকাংশ টেবিলগুলোতে একটি primary key থাকে এবং প্রত্যেক টা টেবিলে শুধুমাত্র একটি primary key থাকে।
SQL এ একটি টেবিল তৈরীতে primary key এর বাধ্যবাদকতা।
নিন্মোক্ত SQL এ Persons টেবিল তৈরীতে P_Id কলামকে primary key হিসেবে তৈরী করা হয়েছে।
MySQL এ PRIMARY KEY তৈরী করার উদাহরণ।
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)
)
উক্ত Persons টেবিলে P_Id কলামকে PRIMARY KEY তৈরী করা হয়েছে।
SQL Server / Oracle / MS Access: এ PRIMARY KEY তৈরী করার উদাহরণ।
CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
উক্ত Persons টেবিলে P_Id কলামকে PRIMARY KEY তৈরী করা হয়েছে।
PRIMARY KEY এর বাধ্যবাদকতার নামকরণ এবং একাধিক কলামে PRIMARY KEY কে নির্দিষ্ট করার জন্য নিন্মোক্ত SQL নিয়মঃ
MySQL / SQL Server / Oracle / MS Access: এ একাধিক কলামে PRIMARY KEY তৈরী করার উদাহরণ।
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)
)
বিঃদঃ- উক্ত Persons টেবিলে মাত্র pk_PersonID কলাম কে PRIMARY KEY করা হয়েছে তথাপ ও pk_PersonID কলামের মান তথা value কে দুইটি কলামে( P_Id ও LastName) বিভক্ত করা হয়েছে।
SQL একটি তৈরীকৃত টেবিলে PRIMARY KEY এর বাধ্যবাদকতাঃ
একটি তৈরীকৃত টেবিলে P_Id কলামকে PRIMARY KEY এর বাধ্যবাদকতা হিসেবে তৈরী করতে নিন্মোক্ত SQL কমান্ড ব্যবহার করা হয়ঃ
MySQL / SQL Server / Oracle / MS Access: এ ব্যবহার
ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)
PRIMARY KEY এর বাধ্যবাদকতার নামকরণ এবং একাধিক কলামে PRIMARY KEY কে নির্দিষ্ট করার জন্য নিন্মোক্ত SQL নিয়ম ঃ
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

বিঃদঃ- যদি তুমি একটি তৈরীকৃত টেবিল হতে অন্য একটি টেবিল তৈরীতে একটি primary key সংযোগ করতে চাও তবে অবশ্যই primary key হিসেবে ঘোষিত কলামটিকে কিছু না দিয়ে খালী রাখা যাবে না মর্মে উল্লেখ করতে হবে(এটা প্রথম টেবিল তৈরীতে)।
PRIMARY KEY এর বাধ্যবাদকতাকে বাদ দেয়াঃ
একটি PRIMARY KEY এর বাধ্যবাদকতাকে বাদ দিতে হলে নিন্মোক্ত SQL কমান্ড ব্যবহার করতে হয়।
MySQL: এ নিন্মোক্ত কমান্ড
ALTER TABLE Persons
DROP PRIMARY KEY

SQL Server / Oracle / MS Access: এ নিন্মোক্ত কমান্ড
ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

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

এসকিউএল ফরেন কি কন্সট্রেইন্ট
Sheikh Mahfuzur Rahman

একটি টেবলের FOREIGHN KEY অন্য টেবলের PRIMARY KEY এর দিকে নির্দেশ করে। একটি উদাহরণের মাধ্যমে “ফরেন কি” কে ব্যাখ্যা করা যাক। নিচের দুটো টেবলের দিকে লক্ষ্য করুন যার একটি হলো ”Persons” টেবল এবং অন্যটি হলো “Orders” টেবলঃ

The “Persons” table:
P_Id
LastName
FirstName
Address
City
1
Hansen
Ola
Timoteivn 10
Sandnes
2
Svendson
Tove
Borgvn 23
Sandnes
3
Pettersen
Kari
Storgt 20
Stavanger
The “Orders” table:
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” কলাম হলো এই টেবলের প্রাইমারি কি; অন্যদিকে ”Orders” টেবলের “P_Id” কলাম হলো ”Orders” টেবলের ফরেন কি।
কিছু কিছু কার্যক্রম, যেগুলো টেবল থেকে টেবলের যে লিংক রয়েছে তা নষ্ট করে দিতে পারে, বন্ধ করার জন্য FOREIGHN KEY ব্যবহৃত হয়। FOREIGHN KEY কন্সট্রেইন্ট ফরেন কি কলামে ভুল বা ইনভ্যালিড ডাটা প্রবেশ করানোর ক্ষেত্রেও বাধা দেয় কারন এটি শুধুমাত্র সেই ভ্যালুগুলো ধারণ করতে পারবে যা অন্য টেবলের প্রাইমারি কি কলামে সংরক্ষিত রয়েছে।

CREATE TABLE এ এসকিউএল FOREIGHN KEY কন্সট্রেইন্ট
নিচের এসকিউএল সিন্টেক্সটটি ”Orders” টেবল তৈরি করার সময় তার “P_Id” কলামে একটি FOREIGHN 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)
)

FOREIGHN KEY কন্সট্রেইন্টের নামকরন করার জন্য এবং অনেকগুলো কলামে একটি FOREIGHN KEY কন্সট্রেইন্ট সংজ্ঞায়িত করার জন্য নিচের এসকিউএল সিন্টেক্সট ব্যবহার করুনঃ
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)
)

ALTER TABLE এ এসকিউএল FOREIGHN KEY কন্সট্রেইন্ট
যেখানে “Orders” টেবলটি ইতোমধ্যেই তৈরি করা হয়ে গেছে সেক্ষেত্রে “Orders” টেবলের ‘”P_Id” কলামে একটি FOREIGHN KEY” কন্সট্রেইন্ট তৈরি করতে নিচের এসকিউএল’টি ব্যবহার করুনঃ
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

ফরেন কি কন্সট্রেইন্টের নামকরন করার জন্য এবং অনেকগুলো কলামে একটি ফরেন কি কন্সট্রেইন্ট সংজ্ঞায়িত করার জন্য(ALTER TABLE এর ক্ষেত্রে) নিচের এসকিউএল সিন্ট্যাক্সট ব্যবহার করুনঃ
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

একটি ফরেন কি কন্সট্রেইন্ট ড্রপ করার জন্য
একটি FOREIGHN KEY কন্সট্রেইন্ট DROP অর্থাৎ সেটি বাদ দেয়ার জন্য নিচের এসকিউএল’টি ব্যবহার করুনঃ
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

SQL (এসকিউএল) NULL Values(মান): SQL Null Values

SQL (এসকিউএল) NULL Values(মান):
Null value বলতে অনুপস্থিত বা মানহীন data বুঝায় । এর মান কখন শুন্য বা খালি স্ট্রিং
(String) হয় না এবং এই শুন্য বা খালি স্ট্রিং(String) একটি মান প্রকাশ করে কিন্তু আমরা জানি NULL এর কোন মান নেই । NULL এর মান NULL এ গঠিত গাণিতিক ফলাফল দ্বারা নির্ণয় করা হয় । যেমনঃ 10 + NULL = NULL

পদবিন্যাস (Syntax):

SQL> CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);

এখানে NOT NULL মানে কলাম সবসময় একটি সুনির্দিষ্ট মান গ্রহণ করে যার মান দেয়া থাকে । এখানে দুটি কলাম আছে যেখানে আমরা NOT NULL ব্যাবহার করি নাই যার মানে এই কলামগুলো NULL হতে পারে ।
NULL value এমন একটি মান যা কোন রেকর্ড নির্মাণের সময় খালি রাখা হয় ।

যেমনঃ
আপনাকে অবশ্যই NULL value চেক করার সময় হয় IS NULL অথবা IS NOT NULL অপারেটর
ব্যবহার করতে হবে । নিচের টেবিলে CUSTOMERS-এর নিম্নলিখিত বিবরণ রয়েছেঃ

+—-+———-+—–+———–+———-+
| ID | NAME | AGE | ADDRESS | SALARY |
+—-+———-+—–+———–+———-+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | |
| 7 | Muffy | 24 | Indore | |
+—-+———-+—–+———–+———-+

নিম্নলিখিত উদাহরণটি IS NOT NULL অপারেটর:

SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NOT NULL;

যা নিম্নলিখিত ফলাফল প্রকাশ করেঃ

+—-+———-+—–+———–+———-+
| ID | NAME | AGE | ADDRESS | SALARY |
+—-+———-+—–+———–+———-+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
+—-+———-+—–+———–+———-+

নিম্নলিখিত উদাহরণটি IS NULL অপারেটর:

SQL> SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM CUSTOMERS
WHERE SALARY IS NULL;

যা নিম্নলিখিত ফলাফল প্রকাশ করেঃ

+—-+———-+—–+———–+———-+
| ID | NAME | AGE | ADDRESS | SALARY |
+—-+———-+—–+———–+———-+
| 6 | Komal | 22 | MP | |
| 7 | Muffy | 24 | Indore | |
+—-+———-+—–+———–+———-+