{"id":29805161,"url":"https://github.com/afsar-dev/wildlife-conservation-sql","last_synced_at":"2026-02-08T11:31:07.578Z","repository":{"id":302602835,"uuid":"990596519","full_name":"afsar-dev/wildlife-conservation-sql","owner":"afsar-dev","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-26T11:36:53.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-03T08:58:52.940Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/afsar-dev.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-26T10:56:59.000Z","updated_at":"2025-05-26T17:22:24.000Z","dependencies_parsed_at":"2025-07-03T08:58:55.746Z","dependency_job_id":"f0ae1041-afec-4dc2-a2bd-20e10d12347d","html_url":"https://github.com/afsar-dev/wildlife-conservation-sql","commit_stats":null,"previous_names":["afsar-dev/wildlife-conservation-sql"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/afsar-dev/wildlife-conservation-sql","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afsar-dev%2Fwildlife-conservation-sql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afsar-dev%2Fwildlife-conservation-sql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afsar-dev%2Fwildlife-conservation-sql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afsar-dev%2Fwildlife-conservation-sql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/afsar-dev","download_url":"https://codeload.github.com/afsar-dev/wildlife-conservation-sql/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afsar-dev%2Fwildlife-conservation-sql/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267521489,"owners_count":24101038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-28T13:09:47.147Z","updated_at":"2026-02-08T11:31:02.557Z","avatar_url":"https://github.com/afsar-dev.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📘 PostgreSQL Concepts Explained\n\nনিচে PostgreSQL সম্পর্কিত ১০টি গুরুত্বপূর্ণ প্রশ্নের উত্তর বাংলায় দেওয়া হলো:\n\n---\n\n### ১. PostgreSQL কী?\n\nPostgreSQL একটি ওপেন-সোর্স এবং শক্তিশালী রিলেশনাল ডাটাবেজ ম্যানেজমেন্ট সিস্টেম (RDBMS), যা SQL এবং JSON উভয় ধরনের ডেটা সাপোর্ট করে। এটি ACID কমপ্লায়েন্ট এবং বড় স্কেল ডেটা হ্যান্ডেল করার জন্য উপযুক্ত। PostgreSQL ডেভেলপারদের জটিল কোয়েরি, ট্রানজ্যাকশন, কাস্টম ফাংশন এবং এক্সটেনশন ব্যবহারের সুবিধা দেয়।\n\n---\n\n### ২. PostgreSQL-এ ডাটাবেজ স্কিমার উদ্দেশ্য কী?\n\nস্কিমা হলো একটি ডাটাবেজের মধ্যে অবজেক্ট (যেমন টেবিল, ভিউ, ফাংশন) গুলোকে লজিকালি গ্রুপ করার একটি উপায়। এর মাধ্যমে ডাটাবেজকে সংগঠিত ও নিরাপদভাবে ব্যবহার করা যায়। এটি একই নামে একাধিক অবজেক্ট রাখার সুবিধাও দেয় (ভিন্ন স্কিমাতে)।\n\n**Schema-র সুবিধা:**\n\n- ডেটা সংগঠন এবং গ্রুপিং\n- Access control এবং security\n- নেমিং কনফ্লিক্ট এড়ানো\n- Multi-tenant applications সাপোর্ট\n\n---\n\n### ৩. Primary Key এবং Foreign Key কী?\n\nPrimary Key হলো একটি কলাম বা কলামের সমন্বয় যা প্রতিটি রেকর্ডকে অনন্যভাবে সনাক্ত করে।\n\n**বৈশিষ্ট্য:**\n\n- অনন্য (Unique) হতে হবে\n- NULL মান থাকতে পারবে না\n- একটি টেবিলে শুধুমাত্র একটি Primary Key থাকতে পারে\n\nForeign Key হলো একটি কলাম যা অন্য টেবিলের Primary Key-র সাথে সম্পর্ক স্থাপন করে।\n\n```sql\nCREATE TABLE departments (\n    -- Primary Key\n    dept_id SERIAL PRIMARY KEY,\n    dept_name VARCHAR(50) NOT NULL,\n    location VARCHAR(100)\n);\n\nCREATE TABLE employees (\n    emp_id SERIAL PRIMARY KEY,\n    first_name VARCHAR(50) NOT NULL,\n    last_name VARCHAR(50) NOT NULL,\n    email VARCHAR(100) UNIQUE,\n    salary DECIMAL(10,2),\n    hire_date DATE DEFAULT CURRENT_DATE,\n    -- Foreign Key\n    dept_id INTEGER REFERENCES departments(dept_id)\n);\n```\n\n---\n\n### ৪. VARCHAR এবং CHAR ডেটা টাইপের মধ্যে পার্থক্য কী?\n- **CHAR(n)**: এটি ফিক্সড দৈর্ঘ্যের ডেটা টাইপ, যেখানে সবসময় n সংখ্যক ক্যারেক্টার রাখা হয়, এমনকি ইনপুট যদি ছোট হয় তবুও স্পেস দিয়ে পূর্ণ করা হয়।\n- **VARCHAR(n)**: এটি ভ্যারিয়েবল দৈর্ঘ্যের ডেটা টাইপ, যেখানে ইনপুট অনুযায়ী দৈর্ঘ্য হয় এবং বাড়তি স্পেস নেয় না।\n\n---\n\n### ৫. SELECT স্টেটমেন্টে WHERE ক্লজের ব্যবহার কী?\n`WHERE` ব্যবহার করা হয় SELECT statement-এ নির্দিষ্ট শর্ত অনুযায়ী ডেটা ফিল্টার করার জন্য। এটি কেবলমাত্র সেই রেকর্ডগুলি রিটার্ন    করে যা নির্দিষ্ট শর্ত পূরণ করে। যেমন:\n\n```sql\n-- Basic WHERE\nSELECT * FROM employees \nWHERE salary \u003e 50000;\n\n-- AND\nSELECT first_name, last_name, salary \nFROM employees \nWHERE salary \u003e 45000 AND dept_id = 1;\n\n-- OR\nSELECT * FROM employees \nWHERE dept_id = 1 OR dept_id = 2;\n\n-- LIKE \nSELECT * FROM employees \nWHERE first_name LIKE 'আ%';\n\n-- IN \nSELECT * FROM employees \nWHERE dept_id IN (1, 2);\n```\n---\n\n### ৬. LIMIT এবং OFFSET ক্লজের ব্যবহার কী?\n\n- **LIMIT** নির্দিষ্ট সংখ্যক রো রিটার্ন করার জন্য ব্যবহৃত হয়।\n- **OFFSET** রো স্কিপ করে পরবর্তী রো থেকে রেজাল্ট দেখাতে সাহায্য করে।\n\nউদাহরণ:\n\n```sql\nSELECT * FROM products LIMIT 5 OFFSET 10;\n```\n\nএটি ১১ নম্বর রো থেকে শুরু করে ৫টি রো রিটার্ন করবে।\n\n---\n\n### ৭. UPDATE স্টেটমেন্ট ব্যবহার করে কীভাবে ডেটা পরিবর্তন করা হয়?\n\n`UPDATE` স্টেটমেন্ট দিয়ে টেবিলের নির্দিষ্ট রো-র তথ্য পরিবর্তন করা যায়।\n\n```sql\nUPDATE students SET name = 'Rahim' WHERE id = 1;\n```\n\nউপরের কোয়েরিতে id ১ যাদের, তাদের নাম 'Rahim' এ আপডেট হবে।\n\n---\n\n### ৮. JOIN অপারেশনের গুরুত্ব কী এবং এটি কীভাবে কাজ করে?\n\n`JOIN` অপারেশন ব্যবহার করে একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে ডেটা রিটার্ন করা হয়। এটি সাধারণত Foreign Key এবং Primary Key এর উপর ভিত্তি করে কাজ করে।\n\n```sql\nSELECT orders.id, customers.name\nFROM orders\nJOIN customers ON orders.customer_id = customers.id;\n```\n\nএখানে দুটি টেবিল একত্রে মিলিয়ে সংশ্লিষ্ট তথ্য দেখানো হয়েছে।\n\n---\n\n### ৯. GROUP BY ক্লজ এবং এটি কীভাবে Aggregation-এ সাহায্য করে?\n\n`GROUP BY` ক্লজ ব্যবহার করে নির্দিষ্ট কলাম অনুযায়ী ডেটাকে গ্রুপ করে Aggregation ফাংশন (COUNT, SUM ইত্যাদি) প্রয়োগ করা যায়।\n\n```sql\nSELECT department, COUNT(*) FROM employees GROUP BY department;\n```\n\nউপরের কোয়েরিতে প্রতিটি ডিপার্টমেন্টে কতজন কর্মী আছে তা গণনা করা হচ্ছে।\n\n---\n\n### ১০. PostgreSQL-এ COUNT(), SUM(), এবং AVG() কিভাবে ব্যবহার করা হয়?\n\nএই ফাংশনগুলো ব্যবহার করে ডেটার উপর গাণিতিক বিশ্লেষণ করা যায়:\n\n- `COUNT()` → মোট রো সংখ্যা গণনা করে\n- `SUM()` → নির্দিষ্ট কলামের মোট যোগফল দেয়\n- `AVG()` → নির্দিষ্ট কলামের গড় মান রিটার্ন করে\n\nউদাহরণ:\n\n```sql\nSELECT COUNT(*), SUM(salary), AVG(salary) FROM employees;\n```\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafsar-dev%2Fwildlife-conservation-sql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fafsar-dev%2Fwildlife-conservation-sql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafsar-dev%2Fwildlife-conservation-sql/lists"}