لغة SQL
SQL (Structured Query Language) لغة تصريحية: تصف النتيجة المطلوبة، ومحرك قاعدة البيانات يقرر كيف يحصل عليها.
إنشاء الجداول
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE posts (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id),
title TEXT NOT NULL
);
القراءة والتصفية
SELECT name, email
FROM users
WHERE created_at >= '2026-01-01'
ORDER BY created_at DESC
LIMIT 10;
الربط (JOIN)
SELECT u.name, p.title
FROM posts p
JOIN users u ON u.id = p.user_id;
JOIN (أي INNER JOIN) يعيد الصفوف المتطابقة فقط؛ LEFT JOIN يعيد كل صفوف الجدول الأيسر حتى بلا تطابق (القيم الناقصة NULL).
التجميع
SELECT u.name, COUNT(p.id) AS posts
FROM users u
LEFT JOIN posts p ON p.user_id = u.id
GROUP BY u.id, u.name
HAVING COUNT(p.id) > 5;
WHERE تصفي الصفوف قبل التجميع، وHAVING تصفي المجموعات بعده.
التعديل
UPDATE users SET name = 'سارة' WHERE id = 7;
DELETE FROM posts WHERE id = 42;
أخطاء شائعة
UPDATEأوDELETEبلاWHEREيغيّر كل الصفوف.- مقارنة
NULLبـ=؛ استخدمIS NULL. - بناء الاستعلام بدمج نصوص من المستخدم يفتح باب حقن SQL؛ استخدم الاستعلامات المعاملية (parameterized) دائماً.