SQL for Beginners
Tags: sql, sqlserver, query, development
Published: 2024-02-13 08:44:36

> আজকে আমরা জানবো SQL নিয়ে। SQL কি, SQL কিভাবে কাজ করে, SQL Table কি, SQL Table কিভাবে তৈরি করতে হয়, How to insert data in SQL Table with a command, and much more.

So, Let's start with our SQL Journey.

## **What is SQL?**

> SQL (Structured Query Language) হল একটি শক্তিশালী ডেটা ম্যানিপুলেশন ল্যাংগুয়েজ যা আপনাকে ডেটাবেসের সাথে যোগাযোগ করতে দেয়।

## **Why Should I learn SQL?**

> আপনি বিভিন্ন কারণে SQL শিখতে পারেন। এখানে কয়েকটি কারণ উল্লেখ করা হল:

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

- **ডেটা বিশ্লেষণ:** SQL আপনাকে ডেটা থেকে মূল্যবান অন্তর্দৃষ্টি বের করতে সাহায্য করতে পারে। আপনি এসকিউয়েল ব্যবহার করে ডেটা ট্রেন্ড, প্যাটার্ন এবং সম্পর্ক খুঁজে পেতে পারেন।

- **ডেটাবেস ম্যানেজমেন্ট:** SQL আপনাকে ডেটাবেস তৈরি, পরিচালনা এবং রক্ষণাবেক্ষণ করতে সাহায্য করতে পারে। আপনি এসকিউয়েল ব্যবহার করে ডেটা টেবিল তৈরি করতে, ডেটা যোগ করতে, ডেটা আপডেট করতে এবং ডেটা মুছে ফেলতে পারেন।

- **ব্যক্তিগত ব্যবহার:** SQL আপনাকে আপনার ব্যক্তিগত ডেটা ট্র্যাক করতে সাহায্য করতে পারে। আপনি SQL ব্যবহার করে আপনার ব্যক্তিগত ফাইন্যান্স, আপনার স্বাস্থ্যের রেকর্ড বা আপনার কাজের তালিকা ট্র্যাক করতে পারেন।

এছাড়াও আরো অনেক কারনে আপনি SQL শিখতে পারেন।

তাহলে চলুন, SQL নিয়ে আরো বিশদ ভাবে একটা যাত্রা শুরু করি।

> **বিঃদ্রঃ SQL নিয়ে আপনার কোনো প্রশ্ন থাকলে কমেন্ট বক্সে জানাতে পারেন।**

## **What are the main topics of SQL?**

**1. ডেটাবেস ম্যানেজমেন্ট:**

- ডেটাবেস তৈরি, পরিচালনা এবং রক্ষণাবেক্ষণ
- ডেটা টেবিল তৈরি, পরিবর্তন এবং মুছে ফেলা
- ডেটা টাইপ এবং ডেটা কনস্ট্রেন্ট
- ইউজার এবং পারমিশন

**2. ডেটা ম্যানিপুলেশন:**

- ডেটা যোগ, আপডেট এবং মুছে ফেলা
- ডেটা ট্রান্সফরমেশন এবং ফাংশন
- JOINs ব্যবহার করে ডেটা টেবিল একত্রিত করা
- Subqueries

**3. ডেটা কুয়েরি:**

- SELECT কমান্ড ব্যবহার করে ডেটা বের করা
- WHERE clause ব্যবহার করে ডেটা ফিল্টার করা
- ORDER BY clause ব্যবহার করে ডেটা সাজানো
- GROUP BY clause ব্যবহার করে ডেটা গ্রুপ করা

**4. ডেটা অ্যানালাইসিস:**

- Aggregation ফাংশন ব্যবহার করে ডেটা সারাংশ করা
- Window ফাংশন ব্যবহার করে ডেটা ট্রেন্ড বিশ্লেষণ করা
- Common Table Expressions (CTE) ব্যবহার করে জটিল ক্যোয়ারি তৈরি করা

**5. SQL এর বিভিন্ন ভার্সন:**

- MySQL
- PostgreSQL
- Oracle
- SQL Server

**6. ডেটাবেস ডিজাইন:**

- ডেটাবেস নরমালাইজেশন
- Entity-relationship (ER) ডায়াগ্রাম
- ডেটা মডেলিং

**7. ডেটাবেস সিকিউরিটি:**

- ডেটা এনক্রিপশন
- Access control
- Auditing

**8. SQL এর উন্নত টপিক:**

- Triggers
- Stored procedures
- Views

> **এই টপিক গুলো ছাড়াও আরও অনেক গুলো বিষয় আছে SQL-এর মধ্যে। ধীরে ধীরে আমরা সে টপিক গুলো সম্পর্কে জানবো। যেহেতু এটা Beginners দের জন্য, তাই আমরা আপাতত Basic Level শিখবো।**


## যেহেতু এটা একটা Query Language, তাই আজকে শিখবো কিভাবে Database এ কমান্ডের মাধ্যমে Table তৈরি করতে হয় 😎.

মনে করুন আপনি একটা টেবিল তৈরি করবেন, যার নাম হলো **_AllEmployeeList_**, এবং তার মধ্যে বেশ কিছু কলাম থাকবে, সেগুলো হলো - 

1. ID   
2. EmployeeId
3. Name
4. Department
5. Designation
6. Phone
7. Email
8. Grade
9. Salary
10. JoiningDate

**এবার শিখবো কিভাবে কমান্ড এর মাধ্যমে Table এবং Column তৈরি করতে হয় ✌️😎**

## **Create Table**

`CREATE TABLE AllEmployeeList (
    ID INT PRIMARY KEY AUTO_INCREMENT,
    EmployeeId INT,
    Name VARCHAR(255),
    Department VARCHAR(255),
    Designation VARCHAR(255),
    Phone VARCHAR(20),
    Email VARCHAR(255),
    Grade VARCHAR(10),
    Salary DECIMAL(10, 2),
    JoiningDate DATE
);`

> এবার শিখবো কমান্ড এর মাধ্যমে উক্ত **AllEmployeeList** Table এ কিভাবে Data Insert করতে হয়।

## **Insert Data into Table**

`INSERT INTO AllEmployeeList (ID, EmployeeId, Name, Department, Designation, Phone, Email, Grade, Salary, JoiningDate) 
VALUES (1, 100001, 'MR. Nahid', 'Information Technology', 'Software Engineer', '01700000000', 'nahid@gmail.com', '1st', 100000, '2023-01-01')
`

**অনুরূপ ভাবে আমরা শেখার সুবিধার্থে আরো একটি Table এবং Column তৈরি করা শিখবো।**

যার নাম হলো **_AllEmployeeDetails_**, এবং তার মধ্যে বেশ কিছু কলাম থাকবে, সেগুলো হলো - 

1. ID
2. EmployeeId
3. Name
4. Department
5. Designation
6. Phone
7. Email
8. Grade
9. Salary
10. PresentAddress
11. PermanentAddress
12. MaritalStatus

**অনুরূপ ভাবে শিখবো কিভাবে কমান্ড এর মাধ্যমে উক্ত Table এবং Column তৈরি করতে হয় ✌️😎**

`CREATE TABLE AllEmployeeDetails (
    ID INT,
    EmployeeId INT,
    Name VARCHAR(255),
    Department VARCHAR(255),
    Designation VARCHAR(255),
    Phone VARCHAR(20),
    Email VARCHAR(255),
    Grade VARCHAR(10),
    Salary DECIMAL(10, 2),
    PresentAddress VARCHAR(255),
    PermanentAddress VARCHAR(255),
    MaritalStatus VARCHAR(20),
    PRIMARY KEY (ID, EmployeeId)
);`

> একই ভাবে এবার শিখবো কমান্ড এর মাধ্যমে উক্ত **AllEmployeeDetails** Table এ কিভাবে Data Insert করতে হয়।

`INSERT INTO AllEmployeeDetails (ID, EmployeeId, Name, Department, Designation, Phone, Email, Grade, Salary, PresentAddress, PermanentAddress, MaritalStatus) 
VALUES (1, 100001, 'MR. Nahid', 'Information Technology', 'Software Engineer', '01700000000', 'nahid@gmail.com', '1st', 100000, 'Bangladesh', 'Dhaka', 'Unmarried')`

## **What is JOIN in Table**

> জয়েন হলো SQL-এর একটি শক্তিশালী ক্লজ যা আপনাকে দুটি বা ততোধিক টেবিল থেকে ডেটা একত্রিত করতে দেয়। টেবিলগুলোর মধ্যে ডেটা সম্পর্কিত হতে হবে।

**ধরুন, আপনার কাছে দুটি আলাদা টেবিল আছে: **AllEmployeeList** এবং **AllEmployeeDetails** **

> আপনি যদি "AllEmployeeList" এবং "AllEmployeeDetails" টেবিলের মধ্যে JOIN করতে চান, তাহলে আপনি এই দুটি টেবিলের "EmployeeId" কলাম ব্যবহার করে JOIN করতে পারেন। এই উদাহরণে, আমরা "AllEmployeeList" এর তথ্য সহ যৌক্তিক করতে চাইব। নিচে একটি উদাহরণ দেওয়া হলো।

`SELECT AllEmployeeList.ID, AllEmployeeList.EmployeeId, AllEmployeeList.Name, AllEmployeeList.Department, AllEmployeeList.Designation, AllEmployeeList.Phone, AllEmployeeList.Email, AllEmployeeList.Grade, AllEmployeeList.Salary, AllEmployeeList.JoiningDate, AllEmployeeDetails.PresentAddress, AllEmployeeDetails.PermanentAddress, AllEmployeeDetails.MaritalStatus
FROM AllEmployeeList
JOIN AllEmployeeDetails ON AllEmployeeList.EmployeeId = AllEmployeeDetails.EmployeeId;`


আজকের জন্য এটুকুই, ইনশাআল্লাহ্‌ আবারো ফিরে আসবো SQL নিয়ে আরো কিছু ব্লগে। 

**বিঃদ্রঃ ভুলত্রুটি ক্ষমা সুন্দর দৃষ্টিতে দেখবেন।**

## **ধন্যবাদ**