Learning MySQL Database for beginners (Bangla)

Learning  MySQL Database for beginners  (Bangla)

today I will discuss about Database. this article can be read by all types o people, don't worry.

আপনাদের প্রথমে ডাটাবেস নিয়ে পড়াশুনা করতে আসলে মনে হতে পারে এই ডাটাবেস আবার কি ? ডাটাবেস হল data + base এঁর সমন্বয়ে গঠিত একটি শব্দ । যার বাংলা অর্থ হচ্ছে উপাত্ত + ঘাঁটি । অথবা উপদত্তের সমাবেশ বলতে পারেণ ,

ডাটাবেস সম্পর্কে জানার আগে আপনাকে জানতে হবে ডেটা (data) ও উপাত্ত (information ) এর মধ্যে পার্থক্য কি ?

ধরুন আপনি ইউটিউবে ভিডিও দেখছেন ভিডিও তে কিছু লেখা আসছে ইত্যাদি ইত্যাদি সবই হচ্ছে ডাটা । আর একভাবে যদি বুঝানোর চেষ্টা করি তাহলে । ধরুন একতা সংখ্যা ১৭ । এই ১৭ দিয়ে কিন্তু বলা যাচ্ছে না যে এটা কি অর্থ বুঝাচ্ছে । ১৭ একটি সংখ্যা নাকি কাঁড়ও বয়স । তাহলে সাজানো নয় এমন কিছু ঘটনাকে আমরা ডাটা বলতে পারি । এখন ধরুন ১৭ এঁর পাশাপাশি name="rashedul", age="17", country="BD" . এগুয়াল অবশ্যয় কাঁড়ও কাঁড়ও information . সাজানো বা অর্থবোধক শব্দকে আমরা উপদাত্ত বলে থাকি ।

তাহলে ডাটাবেস কি ? -> ডাটাবেস হল পরস্পর সম্পর্কযুক্ত এক বা একাধিক টেবিল বা ফাইলের সমষ্টি ।

যেমন একটা কলেজের ডাটাবেস এ শুধু কলেজের তথ্যই থাকতে পারবে । এখানে অন্য কিছু যেমন ডাক্তারের তথ্য থাকতে পারবে না । আবার থাকতে পারবে যদি ডাক্তার কলেজের অন্তর্ভুক্ত হয় কোণ কারণে । অন্যথায় হবে না ।

ডাটাবেস কেন ব্যাবহার করব ?

১। দ্রুত ডাটা উপস্থাপন করা সম্ভব ২। সহজে ডাটা খুঁজে পাওয়া সম্ভব ৩। সহজে ডাটা আপডেট করা সম্ভব ৪। সহজে ডাটা ডিলিট করা সম্ভব ৫। ডাটাকে নিরাপদভাবে সংরক্ষণ করা অনেক সহজ ৬। একসাথে অনেক মানুষ ব্যাবহার করতে পারেন

ডাটাবেস এঁর অসুবিধা ?

১। যদি নিরাপত্তা দুর্বল হয় তবে আর্থিকভাবে ক্ষতি হতে পারে । ২। ডাটাবেস পরিচালনার জন্য দক্ষ জনবল প্রয়োজন

ডাটাবেস এঁর প্রকারঃ

সাধারণ ডাটাবেস

রিলেশনাল ডাটাবেস

সাধারণ ডাটাবেস: শুধু এক ধরণের ডাটা সংরক্ষণ করা সম্ভব

রিলেশনাল ডাটাবেসঃ পরস্পর সম্পর্কযুক্ত ফাইলের / টেবিলের সাহায্যে যে ডাটাবেস গঠন করা হয় । যেমন স্টুডেন্ট নামে একটা টেবিল আছে তার সাথে ধরুন এক্সাম রেজাল্ট টেবিলের সম্পর্ক থাকবে

টেবিল সম্পর্কে ধারনা :

row, colcolcol
row
row

ডাটাবেসে কি কি উপাদান থাকে তা এবার জানবঃ

১। filed ২। record ৩। value [field=column/col. record=row]

ফিল্ড ও রেকর্ডের মধ্যে পার্থক্য কি ?

fildrecord
ফিল্ড হল টেবিলের কলামরেকর্ড হল টেবিলের সাড়ী
ফিল্ড দ্বারা পরিপূরণ তথ্য পাওয়া যায় নারেকর্ড দ্বারা পরিপূরণ তথ্য পাওয়া যায়
একটি ফিল্ডে একই ধরণের ডাটা থাকেএকটি রেকর্ডে বিভিন্ন ধরণের ডাটা থাকতে পারে

key ৩ প্রকার ঃ

১। Primary key 🔑 ২। Composite key ৩। foreign key

Primary key 🔑: যে ফিল্ডের সাহায্যে প্রতিটি রেকর্ডকে পৃথক ভাবে খুঁজে বের করা যায় । যেমন: id or roll

Composite key : দুই বা অধিক কি ফিল্ডের মাধ্যমে কম্পজিট কি তৈরি করে প্রতিটি রেকর্ডকে প্রথকভাবে সনাক্ত করা । like findMany({id:1, class:"XI", section:"A", roll:"101"})

foreign key 🔑 : একটি টেবিলের কি যদি অন্য টেবিলের primary কি হিসেবে ব্যাবহার হয় তখন সেই primary কি কে foriegn key বলে ।

database realationship

one to one database realtation: কোণ একটি টেবিলের একটি রেকর্ডের সাথে যখন অন্য টেবিলের একটি রেকর্ডের সম্পর্ক স্থাপন করা হয় ।

one to many database realtation: কোণ একটি টেবিলের একটি রেকর্ডের সাথে যখন অন্য টেবিলের একাধিক রেকর্ডের সম্পর্ক স্থাপন করা হয় ।

many to many database realtation: দুটি টেবিলের মধ্যে যদি একাধিক রেকর্ডের ম্যাচিং থাকে , তখন তাকে many to many database realationship বলে । দুটি টেবিলের প্রাইমারি কি জংশন টেবিলের ফরেন কি হিসেবে ব্যাবহার হবে

sorting and indexing

সর্টিং( sorting):

sorting অর্থ হলে সাজানো । sorting ২ ধরণের ,, ১। ascending (উরধক্রম) ২। descending (অধঃক্রম) । ইহা string or number উডি ক্ষেত্রেই কাজ করবে । string এ ক্ষেত্রে a,b,c...... এভাবে সাজাবে

***মেমো (পরিচয় , সখ, এড্রেস ষ্টোরে করতে ), হাইপারলিঙ্ক (লিঙ্ক), OLE (ছবি অথবা গ্রাফ)ফিল্ডের সর্টিং কাজ করবে না ।

১। ডাটাবেসে সর্টিং করতে গেলে আলাদা ফাইল তৈরি হবে

২। সর্টিং এঁর ফলে ডাটাবেসের মুল ইনডেক্স নাম্বার পরিবর্তন হয়

৩। ডাটাবেসে কোণ ফাইল আপডেট বা ডিলিট করলে সর্টিং ফাইল আপডেট হয় না

৪। রেকর্ডগুলো সাজানোর জন্য তুলনামূলক বেশি সময় প্রয়োজন হয়

৫। সর্টিং এঁ মেমরি বেশি প্রয়োজন হয়

ইন্ডেক্সিং (indexing):

১। ইন্ডেক্সিং হল মুল টেবিল অপরিবর্তিত রেখে ডেটা রেকর্ডগুলো কোণ নির্ধারিত ফিল্ড অনুসারে সাজানো ।

২। ইনডেক্স ফাইলে কোণ লজিকাল অর্ডার থাকবে না । শুধু রেকর্ড থাকেব (like ascending or descending)

৩। ইন্ডেক্সিং এঁর ফলে ডাটাবেসের মুল ইনডেক্স নাম্বার পরিবর্তন হয় না

৪। ডাটাবেসে কোণ ফাইল আপডেট বা ডিলিট করলে অটো আপডেট হয়ে যায় ।

৫। রেকর্ডগুলো সাজানোর জন্য তুলনামূলক কম সময় প্রয়োজন হয় ।

৬। ইন্ডেক্সিং এঁ মেমরি কম প্রয়োজন হয়

database security

আমরা আমাদের ডাটাকে সুরক্ষিত রাখতে আমাদের বিভিন্ন পদক্ষেপ নিতে হয় । তার মধ্যে অন্যতম encryption

encryption হচ্ছে ডেটাকে এক যায়গা থেকে অন্য যায়গার পাঠানোর সময় এমন ভাবে পাঠানো (মুল ফরমেট থেকে অন্য ফর্মেটে) যাতে করে মাঝখান থেকে কেও দেখে যাতে পড়তে না পারে । বা বুঝতে না পারে । ডাটা encrypt করার অনেক পদ্ধতি আছে ।

১। সিজার কোড (যেটা প্রাচীন কোড )

2। DES ( data encryption standard )

৩। IDEA (international data encryption algorithm )

১। সিজার কোড:

এই সিস্টেমকে অনেক সময় শিফট কোডিং বা shift chiper বলা হয় এখানে যা করা হয় তা হলো original latter কে তার আগের বা পড়ের latter দ্বারা পরিবর্তন করা হয় । যেমনঃ

decode Encrypted code :

decode policy

এক্ক্রিপশনের প্রকার:

এক্ক্রিপশন ২ প্রকার

১। গোপন এক্ক্রিপশন বা সিমেন্ত্রিক এক্ক্রিপশন

২। পাবলিক এক্ক্রিপশন বা আসিমান্ত্রিক এক্ক্রিপশন

computer science এ ভবিষ্যতে পড়া লেখা করলে আপনি Cryptography তে এক্ক্রিপশন ডিক্রিপশন সম্পর্কে জানতে পারবেন ।

১। গোপন এক্ক্রিপশন বা সিমেন্ত্রিক এক্ক্রিপশনঃ এই পদ্ধতিতে এক্ক্রিপশনের সময় একয় কি ব্যাবহার করে এক্ক্রিপশন করা হয়

২। পাবলিক এক্ক্রিপশন বা আসিমান্ত্রিক এক্ক্রিপশনঃ এই পদ্ধতিতে এক্ক্রিপশনের সময় একয় কি ব্যাবহার করে এক্ক্রিপশন করা হয় না বা অন্য ধরণের কি ব্যাবহার করা হয় । এক্ক্রিপশনের জন্য এক কি (একে বলা হয় প্রাইমারি কি ) ডিক্রিপশনের জন্য আর এক কি (একে বলা হয় সেকান্ডারি কি )।

database query :

কুয়েরি কি ?

সংরক্ষিত বিপুল পরিমাণ তথ্য থেকে প্রয়োজনীয় তথ্য খুঁজে বের করকে কুয়েরি বলে ।

কুয়েরি প্রকারভেদঃ

বিভিন্ন ধরণের কুয়েরি রয়েছে । ১। সিলেক্ট কুয়েরি ২। প্যাঁরামিটার কুয়েরি ৩। ক্রসট্যাব কুয়েরি ৪। অ্যানম্যাচড কূটেরই ৫। অ্যাকশন কুয়েরি

১। সিলেক্ট কুয়েরিঃ ডেটাবেজের ডেটা টেবিল থেকে ফিল্ড বা কলাম নির্বাচন করে যে কুয়েরি করা হয় ।

২। প্যাঁরামিটার কুয়েরিঃ

৩। ক্রসট্যাব কুয়েরিঃ কুয়েরিকৃত ডাটাকে সামারই বা গ্রুপ আকারে উপস্থাপন করার জন্য যে কুয়েরি পরিচালনা করা হয় ।

৪। অ্যানম্যাচড কুয়েরিঃ কোণ শর্তের উপর ভিত্তি করে একটি টেবিল এঁর রেকর্ড অন্য টেবিলের সাথে সামঞ্জরশ না হলে unmatched ডেটা গুলো খুঁজে বের করার জন্য ।

সহজ ভাষায়ঃ দুটি টেবিলের মধ্যে যখন আপনি compare করে unmatched ডাটা খুঁজের বের কটার চেষ্টা করবেন

৫। অ্যাকশন কুয়েরিঃ কোণ কুয়েরির ফলাফল দিয়ে যখন টেবিলর ডেটাগুলোর কোণ পরিবর্তন সাধন করা হয়

অ্যাকশন কুয়েরি ৪ প্রকার: ১। make table query ২। append query ৩। delete query ৪। update query

১। make table query: ধরুন আপনি কোণ একটা টেবিল থেকে কুয়েরি করে কিছু ডাটা কালেক্ট করে সেগুলো দিয়ে নতুন টেবিল তৈরি করা ।

২। append queryঃ কোণ একটা টেবিল থেকে ডাটা খুঁজে বের করে সেই ডাটা অন্য একটি টেবিলর সাথে জগ করা

৩। delete queryঃ অপ্রয়োজনীয় ডাটা ডিলিট করতে ।

৪। update queryঃ কোণ তথ্য আপডেট করতে ।

কুয়েরি ভাষাঃ

যে ভাষার সাহায্যে কুয়েরি করা হয় , তাকে ক্যুয়েরই ভাষা বলে । ডাটাবেসে বহুল ব্যবহৃত ৩ টি ভাষা হচ্ছেঃ

১। QUEL (query language). ২। QBE (query by example ) ৩। SQL (structured query language)

SQL:

১। Not case sensitive. SELECT/select

২। স্টেটমেন্ট এঁর শেষে (;) দিতে হবে ।

৩।স্টেটমেন্ট ভেঙ্গে একাধিক লাইনে লেখা যাবে ।

SQL statement এঁর প্রকারভেদঃ

DBMS: Database Management System . DBMS একটি সফটওয়্যার যার সাহায্যে আমরা ডাটাবেসকে মেইন্টেইন এবং তৈরি করব । কিছু জনপ্রিয় DBMS হচ্ছে MySQL, Oracle, Sybase, Microsoft access and DB2 etc

আমাদের এখন হাতে কলমে কাজ করার জন্য আমাদের কম্পিউটারে MySQL ডাউনলোড করতে হবে । আমরা অবশ্য তা করব না আমারা কাজটাকে বাইপাস করব xaamp software এঁর সাহায্যে । এঁর মাধ্যমেই আমরা সব কাজ করতে পারব ।

ইন্সটল করা হয়ে গেলে আপনার কাজ হবে সফটওয়্যারটি ওপেন করা । এবং mySql and apache server স্টার্ট করার । করে mySql এঁর স্টার্ট বাটনের পাশে এডমিন নামে একটা বাটন আছে সেখানে ক্লিক করব । তাহলে আমাদের জন্য একটা এডমিন ড্যাশবোর্ড ওপেন হয়ে যাবে । হয়ে গেলে আমাদের কাজ হবে ডাটাবেস তৈরি করা । সেটা আপনি মাউস ক্লিক করে করে করতে পারবেণ কিন্তু আপনি যেহেতু প্রোগ্রামার ট্যাগ লাগিয়েছেন তাই আমি কমান্ডের মাধ্যমেই দেখাব ।

ম্যানুয়ালি মাউস ক্লিক করে ডাটাবেস তৈরি করতে চাইলে এভাবে করবেন ।

পাশেই যে SQL ট্যাবটি আছে সেখানে আমরা কমান্ডের মাধ্যমে ডাটাবেস তৈরি করতে পারব । আমরা সেখানেই চলে যাই

SHOW DATABASES; -- or sow databases. don't worry it's not case sensitive 
-- তার পড় একদম নিচে দেখবেন যে Go নামে একটা বাটন আছে সেখানে ক্লিক করবেন তাহলে আমাদের সকল ডাটাবেস দেখিয়ে দিবে । amazing.... ☺️

CREATE DATABASE learning_portal; -- এন্ড ক্লিক Go
                 -- 👆👆👆👆 এটা ডাটাবেসের নাম 

DROP DATABASE learning_portal; -- to delete or drop database
-- click GO to delete 👆 this database

DESCRIBE database_name -- to describe about table .

আমরা এই যে ডাটাবেস তৈরি করলাম এখন আমারা এখানে ইচ্ছা মত টেবিল তৈরি করতে পারব । এঁর আগে আপনাকে জানতে হবে কিছু ডাটা টাইপ সম্পর্কে ।

numaric data type:

  1. SMALLINT

  2. INT

  3. BIGINT

  4. FLOAT

  5. DOUBLE (M, D)

  6. DECIMAL (M, D)

M হচ্ছে সাইজ (কত ডিজিটের হবে সেটা ), D হচ্ছে দশমিকের পড় কতগুলো ঘর থাকবে

Character data type:

  1. Char(m) 👉 ৮ হাজার ক্যারেক্টার রাখতে পারবে

  2. Varchar(m) 👉 ৮ হাজার ক্যারেক্টার রাখতে পারবে

  3. text

char(m) 👉 আপনি ধরুন ২০ ক্যারেক্টারের একটা নাম ষ্টোর করতে চাচ্ছেন । প্রথম নাম তা আপনার ৫ ক্যারেক্টারের তাহলে যে ২০ ক্যারেক্টারের জায়গা দখল করবে ।

Varchar(m) 👉 আপনি ধরুন ২০ ক্যারেক্টারের একটা নাম ষ্টোর করতে চাচ্ছেন । প্রথম নাম তা আপনার ৫ ক্যারেক্টারের তাহলে যে ২০ ক্যারেক্টারের জায়গা দখল করবে না যে কয়টা ক্যারেক্টার থাকবে সেই কয়েকটা দখল করবে ।

এটাই ২ টার মধ্যে পার্থক্য

Date and time data type:

  1. YEAR(yyyy)

  2. DATE(yyyy-MM-DD)

  3. TIM(HH:MM:SS)

some other data type

  1. BLOB (Binary large object used for image files or large data)

  2. Logical

ডাটাবেসে টেবিল তৈরি ,টেবিল নাম আপডেট এবং ডিলিটঃ

CREATE TABLE table_name(
column_1 data_type(size),
column_2 data_type(size),
column_3 data_type(size)
..........
)
CREATE TABLE table_name(
Roll int(5),
name varchar(20),
id char(50),
gender varchar(50),
GPA double(3,2),
PRIMARY KEY (Roll),
..........
)
-- rename existing table name 
RENAME TABLE table_name to elarning_portal_students
-- delete or drop database table
DROP TABLE table_name

Inserting records on database Table:

--inserting records or data on database table 
INSERT INTO table_name(Roll,name,gender,GPA,id)
VALUES(101,"rashedul","male",5.00,"x8iu-wd9j-dfs0");
-- এটা হল কলামের নাম বলে দিয়ে রেকর্ড insart করা । আপনি চাইলে নাম বলে না দিয়েও কাজ করতে পারবেন 

INSERT INTO  table_name VALUES (value1,value2,value3,value4, ....);
-- এটা করার জন্য অবশ্যয় জানতে হবে যে কিভাবে টেবিল সাজানো আছে বা কার পড়ে কে আছে । 

--একাধিক ডাটা একবারে ইনসার্ট করার পদ্ধতি 
INSERT INTO  table_name VALUES
(value_1_1, value_1_2, value_1_3, value_1_4, ....),
(value_2_1, value_2_2, value_2_3, value_2_4, ....),
(value_3_1, value_3_2, value_3_3, value_4_4, ....),
(..............);

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

এতক্ষণ আমরা দেখলাম DDL 👉 CREATE, ALTER, DROP এখানে মূলত ডাটা নিয়ে কাজ করা হয় না । ডাটা নিয়ে কাজ করা হয় মূলত DML 👉 Data Manipulation language এ

DML 👉 INSERT, SELECT, UPDATE, DELETE

Insert নিয়ে আগেরই দেখেছেন আপনারা । এখন ব্যাকইগুলো দেখব ।

SELECT STATEMENT:

এঁর সাহায্যে টেবিল থেকে প্রয়োজনীয় তথ্য খুঁজে বের করা ।

-- syntax
SELECT column_name FROM table_name
-- to see data by multiple key
SELECT Roll,name,id from table_name
-- to see all column 
SELECT * from table_name

এখন ধরুন আমাদের কলেজে অনেক জেলা থেকে স্টুডেন্ট ভর্তি হয়েছে যেগুলোকে একটা ডাটাবেস আছে সেখানে সবার ডাটা ষ্টোর করা আছে । এখন আমার কথা হল আমাদের সকল স্টুডেন্টরা কোণ কোন জেলা থেকে এসেছে । তবে শর্ত হচ্ছে একই জেলা বার বার আনা যাবে না । কিভাবে ?

  • এবং আর একটা কাজ করতে হবে যে । শুধু প্রথম ৫ টা ডাটা অ্যানতে হবে । বেশি আনা যাবে না ।
-- to avoid duplicate 
SELECT DISTINCT city FROM table_name;

-- to limit database response
SELECT DISTINCT * FROM table_name LIMIT 5; 
                                    👆 -- এটার মাধ্যমে  
SELECT DISTINCT * FROM table_name LIMIT 2,5;-- ২ থেকে ৫ পর্যন্ত দেখাবে ।  

-- আপনার কাজ হবে WHERE নামে একটা কিওয়ার্ড নিয়ে শেখা

Sotring and Orderwise সাজানোঃ

-- sorting by gender
SELECT DISTINCT gender FROM table_name  ORDER BY gender; 
--  select multiple and sorting name and gender
-- note: by default mySQL sorting by asynding
SELECT DISTINCT gender,name,id FROM table_name  ORDER BY name,gender; 

-- sorting by descending 
SELECT DISTINCT gender,name,id FROM table_name  ORDER BY name DESC;

Operators:

Arithmetic operator: + , - , * , / , %

Comparison operator: =, !=, >, >=, < , <= , BETWEEN

logical operator: AND, OR , IN, NOT, LIKE

-- go to SQL tab
SELECT 5+3 -- click Go [Arithmetic operator], try to others method

WHERE clause এঁর সাহায্যে একটি নির্দিষ্ট শর্ত এঁর উপর ভিত্তি করে ডাটা খুঁজতে ব্যাবহার করা হয় ।

-- systax
SELECT column_lists FROM table_name WHERE condition 
-- real example
SELECT gender FROM table_name WHERE age =  20
SELECT gender FROM table_name WHERE age >= 20
SELECT gender FROM table_name WHERE age != 20
SELECT gender FROM table_name WHERE age BETWEEN 101 AND 105 -- ১০১ থেকে ১০৫

SELECT * FROM table_name WHERE age=20 OR city="JP"
SELECT * FROM table_name WHERE age=20 OR city="JP" OR city="DHAKA"
-- এভাবে একাধিক OR না লেখে কাজটা এইভাবে করা যাবে । 
SELECT * FROM table_name WHERE city IN ("JP","DHAKA")
SELECT * FROM table_name WHERE city NOT IN ("JP","DHAKA")
--
SELECT * FROM table_name WHERE age=20 AND city="JP"

------LIKE---------
SELECT * FROM table_name WHERE name LIKE "S%" -- s দিয়ে যেগুলো সুরু হয়েছে 
SELECT * FROM table_name WHERE name LIKE "%S" -- s দিয়ে যেগুলো শেষ হয়েছে 
SELECT * FROM table_name WHERE name LIKE "%S%y%"
SELECT * FROM table_name WHERE name LIKE "%islam%"
SELECT * FROM table_name WHERE name LIKE "_u" -- first character কি আছে যেটা বিষয় না কিন্তু ২য় ক্যারেক্টারে u থাকতে হবে . তবে আপনি চাইলে ২ ক্যারেক্টার গ্যাপ দিয়ে চেক করতে পারবেন এভাবে  SELECT * FROM table_name WHERE name LIKE "__u"
 SELECT * FROM table_name WHERE name LIKE "__u"
 SELECT * FROM table_name WHERE name LIKE "%u_"
------LIKE------

------------AS-------------
SELECT name AS st_name, roll AS ID  FROM table_name -- এলিয়াস করা 
------------AS-------------

SQL constraints

sql contains are used to specific rules for table data

  1. NOT NULL 👉

  2. UNIQUE 👉 does not allow to insert of a duplicate value in a column

  3. PRIMARY KEY 👉 NOT NULL + UNIQUE

  4. CHECK 👉 determines whether the value is valid or not from the logical expression

  5. DEFAULT 👉 while inserting data into a table z, if no value is supplied to a column, then the column gets the value as a DEFAULT value

CREATE TABLE techer (
   name varchar(20) NOT NULL ,
   ID int NOT NULL AUTO_INCREMENT,
   salary double(10,2),
   PRIMARY KEY(ID)
)
---- all data pass ----
INSERT INTO techer(name,id,salary)
VALUES("rashedul",1,10000)
---- id not passed by auto generated ----
INSERT INTO techer(name,salary)
VALUES("rashedul",10000) -- এগুলো না দিলে এরর আসবে । কারণ এগুলা NULL হওয়া যাবে না 

--- default vlaue set 
CREATE TABLE ras(
name varchar(20) NOT NULL DEFAULT("ras_student"),
age int NOT NUll AUTO_INCREMENT ,
)

Update and Delete statement:

--update systax
UPDATE table_name SET column1=value1, column2=value2 WHERE ur_condition

-- update real example 
UPDATE techer SET  salary=100 WHERE name="islam"

--delete syntax
DELETE FROM  table_name ur_condition
--delete real example 
DELETE FROM techer WHERE id=10000

UPPER and LOWER Function:

-- syntax
SELECT UPPER("i am rashedul islam");
SELECT LOWER("I AM RASHEDUL ISLAM")
-- from table 
SELECT UPPER(name) FROM teacher_table
SELECT UPPER(name) AS st_name FROM techer

Others function

-- UPPER(), LOWER(), POW(), CONCAT(), GREATEST(), LEAST(), LOG10(), EXP(), RAND(), TRUNCATE()

------ CONCAT() -------
SELECT CONCAT("welcome","to database article")
SELECT CONCAT("welcome", name) from teacher_table

----- GREATEST() -------
SELECT GREATEST(1,10,2,4,60,20,50,-30,-10,3)
----- LEAST() -------
SELECT LEAST(1,10,2,4,60,20,50,-30,-10,3)
----- LOG() -------
SELECT LOG(20)
----- LOG10() -------
SELECT LOG10(20)
----- PAW() -------
SELECT POW(2,3)
----- TRUNCATE() ----
SELECT TRUNCATE(10.256, 2) -- দশমিকের পড় ২ ঘর দেখাবে 
SELECT TRUNCATE(LOG(2), 2) -- 👆👆👆👆👆👆👆👆👆👆👆👆
--------------- EXP(), RAND() ----------- 
SELECT EXP(3);SELECT RAND(3)

Aggregate Functions in SQL:

Aggregate Functions কে গ্রুপ ফাংশনও বলা হয়ে থাকে । এঁর কাজ কি ? এটা এমন সকল ফাংশন যাটা set of rules নিয়ে কাজ করে । এবং রিটার্ন করবে সিঙ্গেল একটা উত্তর ।

-- AVG(), COUNT(), MAX(), MIN(), SUM()
SELECT COUNT(*) FROM table_name
SELECT MAX(age) FROM table_name
select SUM(id) from table_name
select AVG(salary) from table_name
---
select SUM(id), AVG(salary) FROM table_name

Sub querty (একটা মধ্যে আর একটা কুয়েরি চালানো ):

--syntaz
SELECT * FROM table_name WHERE salary >(SELECT AVG(salary) FROM table_name )

Alter Table

alter table কমান্ড এর সাহায্যে

১। টেবিলে নতুন কলাম যুক্ত করা

২। কোণ কলামের নাম পরিবর্তন করা

৩। কোণ কলাম ডিলিট করা

---------------------------add column-----------------------------
-- syntax 
ALTER TABLE table_name ADD column_name dataType[size]
-- example 
ALTER TABLE students ADD age int(5)
---------------------------rename column-----------------------------
-- syntax 
ALTER TABLE table_name CHANGE column_name new_column_name dataType[size]
-- example 
ALTER TABLE students CHANGE age student_age int(5)
--------------------------delete column ------------------------------
-- syntax 
ALTER TABLE table_name DROP column_name
-- example 
ALTER TABLE stuents DROP age

GROUP BY Clause:

স্বাধারনত একটা টেবিল এঁর বিভিন্ন row কে ছোট ছোট গ্রুপে ভাগ করা যায়

--syntax
SELECT column, group_function(column) FROM TABLE
[where ur_condition] 
[GROUP BY group_by_expression]
[ORDER BY column]
-- real example 
SELECT role, SUM(salary) FROM techer GROUP BY role ORDER BY SUM(salary) DESC

TRUNCATE TABLE Command in SQL:

আপনি যদি ডাটাবেস এডমিনসট্রেটর হিসেবে কখন কাজ করেন তাহলে এই কমান্ড গুলো খুব কাজে লাগবে /

আমাকে এমন কাজ করতে হতে প্যাঁরে যে একটা টেবিলর সকল রেকর্ড ডিলিট করে দিতে হবে তবে শর্ত হচ্ছে টেবিল ডিলিট না করে । যাতে করে নতুন করে আবার ডাটা insart করতে পাঁড়ই । তাছাড়া আবার কলাম তৈরি করতে হবে যা অনেক সময় প্যাঁরাদায়ক হতে পারে ।

এই পরিস্থিতিতে আমরা TRUNCATE কমান্ড ব্যাবহার করব

TRUNCATE TABLE students_table

Joining Tables:

২ টা বা একাধিক টেবিলকে একত্রিত করে তাদের মধ্য থেকে রেকর্ড খুঁজে বের করা । ধরুন স্টুডেন্ট টেবিল নামে একটা টেবিল আছে আর একটা স্টুডেন্ট রেজাল্ট নামে । এগুলো থেকে আমরা চাচ্ছি যে ডাটা খুঁজে বের করতে যেখানে ২ তা টেবিল থেকেই ডাটা একসাথে দেখাবে ।

--- table joining method
--------------------return all data
SELECT std.roll,age,name,gender,GPA,registration, group_name 
FROM student_table_details AS std, exam_result_table AS std_RS 
WHERE std.roll = std_RS.roll 

-------------------other method (recommended )
SELECT std.roll, std.age, std.name,std.gender,std_RS.GPA,std_RS.registration, std_RS.group_name 
FROM student_table_details AS std JOIN exam_result_table AS std_RS 
ON std.roll = std_RS.roll

Table joining এ প্রকারঃ

Table joining এ অনেক অনেক প্রকার আছে । আমরা এখন সেগুলো দেখব ।

INNER JOIN IN SQL:

সে সকল ডাটা রিটার্ন করবে যেখানে ২ টি টেবিলর সাথে কোণ একটি ডাটা মিলে যাবে

--- regular joining process 
SELECT std.roll, exam.reg, std.Name, std.gender 
FROM student_table AS std , exam_result_table AS exam
WHERE std.roll = exam.roll
---- join process 
SELECT std.roll, exam.reg, std.Name, std.gender 
FROM student_table AS std JOIN exam_result_table AS exam
ON std.roll = exam.roll
---- INNER JOIN process 
SELECT std.roll, exam.reg, std.Name, std.gender 
FROM student_table AS std INNER JOIN exam_result_table AS exam
ON std.roll = exam.roll

LEFT JOIN, RIGHT JOIN in SQL:

left join: ২ টা টেবিলের মধ্যে যা মিল পাবে তাতো দেখাবেই সাথে বাম পাশের টেবিলের যেগুলা মিল পাবে না সেগুলোও দেখাবে

right join: ২ টা টেবিলের মধ্যে যা মিল পাবে তাতো দেখাবেই সাথে ডান পাশের টেবিলের যেগুলা মিল পাবে না সেগুলোও দেখাবে

--- LEFT JOINING PROCESS
SELECT std.roll, exam.reg, std.Name, std.gender 
FROM student_table AS std LEFT JOIN exam_result_table AS exam
ON std.roll = exam.roll
--- RIGHT JOINING PROCESS
SELECT std.roll, exam.reg, std.Name, std.gender 
FROM student_table AS std RIGHT JOIN exam_result_table AS exam
ON std.roll = exam.roll

UNION, UNION ALL in SQL:

২ টা টেবিলর ডাটা এক টেবিল অ্যানতে ব্যাবহার করা হয় । oতবে মনে রাকতে হবে যে টেবিলের সাথে union করছেন তাদের ডাটা অর্ডার ঠিক রাখতে হবে , ধরুন ৩ টা কলাম নিয়ে কাজ করলে ২ টাতেই ৩ টা কলাম নিয়ে কাজ করতে হবে । যদি একই ডাটা ২ যায়গাতেই থাকে তাহলে duplicate টাকে একবার দেখাবে ।

UNION ALL: হচ্ছে duplicate ডাটা সহ দেখাবে । এটা UNION থেকে ফাস্টার । কারণ এখানে ডুপ্লিকেট ভেলু রিমুভ করতে হয় না ।

SELECT roll, age, tour_desc FROM tour_2022
                UNION
SELECT roll, age, tour_desc FROM tour_2023

--- UNION ALL 
SELECT roll, age, tour_desc FROM tour_2022
               UNION ALL
SELECT roll, age, tour_desc FROM tour_2023

VIEW in SQL:

আমরা ডাটাবেসে যেগুলো দরকারি ডাটা সেগুলো রাখি। কিন্তু এমন কিছু সময় আসে যেখানে সব কিছু দেখানোর দরকার পড়ে না । এঁর জন্য আমরা এক বা একাধিক টেবিল থেকে ভার্চুয়াল টেবিল বানাতে পারি । যেটা দেখতে টেবিলের মন্ত কিন্তু টেবিল নয় । এটা একটা ভার্চুয়াল টেবিল যেখানে আমরা ইউজারকে যা দেখাতে চাচ্ছি তাই রাখব .

--syntax
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE ur_condition
-- real example 
CREATE VIEW student_view AS SELECT Roll,name,Reg  
FROM student_details_table
-- with contidion 
CREATE VIEW student_view AS SELECT Roll,name,Reg  
FROM student_details_table WHERE ur_condition

-- to acces view data 
SELECT * FROM student_view

-----------------------------another exapmple------------------------
-- আমরা যেভাবে আপডেট, INSERT, ডিলিট, ড্রপ করি ঠিক সেম ভাবে ভার্চুয়াল ভিউ এও করতে পারব ।

data and time in MySQL:

SELECT CURDATE() -- it's return current data 
SELECT CURTIME() -- it's return current time 
SELECT NOW() -- উপড়ের ২ টার কম্বিনিশন 
SELECT ADDDATE("2023-5-31", INTERVAL 5 DAY) 
SELECT ADDDATE("2023-5-31", INTERVAL 5 MONTH) 
SELECT ADDDATE("2023-5-31", INTERVAL 5 YEAR) 
--- 
SELECT SUBDATE("2023-5-31", INTERVAL 5 DAY) -- এঁর মাধ্যমে বিয়োগ হবে । আগের সব সেম থাকবে 
---------------------- 
SELECT MAKEDATE(2023,212) -- ২০২৩ সালের ১৭ ২১২ তম দিন কি ছিল সেটা দেখতে 
----------------------
SELECT DAYNAME("2023-05-31")
SELECT MONTHNAME("2023-05-31")
SELECT YEARNAME("2023-05-31")

Keyboard shortcut:

-- without pressing GO button you can do it 
ALT + ENTER

Did you find this article valuable?

Support Rashedul Islam by becoming a sponsor. Any amount is appreciated!