Giriş
SQL bütün dünyada developerlər, məlumat analitikləri və verilənlər bazası administratorları tərəfindən istifadə olunan verilənlər bazasının dilidir. Ancaq bir çox SQL sorğuları zəif formatlaşdırılır və onları oxumaq, başa düşmək və saxlamaq çətin olur.
Yaxşı formatlaşdırılmış SQL yalnız estetika haqqında deyil - kod keyfiyyəti, saxlanıla bilmə və əməkdaşlıq haqqındadır. Bu əhatəli bələdçi sizə SQL sorğularını peşəkar şəkildə formatlaşdırmağı öyrədəcək və verilənlər bazası kodunuzu təmiz, oxunaqlı və saxlanıla bilən edəcək.
SQL Formatlaşdırması Niyə Vacibdir
Oxunaqlılıq
Zəif Formatlaşdırılmış:
SELECT u.id,u.name,u.email,o.total,o.date FROM users u JOIN orders o ON u.id=o.user_id WHERE u.active=1 AND o.date>'2024-01-01' ORDER BY o.total DESC;
Yaxşı Formatlaşdırılmış:
SELECT
u.id,
u.name,
u.email,
o.total,
o.date
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = 1
AND o.date > '2024-01-01'
ORDER BY o.total DESC;
Fərq: Formatlaşdırılmış versiya dərhal başa düşüləndir.
Saxlanıla Bilmə
Yaxşı formatlaşdırılmış SQL:
- Debug etmək asandır: Problemləri tapmaq asandır
- Dəyişdirmək asandır: Dəyişikliklər daha az səhvə meyllidir
- Nəzərdən keçirmək asandır: Kod nəzərdən keçirmələri daha effektivdir
- Sənədləşdirmək asandır: Özünü sənədləşdirən kod
Əməkdaşlıq
Komandalarda işləyərkən:
- Ardıcıl formatlaşdırma çaşqınlığı azaldır
- Asan kod nəzərdən keçirmələri
- Daha sürətli onboarding
- Daha yaxşı bilik paylaşımı
SQL Formatlaşdırma Standartları
1. Açar Sözlər
Qayda: SQL açar sözləri üçün böyük hərf istifadə edin Niyə: Açar sözləri identifikatorlardan fərqləndirir
SELECT, FROM, WHERE, JOIN, ORDER BY, GROUP BY
2. Abzas
Qayda: Alt klozaları və yerləşdirilmiş sorğuları abzasla yazın Standart: 2 və ya 4 boşluq (ardıcıl olun)
SELECT
column1,
column2
FROM table1
WHERE condition1
AND condition2
3. Sətir Fasilələri
Qayda: Əsas klozaları ayrı sətirlərə qoyun Klozalar: SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY
SELECT columns
FROM table
WHERE conditions
4. Vergüllər
Qayda: Arxada vergüllər və ya öndə vergüllər (ardıcıl olun) Arxada (ümumi):
SELECT
column1,
column2,
column3
Öndə (alternativ):
SELECT
column1
, column2
, column3
5. Düzləndirmə
Qayda: Oxşar elementləri düzləndirin Nümunə: SELECT sütunlarını, WHERE şərtlərini düzləndirin
SELECT
user_id,
user_name,
user_email
FROM users
WHERE user_active = 1
AND user_created > '2024-01-01'
Müxtəlif SQL Konstruksiyalarının Formatlaşdırılması
SELECT İfadələri
Əsas Struktur:
SELECT
column1,
column2,
column3
FROM table_name
WHERE condition
ORDER BY column1;
Ləqəblərlə:
SELECT
u.id AS user_id,
u.name AS user_name,
COUNT(o.id) AS order_count
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name;
JOIN-lar
INNER JOIN:
SELECT
u.name,
o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
Çoxlu JOIN-lar:
SELECT
u.name,
p.name AS product_name,
oi.quantity
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id;
LEFT JOIN:
SELECT
u.name,
o.total
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE o.id IS NULL; -- Sifarişi olmayan istifadəçilər
WHERE Klozaları
Sadə Şərtlər:
WHERE status = 'active'
AND created_date > '2024-01-01'
Mürəkkəb Şərtlər:
WHERE (status = 'active' OR status = 'pending')
AND created_date > '2024-01-01'
AND (user_id IN (1, 2, 3) OR email LIKE '%@example.com')
Alt Sorğular:
WHERE user_id IN (
SELECT id
FROM users
WHERE active = 1
)
GROUP BY və HAVING
SELECT
category,
COUNT(*) AS product_count,
AVG(price) AS avg_price
FROM products
WHERE active = 1
GROUP BY category
HAVING COUNT(*) > 10
ORDER BY product_count DESC;
CASE İfadələri
SELECT
name,
CASE
WHEN age < 18 THEN 'Yetkinlik yaşına çatmayan'
WHEN age < 65 THEN 'Yetkin'
ELSE 'Yaşlı'
END AS age_group
FROM users;
CTE-lər (Ümumi Cədvəl İfadələri)
WITH active_users AS (
SELECT
id,
name,
email
FROM users
WHERE active = 1
),
user_orders AS (
SELECT
u.id,
COUNT(o.id) AS order_count
FROM active_users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id
)
SELECT
u.name,
COALESCE(uo.order_count, 0) AS orders
FROM active_users u
LEFT JOIN user_orders uo ON u.id = uo.id;
Ən Yaxşı Təcrübələr
1. Ardıcıl Olun
Qayda: Bir üslub seçin və ona sadiq qalın Niyə: Ardıcıllıq koqnitiv yükü azaldır
2. Mənalı Ləqəblər İstifadə Edin
Pis:
SELECT u.n, u.e FROM users u
Yaxşı:
SELECT
u.name,
u.email
FROM users u
3. Uzun Sorğuları Formatlaşdırın
Qayda: Uzun sorğuları məntiqi bölmələrə ayırın İstifadə: Bölmələri ayırmaq üçün şərhlər
-- Aktiv istifadəçiləri əldə edin
SELECT
u.id,
u.name
FROM users u
WHERE u.active = 1
-- Sifarişlərlə birləşdirin
JOIN orders o ON u.id = o.user_id
-- Son sifarişləri süzün
WHERE o.date > '2024-01-01'
4. Əlaqəli Elementləri Düzləndirin
Qayda: Asan skan etmək üçün oxşar klozaları düzləndirin Nümunə: Bütün JOIN şərtlərini düzləndirin
SELECT
u.id,
u.name,
p.name AS product_name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id
5. Şərhləri Ağılla İstifadə Edin
Yaxşı Şərhlər:
-- Aktiv istifadəçilər üçün ümumi gəliri hesablayın
SELECT
u.id,
SUM(o.total) AS total_revenue
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = 1 -- Yalnız aktiv istifadəçilər
GROUP BY u.id;
Pis Şərhlər:
-- İstifadəçiləri seçin
SELECT * FROM users; -- Bu istifadəçiləri seçir
Ümumi Formatlaşdırma Səhvləri
Səhv 1: Hər Şey Bir Sətirdə
Problem: Oxunmaz, debug etmək çətin Həll: Çoxlu sətirə bölün
Səhv 2: Uyğunsuz Abzas
Problem: Strukturu izləmək çətin Həll: Ardıcıl abzas istifadə edin (2 və ya 4 boşluq)
Səhv 3: Qarışıq Böyük/Kiçik Hərf Açar Sözləri
Problem: Uyğunsuz görünüş Həll: Həmişə açar sözlər üçün BÖYÜK HƏRF istifadə edin
Səhv 4: Operatorların Ətrafında Boşluq Yoxdur
Problem: Oxumaq çətin
Həll: Boşluqlar istifadə edin: column = value column=value deyil
Səhv 5: Uyğunsuz Vergül Yerləşdirməsi
Problem: Çaşdırıcı Həll: Arxada və ya öndə seçin, ona sadiq qalın
SQL Formatlaşdırma üçün Alətlər
Onlayn Formatçılar
- SQLFormat: Pulsuz onlayn SQL formatçısı
- FreeFormatter: Çoxlu SQL dialektləri
- SQL Beautifier: Sürətli formatlaşdırma
IDE Pluginləri
- SQL Formatter (VS Code)
- Poor Man's T-SQL Formatter (SQL Server)
- A5 SQL Formatter (Müxtəlif IDE-lər)
Komanda Sətri Alətləri
sqlformat (Python):
pip install sqlparse
sqlformat --reindent query.sql
Verilənlər Bazası Xüsusi Alətlər
- pgFormatter: PostgreSQL
- SQL Server Management Studio: Daxili formatçı
- MySQL Workbench: Formatlaşdırma seçimləri
Müxtəlif Verilənlər Bazaları üçün Formatlaşdırma
PostgreSQL
SELECT
column1,
column2
FROM table_name
WHERE condition;
MySQL
SELECT
`column1`,
`column2`
FROM `table_name`
WHERE `condition`;
SQL Server
SELECT
[column1],
[column2]
FROM [table_name]
WHERE [condition];
Qabaqcıl Formatlaşdırma Texnikaları
1. Mürəkkəb Sorğuları Formatlaşdırma
Məntiqi bölmələrə ayırın:
-- Əsas sorğu
SELECT
columns
FROM
-- Alt sorğu və ya CTE
(SELECT ...) AS subquery
WHERE
conditions
GROUP BY
columns
HAVING
aggregate_conditions
ORDER BY
columns;
2. Saxlanmış Prosedurları Formatlaşdırma
CREATE PROCEDURE GetUserOrders
@UserId INT
AS
BEGIN
SET NOCOUNT ON;
SELECT
o.id,
o.date,
o.total
FROM orders o
WHERE o.user_id = @UserId
ORDER BY o.date DESC;
END;
3. View-ları Formatlaşdırma
CREATE VIEW ActiveUserOrders AS
SELECT
u.id AS user_id,
u.name AS user_name,
o.id AS order_id,
o.total AS order_total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.active = 1;
Nəticə
SQL formatlaşdırması verilənlər bazaları ilə işləyən hər kəs üçün vacib bacarıqdır. Yaxşı formatlaşdırılmış SQL oxumaq, başa düşmək, saxlamaq və debug etmək daha asandır. O, əməkdaşlığı yaxşılaşdırır və səhvləri azaldır.
Unutmayın:
- Formatlaşdırma üslubunuzla ardıcıl olun
- Strukturu göstərmək üçün düzgün abzas istifadə edin
- Uzun sorğuları oxunaqlı bölmələrə ayırın
- Mənalı ləqəblər və adlar istifadə edin
- Yaxşı vərdişlər yaratmaq üçün yazarkən formatlaşdırın
Bu gün SQL sorğularınızı formatlaşdırmağa başlayın. Gələcək özünüz (və komanda yoldaşlarınız) bunun üçün təşəkkür edəcək.
Bizim SQL Alətlərimizdən İstifadə
1tool.dev-da biz SQL sorğularınızı formatlaşdırmağa kömək edən güclü SQL Formatçısı təklif edirik. Alətimiz kodunuzu dərhal təmizləyir və oxunaqlı edir.
Bu gün SQL formatçımızı sınayın və daha yaxşı, daha oxunaqlı sorğular yazın!




