تخطَّ إلى المحتوى
ARAB CODEمجتمع المطورين العرب

لغة 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) دائماً.

المصادر

  1. PostgreSQL tutorial — The SQL Language
  2. SQL Commands reference