https://github.com/afsar-dev/wildlife-conservation-sql
https://github.com/afsar-dev/wildlife-conservation-sql
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/afsar-dev/wildlife-conservation-sql
- Owner: afsar-dev
- Created: 2025-05-26T10:56:59.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-26T11:36:53.000Z (about 1 year ago)
- Last Synced: 2025-07-03T08:58:52.940Z (11 months ago)
- Size: 2.93 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.MD
Awesome Lists containing this project
README
# đ PostgreSQL Concepts Explained
āύāĻŋāĻā§ PostgreSQL āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ ā§§ā§ĻāĻāĻŋ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻĒā§āϰāĻļā§āύā§āϰ āĻāϤā§āϤāϰ āĻŦāĻžāĻāϞāĻžā§ āĻĻā§āĻā§āĻž āĻšāϞā§:
---
### ā§§. PostgreSQL āĻā§?
PostgreSQL āĻāĻāĻāĻŋ āĻāĻĒā§āύ-āϏā§āϰā§āϏ āĻāĻŦāĻ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āϰāĻŋāϞā§āĻļāύāĻžāϞ āĻĄāĻžāĻāĻžāĻŦā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āϏāĻŋāϏā§āĻā§āĻŽ (RDBMS), āϝāĻž SQL āĻāĻŦāĻ JSON āĻāĻāϝāĻŧ āϧāϰāύā§āϰ āĻĄā§āĻāĻž āϏāĻžāĻĒā§āϰā§āĻ āĻāϰā§āĨ¤ āĻāĻāĻŋ ACID āĻāĻŽāĻĒā§āϞāĻžā§ā§āύā§āĻ āĻāĻŦāĻ āĻŦā§ āϏā§āĻā§āϞ āĻĄā§āĻāĻž āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§āϤāĨ¤ PostgreSQL āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻāĻāĻŋāϞ āĻā§ā§ā§āϰāĻŋ, āĻā§āϰāĻžāύāĻā§āϝāĻžāĻāĻļāύ, āĻāĻžāϏā§āĻāĻŽ āĻĢāĻžāĻāĻļāύ āĻāĻŦāĻ āĻāĻā§āϏāĻā§āύāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āϏā§āĻŦāĻŋāϧāĻž āĻĻā§ā§āĨ¤
---
### ⧍. PostgreSQL-āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ āϏā§āĻāĻŋāĻŽāĻžāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻā§?
āϏā§āĻāĻŋāĻŽāĻž āĻšāϞ⧠āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻā§āϰ āĻŽāϧā§āϝ⧠āĻ
āĻŦāĻā§āĻā§āĻ (āϝā§āĻŽāύ āĻā§āĻŦāĻŋāϞ, āĻāĻŋāĻ, āĻĢāĻžāĻāĻļāύ) āĻā§āϞā§āĻā§ āϞāĻāĻŋāĻāĻžāϞāĻŋ āĻā§āϰā§āĻĒ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āĻāĻĒāĻžā§āĨ¤ āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĄāĻžāĻāĻžāĻŦā§āĻāĻā§ āϏāĻāĻāĻ āĻŋāϤ āĻ āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻ āύāĻžāĻŽā§ āĻāĻāĻžāϧāĻŋāĻ āĻ
āĻŦāĻā§āĻā§āĻ āϰāĻžāĻāĻžāϰ āϏā§āĻŦāĻŋāϧāĻžāĻ āĻĻā§ā§ (āĻāĻŋāύā§āύ āϏā§āĻāĻŋāĻŽāĻžāϤā§)āĨ¤
**Schema-āϰ āϏā§āĻŦāĻŋāϧāĻž:**
- āĻĄā§āĻāĻž āϏāĻāĻāĻ āύ āĻāĻŦāĻ āĻā§āϰā§āĻĒāĻŋāĻ
- Access control āĻāĻŦāĻ security
- āύā§āĻŽāĻŋāĻ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāĻĄāĻŧāĻžāύā§
- Multi-tenant applications āϏāĻžāĻĒā§āϰā§āĻ
---
### ā§Š. Primary Key āĻāĻŦāĻ Foreign Key āĻā§?
Primary Key āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāϞāĻžāĻŽ āĻŦāĻž āĻāϞāĻžāĻŽā§āϰ āϏāĻŽāύā§āĻŦāϝāĻŧ āϝāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰā§āĻāϰā§āĻĄāĻā§ āĻ
āύāύā§āϝāĻāĻžāĻŦā§ āϏāύāĻžāĻā§āϤ āĻāϰā§āĨ¤
**āĻŦā§āĻļāĻŋāώā§āĻā§āϝ:**
- āĻ
āύāύā§āϝ (Unique) āĻšāϤ⧠āĻšāĻŦā§
- NULL āĻŽāĻžāύ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰāĻŦā§ āύāĻž
- āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ⧠āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ Primary Key āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§
Foreign Key āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāϞāĻžāĻŽ āϝāĻž āĻ
āύā§āϝ āĻā§āĻŦāĻŋāϞā§āϰ Primary Key-āϰ āϏāĻžāĻĨā§ āϏāĻŽā§āĻĒāϰā§āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āĨ¤
```sql
CREATE TABLE departments (
-- Primary Key
dept_id SERIAL PRIMARY KEY,
dept_name VARCHAR(50) NOT NULL,
location VARCHAR(100)
);
CREATE TABLE employees (
emp_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
salary DECIMAL(10,2),
hire_date DATE DEFAULT CURRENT_DATE,
-- Foreign Key
dept_id INTEGER REFERENCES departments(dept_id)
);
```
---
### ā§Ē. VARCHAR āĻāĻŦāĻ CHAR āĻĄā§āĻāĻž āĻāĻžāĻāĻĒā§āϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
- **CHAR(n)**: āĻāĻāĻŋ āĻĢāĻŋāĻā§āϏāĻĄ āĻĻā§āϰā§āĻā§āϝā§āϰ āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ, āϝā§āĻāĻžāύ⧠āϏāĻŦāϏāĻŽā§ n āϏāĻāĻā§āϝāĻ āĻā§āϝāĻžāϰā§āĻā§āĻāĻžāϰ āϰāĻžāĻāĻž āĻšā§, āĻāĻŽāύāĻāĻŋ āĻāύāĻĒā§āĻ āϝāĻĻāĻŋ āĻā§āĻ āĻšā§ āϤāĻŦā§āĻ āϏā§āĻĒā§āϏ āĻĻāĻŋā§ā§ āĻĒā§āϰā§āĻŖ āĻāϰāĻž āĻšā§āĨ¤
- **VARCHAR(n)**: āĻāĻāĻŋ āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞ āĻĻā§āϰā§āĻā§āϝā§āϰ āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ, āϝā§āĻāĻžāύ⧠āĻāύāĻĒā§āĻ āĻ
āύā§āϝāĻžā§ā§ āĻĻā§āϰā§āĻā§āϝ āĻšā§ āĻāĻŦāĻ āĻŦāĻžā§āϤāĻŋ āϏā§āĻĒā§āϏ āύā§ā§ āύāĻžāĨ¤
---
### ā§Ģ. SELECT āϏā§āĻā§āĻāĻŽā§āύā§āĻā§ WHERE āĻā§āϞāĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻā§?
`WHERE` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ SELECT statement-āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻļāϰā§āϤ āĻ
āύā§āϝāĻžāϝāĻŧā§ āĻĄā§āĻāĻž āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝāĨ¤ āĻāĻāĻŋ āĻā§āĻŦāϞāĻŽāĻžāϤā§āϰ āϏā§āĻ āϰā§āĻāϰā§āĻĄāĻā§āϞāĻŋ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰ⧠āϝāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻļāϰā§āϤ āĻĒā§āϰāĻŖ āĻāϰā§āĨ¤ āϝā§āĻŽāύ:
```sql
-- Basic WHERE
SELECT * FROM employees
WHERE salary > 50000;
-- AND
SELECT first_name, last_name, salary
FROM employees
WHERE salary > 45000 AND dept_id = 1;
-- OR
SELECT * FROM employees
WHERE dept_id = 1 OR dept_id = 2;
-- LIKE
SELECT * FROM employees
WHERE first_name LIKE 'āĻ%';
-- IN
SELECT * FROM employees
WHERE dept_id IN (1, 2);
```
---
### ā§Ŧ. LIMIT āĻāĻŦāĻ OFFSET āĻā§āϞāĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻā§?
- **LIMIT** āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻāĻā§āϝāĻ āϰ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
- **OFFSET** āϰ⧠āϏā§āĻāĻŋāĻĒ āĻāϰ⧠āĻĒāϰāĻŦāϰā§āϤ⧠āϰ⧠āĻĨā§āĻā§ āϰā§āĻāĻžāϞā§āĻ āĻĻā§āĻāĻžāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
```sql
SELECT * FROM products LIMIT 5 OFFSET 10;
```
āĻāĻāĻŋ ā§§ā§§ āύāĻŽā§āĻŦāϰ āϰ⧠āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠ā§ĢāĻāĻŋ āϰ⧠āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻŦā§āĨ¤
---
### ā§. UPDATE āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻā§āĻāĻžāĻŦā§ āĻĄā§āĻāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšā§?
`UPDATE` āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻĻāĻŋā§ā§ āĻā§āĻŦāĻŋāϞā§āϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϰā§-āϰ āϤāĻĨā§āϝ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āϝāĻžā§āĨ¤
```sql
UPDATE students SET name = 'Rahim' WHERE id = 1;
```
āĻāĻĒāϰā§āϰ āĻā§ā§ā§āϰāĻŋāϤ⧠id ā§§ āϝāĻžāĻĻā§āϰ, āϤāĻžāĻĻā§āϰ āύāĻžāĻŽ 'Rahim' āĻ āĻāĻĒāĻĄā§āĻ āĻšāĻŦā§āĨ¤
---
### ā§Ž. JOIN āĻ
āĻĒāĻžāϰā§āĻļāύā§āϰ āĻā§āϰā§āϤā§āĻŦ āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
`JOIN` āĻ
āĻĒāĻžāϰā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻžāϧāĻŋāĻ āĻā§āĻŦāĻŋāϞā§āϰ āĻŽāϧā§āϝ⧠āϏāĻŽā§āĻĒāϰā§āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰ⧠āĻĄā§āĻāĻž āϰāĻŋāĻāĻžāϰā§āύ āĻāϰāĻž āĻšā§āĨ¤ āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ Foreign Key āĻāĻŦāĻ Primary Key āĻāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻžāĻ āĻāϰā§āĨ¤
```sql
SELECT orders.id, customers.name
FROM orders
JOIN customers ON orders.customer_id = customers.id;
```
āĻāĻāĻžāύ⧠āĻĻā§āĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻāĻāϤā§āϰ⧠āĻŽāĻŋāϞāĻŋā§ā§ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āϤāĻĨā§āϝ āĻĻā§āĻāĻžāύ⧠āĻšā§ā§āĻā§āĨ¤
---
### ⧝. GROUP BY āĻā§āϞāĻ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ Aggregation-āĻ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§?
`GROUP BY` āĻā§āϞāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϞāĻžāĻŽ āĻ
āύā§āϝāĻžā§ā§ āĻĄā§āĻāĻžāĻā§ āĻā§āϰā§āĻĒ āĻāϰ⧠Aggregation āĻĢāĻžāĻāĻļāύ (COUNT, SUM āĻāϤā§āϝāĻžāĻĻāĻŋ) āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āϝāĻžā§āĨ¤
```sql
SELECT department, COUNT(*) FROM employees GROUP BY department;
```
āĻāĻĒāϰā§āϰ āĻā§ā§ā§āϰāĻŋāϤ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄāĻŋāĻĒāĻžāϰā§āĻāĻŽā§āύā§āĻā§ āĻāϤāĻāύ āĻāϰā§āĻŽā§ āĻāĻā§ āϤāĻž āĻāĻŖāύāĻž āĻāϰāĻž āĻšāĻā§āĻā§āĨ¤
---
### ā§§ā§Ļ. PostgreSQL-āĻ COUNT(), SUM(), āĻāĻŦāĻ AVG() āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ?
āĻāĻ āĻĢāĻžāĻāĻļāύāĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĄā§āĻāĻžāϰ āĻāĻĒāϰ āĻāĻžāĻŖāĻŋāϤāĻŋāĻ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāϰāĻž āϝāĻžāϝāĻŧ:
- `COUNT()` â āĻŽā§āĻ āϰ⧠āϏāĻāĻā§āϝāĻž āĻāĻŖāύāĻž āĻāϰā§
- `SUM()` â āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϞāĻžāĻŽā§āϰ āĻŽā§āĻ āϝā§āĻāĻĢāϞ āĻĻā§ā§
- `AVG()` â āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϞāĻžāĻŽā§āϰ āĻā§ āĻŽāĻžāύ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰā§
āĻāĻĻāĻžāĻšāϰāĻŖ:
```sql
SELECT COUNT(*), SUM(salary), AVG(salary) FROM employees;
```
---