এসকিউএল টিউটোরিয়াল - SQL Tutorial
এসকিউএল - SQL : রিলেশনাল ডেটাবেজ(Relational Database)-কে এক্সেস করার জন্য SQL একটি স্ট্যান্ডার্ড ভাষা।
রিলেশনাল ডেটাবেজ(relational database) এ তথ্য জমা, পুনরুদ্ধার এবং পরিচালনার জন্য SQL কে ডিজাইন করা হয়েছে।
সুতরাং MySQL, SQL Server, Access, Oracle, Sybase, DB2 ইত্যাদি রিলেশনাল ডেটাবেজ সিস্টেমকে এক্সেস করার জন্য SQL হলো একটি স্টান্ডার্ড ভাষা।
আমাদের এই এসকিউএল টিউটোরিয়ালটিতে SQL এর একেবারে ব্যাসিক থেকে এডভ্যান্স টপিক্স-সমূহও যোগ করেছি। ফলে এই টিউটোরিয়াল শেষে এডভ্যান্স SQL বুঝার জন্য আপনাকে প্রস্তুত করে তুলবে।
উদাহরণ
আমাদের প্রতিটি পরিচ্ছেদে আছে অসংখ্য উদাহরণ সেকশন। আপনি উদাহরণ সেকশনে মাউস নিয়ে গেলে উপরের কোণায় কোড copy
করার একটি অপশন দেখতে পাবেন।
copy
অপশনে মাউস ক্লিক করলে ক্লিপবোর্ডে কোড কপি হবে। কোড অনুশীলনের জন্য আপনি আপনার সার্ভার ওপেন করে copy
করা কোড paste
করতে পারবেন।
SELECT * FROM student_details;
রিলেশনাল ডেটাবেজ(Relational Database) এ তথ্য জমা(store), পুনরুদ্ধার(retrive) এবং পরিচালনার(manipulating) জন্য SQL একটি স্টান্ডার্ড ভাষা।
এসকিউএল কি?(What is SQL? )
এসকিউএল(SQL) হলো স্ট্রাকচার্ড কুয়েরি ল্যাঙ্গুয়েজ(Structured Query Language) যা রিলেশনাল ডেটাবেজে সঞ্চিত ডেটা সংরক্ষণ, পুনরুদ্ধার এবং পরিচালনার জন্য ব্যবহৃত একটি স্টান্ডার্ড ভাষা।
MySQL, SQL Server, Access, Oracle, Sybase ইত্যাদি রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেম-সমূহ(RDBMS) SQL কে স্টান্ডার্ড ভাষা হিসাবে ব্যবহার করে।
- SQL এর পূর্ণরূপঃ Structured Query Language ।
- SQL এর মাধ্যমে আপনি রিলেশনাল ডেটাবেজে এক্সেস করতে পারবেন।
- SQL একটি ANSI(American National Standards Institute) স্ট্যান্ডার্ড।
SQL কি কি করতে পারে?
- SQL ইউজারকে রিলেশনাল ডেটাবেজ ম্যানেজমেন্ট সিস্টেম থেকে ডেটা এক্সেস করতে অনুমতি দেয়।
- SQL ডেটাবেজে কুয়েরি সম্পাদন করতে পারে।
- SQL নতুন ডেটাবেজ তৈরি করতে পারে।
- SQL ডেটাবেজে নতুন টেবিল তৈরি করতে পারে।
- SQL ডেটাবেজ থেকে তথ্য পুনরূদ্ধার করতে পারে।
- SQL ডেটাবেজে তথ্য সংরক্ষন করতে পারে।
- SQL ডেটাবেজে তথ্য হালনাগাদ করতে পারে।
- SQL ডেটাবেজ থেকে তথ্য মুছে ফেলতে পারে।
- SQL ডেটাবেজের মধ্যে তথ্য সংরক্ষণ পদ্ধতি তৈরি করতে পারে।
- SQL ডেটাবেজের ভিউ(view) তৈরি করতে পারে।
- SQL ডেটাবেজে টেবিল, কার্যপ্রনালী এবং ভিউ এর উপর পারমিশন সেট করতে পারে।
- SQL ডেটাবেজে যে কোন কার্য-সম্পাদন করতে পারে।
SQL একটি স্ট্যান্ডার্ড
SQL ভাষা ANSI(American National Standards Institute) স্ট্যান্ডার্ড হওয়া সত্ত্বেও এর কিছু ভিন্ন ভার্সনও রয়েছে।
যাইহোক, ANSI স্ট্যান্ডার্ড মেনে চলার জন্য SQL এর সকল ভার্সন-ই প্রধান প্রধান কমান্ড-সমূহ যেমন- CREATE
, SELECT
, UPDATE
, DELETE
, INSERT
, WHERE
ইত্যাদি সাপোর্ট করে।
বিঃদ্রঃ অধিকাংশ SQL ডেটাবেজ প্রোগ্রামের SQL স্ট্যান্ডার্ড ছাড়াও তাদের নিজস্ব কিছু এক্সটেনশন রয়েছে।
ওয়েব সাইটে SQL এর ব্যবহার
ডেটাবেজ থেকে তথ্য দেখাবে এমন একটি ওয়েব-সাইট তৈরী করতে যা প্রয়োজন হবেঃ
- একটি RDBMS ডেটাবেজ প্রোগ্রাম। যেমন- MS Access, SQL Server, MySQL ইত্যাদি।
- একটি সার্ভার সাইড স্ক্রিপ্টিং ভাষা। যেমন- PHP অথবা ASP
- ডেটাবেজ থেকে যে কোনো তথ্য পেতে আপনাকে SQL(Sql) ব্যবহার করতে হবে।
- এছাড়া ডায়নামিকভাবে তথ্য এক্সেস করতে চাইলে SQL এর সাথে Ajax অথবা Jquery-ও ব্যবহার করতে পারেন।
RDBMS
RDBMS এর পূর্ণরূপঃ Relational Database Management System.
RDBMS হলো SQL এর ভিত্তি এবং সকল মর্ডান ডেটাবেজ সিস্টেমেরও ভিত্তি। যেমন- MS SQL Server, IBM DB2, Oracle, MySQL এবং Microsoft Access।
তথ্য-সমূহ RDBMS ডেটাবেজ এর অবজেক্টে সংরক্ষিত থাকে, আমাদের কাছে এই অবজেক্টগুলো টেবিল নামে পরিচিত। একটি টেবিল সম্মন্ধযুক্ত কিছু তথ্যের(data) সংগ্রহ যা কলাম(field) এবং সারি(tuple/record) নিয়ে গঠিত। আমাদের সকল তথ্য ডেটাবেজের এই কলাম এবং সারির মধ্যেই সংরক্ষিত হয়/থাকে।
SQL গঠনপ্রণালী
ডেটাবেজ টেবিল
একটি ডেটাবেজে প্রায়ই এক বা একাধিক টেবিল থাকে। প্রতিটি টেবিলকেই নির্দিষ্ট নাম দ্বারা শনাক্ত করা হয়। যেমন- "Student_details" অথবা "Student_result"। টেবিলের প্রতিটি সারি তথ্য নিয়ে গঠিত হয়।
উদাহরণ হিসাবে আমরা আমাদের টিউটোরিয়ালে একটি নমুনা ডেটাবেজ ব্যবহার করবো।
উদাহরণস্বরুপঃ নিচের অংশটুকু নমুনা ডেটাবেজের "Student_details" টেবিল থেকে নেওয়া হয়েছেঃ
ক্রমিক নং | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
---|---|---|---|
১০১ | তামজীদ হাসান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০২ | মিনহাজুর রহমান | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০৩ | মোঃ সবুজ হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০৪ | ইয়াসিন হোসেন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
১০৫ | ফরহাদ উদ্দিন | জাতীয় বিশ্ববিদ্যালয় | চাঁদপুর |
উপরের টেবিলটিতে পাঁচটি সারি(প্রতি সারিতে একজন শিক্ষার্থী) এবং চারটি কলাম রয়েছে (ক্রমিক নং, শিক্ষার্থীর নাম, প্রতিষ্ঠানের নাম এবং ঠিকানা) যাহাতে ৫ জন শিক্ষার্থীর সম্পর্কে বিস্তারিত তথ্য রয়েছে।
SQL স্টেটমেন্ট(কমান্ড)
SQL স্টেটমেন্ট(statement) এর মাধ্যমে ডেটাবেজের বেশির ভাগ ক্রিয়াকলাপ সম্পাদিত হয়।
নিচের SQL স্টেটমেন্টটি "Student_details" টেবিল থেকে সকল রেকর্ড সিলেক্ট করবেঃ
উদাহরণ
SELECT * FROM Student_details;
আমাদের এই টিউটোরিয়ালে অধিকাংশ SQL স্টেটমেন্ট পর্যায়ক্রমে তুলে ধরা হয়েছে।
SQL কীওয়ার্ড-সমূহ কেস-সেন্সিটিভ নয়। যেমনঃ select
এবং SELECT
একই অর্থে ব্যবহৃত হয়।
আমাদের এই টিউটোরিয়ালে আমরা SQL কীওয়ার্ড-সমূহকে বড়-হাতের অক্ষরে লিখবো। এর দরুন আমরা SQL কীওয়ার্ড-সমূহকে SQL স্টেটমেন্টের মধ্যে খুব সহজেই শনাক্ত করতে পারবো।
সেমিকোলন(;) এর ব্যবহার
কিছু কিছু ডেটাবেজ সিস্টেমে প্রতিটি SQL স্টেটমেন্টের শেষে একটি সেমিকোলন(;) ব্যবহার করতে হয়।
ডেটাবেজ সিস্টেমে স্টেটমেন্ট-সমূহকে আলাদা করার আদর্শ উপায় হলো সেমিকোলন(;) যা ডেটাবেজ সিস্টেম সার্ভারে একই সাথে একাধিক SQL স্টেটমেন্ট এক্সিকিউট করতে পারে।
এই টিউটোরিয়ালের প্রতিটি SQL স্টেটমেন্টের শেষে আমরা সেমিকোলন ব্যবহার করবো।
সচরাচর ব্যবহৃত SQL কমান্ড-সমূহ
USE
- ডিফল্ট ডেটাবেজ সিলেক্ট করে।DESCRIBE
- ডেটাবেজের টেবিলের গঠন দেখায়।SELECT
- ডেটাবেজ থেকে তথ্য পুনরূদ্ধার(retrieve) করে।UPDATE
- ডেটাবেজের তথ্য আপডেট করে।DELETE
- ডেটাবেজ থেকে তথ্য ডিলেট করে।INSERT INTO
- ডেটাবেজে নতুন তথ্য প্রবেশ করায়।CREATE DATABASE
- নতুন ডেটাবেজ তৈরি করে।ALTER DATABASE
- ডেটাবেজ পরিবর্তন করে।CREATE TABLE
- নতুন টেবিল তৈরি করে।ALTER TABLE
- টেবিল পরিবর্তন করে।DROP TABLE
- টেবিল ডিলেট করে।CREATE INDEX
- ইন্ডেক্স তৈরি করে।DROP INDEX
- ইন্ডেক্স ডিলেট করে।
CREATE DATABASE স্টেটমেন্ট
একটি ডেটাবেজ তৈরি করতে CREATE DATABASE
স্টেটমেন্ট ব্যবহার করা হয়।
SQL CREATE DATABASE সিনট্যাক্স
CREATE DATABASE name_of_database;
SQL CREATE DATABASE উদাহরণ
নিম্নের SQL স্টেটমেন্টটি "student" নামে একটি ডেটাবেজ তৈরি করেঃ
CREATE DATABASE student;
CREATE TABLE
স্টেটমেন্টটি ডেটাবেজে নতুন টেবিল তৈরি করে।
CREATE TABLE স্টেটমেন্ট
ডেটাবেজে নতুন টেবিল তৈরি করতে CREATE TABLE
স্টেটমেন্ট ব্যবহার করা হয়।
একটি টেবিল সাধারণত কলাম এবং সারি নিয়ে গঠিত হয় এবং সনাক্ত করার জন্য প্রতিটি টেবিলের অবশ্যই একটি নাম থাকতে হবে।
SQL CREATE TABLE সিনটেক্স
CREATE TABLE name_of_table(
name_of_column_1 data_type(size),
name_of_column_2 data_type(size),
name_of_column_3 data_type(size),
....
);
"name_of_column" প্যারামিটারটি কলামের নাম ঠিক করে। "data_type" প্যারামিটারটি কলামের ডেটার টাইপ ঠিক করে। যেমন- varchar
, integer
, decimal
, date
, text
ইত্যাদি। "size" প্যারামিটারটি কলামের দৈর্ঘ্য ঠিক করে অর্থাৎ কলামের ডেটা কতটি অক্ষর ধারন করবে তা নির্ধারন করে।
SQL CREATE TABLE উদাহরণ
এখন আমরা "Student_details" নামে একটি টেবিল তৈরি করবো যার মধ্যে ৫টি কলাম থাকবেঃ "id", "roll_number", "student_name", "institute" এবং "address"।
আমরা নিম্নে CREATE TABLE
স্টেটমেন্টটি ব্যবহার করবোঃ
উদাহরণ
CREATE TABLE Student_details(
id int auto_increment,
roll_number varchar(255),
student_name varchar(255),
institute varchar(255),
address varchar(255)
);
"id" কলামের ডেটা টাইপ int
হওয়ায় এটি শুধুমাত্র পূর্ণসংখ্যা জমা রাখবে। "id" এর auto_increment
নিয়ে আমরা পরবর্তীতে আলোচনা করবো। "roll_number", "student_name", "institute" এবং "address" কলাম গুলোর ডেটা টাইপ varchar
হওয়ায় এরা অক্ষর/বর্ণ জমা রাখবে এবং এদের সর্বোচ্চ দৈর্ঘ্য হবে ২৫৫টি বর্ণ।
ফাঁকা "Student_details" টেবিলটি নিম্নের ন্যায় দেখাবেঃ
আইডি নং | রোল নাম্বার | শিক্ষার্থীর নাম | প্রতিষ্ঠানের নাম | ঠিকানা |
---|---|---|---|---|
বিঃদ্রঃ ফাঁকা টেবিলটিতে এখন INSERT INTO
স্টেটমেন্টের মাধ্যমে তথ্য পূর্ণ করা যাবে।
SQL DROP স্টেটমেন্ট
DROP
স্টেটমেন্টটি ব্যবহার করে খুব সহজেই ইনডেক্স, টেবিল এবং ডেটাবেজ ডিলেট করা যায়।
DROP INDEX স্টেটমেন্ট
DROP INDEX
স্টেটমেন্টটি ব্যবহার করে একটি টেবিলের ইনডেক্স ডিলেট করা হয়।
MS Access এর জন্য DROP INDEX সিনট্যাক্স
DROP INDEX name_of_index ON name_of_table
SQL Server এর জন্য DROP INDEX সিনট্যাক্সঃ
DROP INDEX name_of_table.name_of_index
DB2/Oracle এর জন্য DROP INDEX সিনট্যাক্সঃ
DROP INDEX name_of_index
MySQL এর জন্য DROP INDEX সিনট্যাক্সঃ
ALTER TABLE name_of_table DROP INDEX name_of_index
DROP TABLE স্টেটমেন্ট
DROP TABLE
স্টেটমেন্টটি ব্যবহার করে একটি টেবিল ডিলেট করা হয়।
DROP TABLE name_of_table
DROP DATABASE স্টেটমেন্ট
DROP DATABASE
স্টেটমেন্টটি ব্যবহার করে একটি ডেটাবেজ ডিলেট করা হয়।
DROP DATABASE name_of_database
TRUNCATE TABLE স্টেটমেন্ট
যদি আপনার শুধুমাত্র টেবিলের তথ্য-সমূহ ডিলেট করার প্রয়োজন হয় তাহলে আপনি কী করবেন?
সেক্ষেত্রে আপনি TRUNCATE TABLE
স্টেটমেন্টটি ব্যবহার করতে পারেনঃ
TRUNCATE TABLE name_of_table