Menu
flag Ar iconالعربيةdown icon

أوامر SQL: قائمة بأشهر جمل SQL مع أمثلة

أوامر SQL التي تستخدمها كل يوم، مصنّفة حسب وظيفتها (DDL وDML وDQL وTCL)، ولكل أمر مثال يمكنك تشغيله في SQLite.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

أوامر SQL في لمحة

تنقسم أوامر SQL إلى مجموعات قليلة حسب وظيفتها. يسرد الجدول الأوامر التي ستستخدمها أكثر من غيرها، وكل قسم أدناه يشغّل واحدًا منها.

الأمرالمجموعةماذا يفعل
CREATE TABLEDDLيعرّف جدولًا جديدًا وأعمدته
ALTER TABLEDDLيضيف عمودًا أو يعيد تسميته، أو يعيد تسمية جدول
DROP TABLEDDLيحذف جدولًا مع كل صفوفه
INSERTDMLيضيف صفوفًا جديدة
UPDATEDMLيغيّر القيم في صفوف موجودة
DELETEDMLيحذف صفوفًا
SELECTDQLيقرأ الصفوف، ويصفّيها بـ WHERE ويرتّبها بـ ORDER BY
BEGIN, COMMIT, ROLLBACKTCLيجمع التغييرات بحيث تنجح معًا أو تفشل معًا

DDL هي لغة تعريف البيانات، وDML لغة معالجة البيانات، وDQL لغة الاستعلام عن البيانات، وTCL لغة التحكم في المعاملات. الأسماء أقل أهمية من التقسيم نفسه: DDL تغيّر شكل قاعدة البيانات، وDML تغيّر ما بداخلها.

أمر CREATE TABLE: تعريف جدول

يسمّي CREATE TABLE الجدول ويسرد أعمدته مع أنواعها وقواعدها. كل أمر آخر في هذه الصفحة يحتاج إلى جدول ليعمل عليه.

تشرح صفحة CREATE TABLE قواعد مثل NOT NULL وUNIQUE وDEFAULT.

أمر INSERT: إضافة الصفوف

يضيف INSERT INTO صفًا واحدًا أو عدة صفوف. اذكر الأعمدة، ثم القيم بالترتيب نفسه.

امتلأ العمود id تلقائيًا: العمود من نوع INTEGER PRIMARY KEY يحصل على الرقم التالي عندما تتركه. المزيد عن ذلك في INSERT.

أمر SELECT: قراءة الصفوف

SELECT هو الأمر الذي ستكتبه أكثر من أي أمر آخر. اختر الأعمدة، وصفِّ الصفوف بـ WHERE، ورتّبها بـ ORDER BY.

لا تعود إلا الصفوف التي تجتاز شرط WHERE، والدرجة الأعلى أولًا. راجع أساسيات SELECT وWHERE للتفاصيل.

أمر UPDATE: تعديل الصفوف

يضع UPDATE قيمًا جديدة في صفوف موجودة بالفعل. يحدّد شرط WHERE الصفوف المقصودة، وإذا حذفته تتغيّر كل الصفوف.

عندما لا تكون متأكدًا مما يطابقه شرط WHERE، شغّله أولًا ضمن SELECT. تعرض صفحة UPDATE أنماطًا أخرى.

أمر DELETE: حذف الصفوف

يحذف DELETE FROM الصفوف التي تطابق شرط WHERE الخاص به. ومثل UPDATE، يؤثّر في كل الصفوف إذا غاب الشرط.

اختفى صف Chen وبقيت الصفوف الأخرى كما هي. راجع DELETE.

أمرا ALTER TABLE وDROP TABLE: تعديل جدول أو حذفه

يغيّر ALTER TABLE جدولًا موجودًا دون فقدان صفوفه. أما DROP TABLE فيحذف الجدول بالكامل.

يبدأ العمود الجديد بالقيمة NULL في الصفوف الموجودة حتى تملأه. تسرد صفحة ALTER وDROP TABLE ما يسمح به SQLite.

أمر JOIN: ربط الجداول

يقرأ JOIN صفوفًا من جدولين في الوقت نفسه، ويطابق بينها عبر عمود مشترك.

ليس لدى Boris أي تسجيل، لذا يستبعده INNER JOIN. أما LEFT JOIN فيُبقيه، مع مقرر فارغ.

أمر GROUP BY: تلخيص الصفوف

يدمج GROUP BY الصفوف التي تشترك في قيمة واحدة في صف واحد، وتلخّص دالة تجميع مثل COUNT أو AVG كل مجموعة.

تتعمّق صفحتا دوال التجميع وGROUP BY وHAVING أكثر.

أوامر BEGIN وCOMMIT وROLLBACK: تجميع التغييرات

تجعل المعاملة عدة تغييرات تُحسب كتغيير واحد. يحتفظ COMMIT بها جميعًا، ويتراجع ROLLBACK عنها جميعًا.

ثُبّت التحويل وتُراجع عن التغيير الثاني، لذا ينتهي رصيد Ada عند 70 ورصيد Boris عند 80. تشرح صفحة المعاملات متى تستخدمها.

أين يختلف SQLite

الأوامر في هذه الصفحة من SQL القياسية، وما تتعلمه هنا ينفعك في MySQL وPostgreSQL. لكن الأمثلة القابلة للتشغيل مكتوبة لـ SQLite، وتتغير ثلاثة تفاصيل في قواعد البيانات الأكبر:

  • عرض الجداول. تقرأ الأمثلة sqlite_master، وهو جدول المخطط الخاص بـ SQLite. يستخدم MySQL الأمر SHOW TABLES، ويستخدم PostgreSQL العرض information_schema.tables (أو \dt داخل psql).
  • المعرّفات التلقائية. في SQLite يرقّم العمود المعرّف بـ INTEGER PRIMARY KEY الصفوف الجديدة تلقائيًا، ولهذا تحذف أمثلة INSERT العمود id. أما MySQL فيحتاج إلى AUTO_INCREMENT على العمود، ويحتاج PostgreSQL إلى عمود هوية (GENERATED BY DEFAULT AS IDENTITY) أو SERIAL.
  • الصلاحيات وتغييرات المخطط. لا يوجد في SQLite الأمران GRANT وREVOKE، لأن قاعدة بيانات SQLite ملف واحد بلا حسابات مستخدمين، ولا يستطيع ALTER TABLE فيه تغيير نوع العمود.

الأسئلة الشائعة

ما أوامر SQL الأساسية؟

خمسة أوامر تغطّي معظم العمل اليومي: CREATE TABLE لتعريف جدول، وINSERT لإضافة الصفوف، وSELECT لقراءتها، وUPDATE لتعديلها، وDELETE لحذفها. ثم تأتي بعدها ALTER TABLE وDROP TABLE وJOIN وGROUP BY وأوامر المعاملات BEGIN وCOMMIT وROLLBACK.

ما الفرق بين DDL وDML؟

تغيّر DDL (لغة تعريف البيانات) بنية قاعدة البيانات: CREATE وALTER وDROP. وتغيّر DML (لغة معالجة البيانات) الصفوف الموجودة داخل الجداول: INSERT وUPDATE وDELETE. أما SELECT فيقرأ فقط، لذا يُذكر غالبًا وحده تحت اسم DQL.

هل أوامر SQL حساسة لحالة الأحرف؟

لا. تعمل SELECT وselect وSelect كلها. كتابة الكلمات المفتاحية بأحرف كبيرة عُرف يميّزها عن أسماء الجداول والأعمدة. لكن النص بين علامات التنصيص يُقارن حرفيًا، لذا 'Ada' و'ada' سلسلتان مختلفتان في SQLite ما لم تطلب مقارنة لا تفرّق بين الأحرف الكبيرة والصغيرة.

هل تعمل هذه الأوامر بالطريقة نفسها في MySQL وPostgreSQL؟

هذه الجمل من SQL القياسية ولها المعنى نفسه في الثلاثة، لذا فما تتعلمه هنا ينفعك هناك أيضًا. لكن الأمثلة القابلة للتشغيل مكتوبة لـ SQLite: لعرض الجداول نقرأ هنا sqlite_master، والمعرّفات التلقائية تحتاج إلى AUTO_INCREMENT في MySQL أو إلى عمود هوية في PostgreSQL، ولا يوجد في SQLite الأمران GRANT وREVOKE.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن