Ultimate SQL Cheat Sheet to Bookmark for Later [2022]
نشرت: 2022-06-17SQL أو S tructured Q uery L anguage عبارة عن مجموعة من الأوامر لإدارة عمليات قاعدة البيانات العلائقية مثل الحذف والإنشاء والتحديث والقراءة وما إلى ذلك.
كانت SQL هي المعيار الدولي الذي تستخدمه قواعد البيانات العلائقية منذ عام 1987. هناك أربعة أنواع من أوامر SQL:
- لغة تعريف البيانات (DDL) - تحدد هذه الأوامر بنية قاعدة البيانات. على سبيل المثال ، قم بإفلات وإعادة تسمية وتعديل وإنشاء. أنها تؤثر على هيكل قاعدة البيانات. على سبيل المثال ، إنشاء قاعدة بيانات أو إعادة تسمية جدول.
- لغة معالجة البيانات (DML) - تُستخدم هذه الأوامر للعمل مع البيانات. على سبيل المثال ، إدراج ، تحديد ، تحديث ، حذف. لا تؤثر هذه على الجداول أو بنية قاعدة البيانات ، ولكن البيانات الموجودة في الجداول. على سبيل المثال ، إدراج صف جديد أو تحديث قيمة في الصف.
- لغة التحكم في المعاملات (TCL) - تتحكم هذه الأوامر في معالجة المعاملات في قاعدة البيانات. على سبيل المثال ، التراجع ، الحفظ ، الالتزام. هذه الأوامر لها تأثير دائم على قاعدة البيانات. على سبيل المثال ، استرجاع المعاملة بالكامل إلى الحالة السابقة حتى إذا فشلت إحدى العمليات.
- لغة التحكم في البيانات (DCL) - تُستخدم أوامر التحكم في البيانات لتخويل المستخدمين ومنح الأذونات الضرورية فقط لمستخدم أو مجموعة. على سبيل المثال ، يمكن لمستخدم ما الحصول على إذن للقراءة فقط ، بينما يمكن لمستخدم آخر القراءة والكتابة. يتم التحكم في الوصول باستخدام أوامر المنح والرفض والإلغاء.
يوجد أدناه ورقة SQL Cheat التي تحتوي على أكثر الأوامر فائدة. ستساعدك ورقة الغش في الرجوع بسرعة إلى الأوامر المطلوبة باستخدام الصيغة الصحيحة والنتيجة المتوقعة للاستعلام. في ورقة الغش هذه ، نركز على أوامر DDL و DML لأن النوعين الآخرين سهل الاستخدام تمامًا.
استعلامات تعريف البيانات ومعالجتها
يأمر | وصف | مثال |
يضيف | يضيف عمودًا أو قيدًا (كما هو محدد) إلى الجدول الموجود. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); |
تغيير الجدول | يغير الجدول المحدد لإضافة عمود الجدول أو تحديثه أو حذفه. | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee DROP COLUMN last_name; |
تغيير العمود | قم بتغيير نوع بيانات العمود. على سبيل المثال ، لتغيير نوع عمود تاريخ الانضمام لجدول الموظف من varchar2 إلى التاريخ والوقت. | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
الكل | عامل التشغيل المنطقي المستخدم مع SELECT و WHERE و HAVING ويعيد صحيحًا إذا كانت جميع القيم تفي بشرط الاستعلام الفرعي | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
و | العامل المنطقي الذي يعود صحيحًا فقط عند استيفاء جميع الشروط الواردة في جملة WHERE. | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
أي | عامل منطقي إرجاع صحيح إذا كانت حتى إحدى قيم الاستعلام الفرعي تفي بالشرط في جملة where | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D'); |
كما | ينشئ اسمًا مستعارًا للجدول أو العمود حتى وقت تنفيذ الاستعلام ، ويكون مفيدًا عند استخدام الاسم عدة مرات ، خاصة أثناء عمليات ضم الجدول | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
ASC | تُرجع البيانات بترتيب نهائي تصاعدي ، تُستخدم مع عبارة ORDER BY. يقوم ORDER BY نفسه بفرز النتائج تصاعديًا افتراضيًا. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
ما بين | لتحديد القيم داخل النطاق | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
قضية | يتكون من مجموعة من البيانات ؛ تُرجع قيمة العبارة الصحيحة ، إذا لم يتم استيفاء أي من الشروط ، يتم تنفيذ الشرط في جزء ELSE. إذا لم يكن هناك أي شيء آخر ، فسيتم إرجاع NULL. | SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details; |
إنشاء قاعدة بيانات | ينشئ قاعدة بيانات جديدة بالاسم المحدد | CREATE DATABASE movies_development; |
اصنع جدول | إنشاء جدول جديد باسم الجدول المحدد وأسماء وأنواع الأعمدة | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
إفتراضي | يعيّن قيمة افتراضية للعمود المحدد ، تُستخدم مع أوامر CREATE أو ALTER TABLE | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE); ALTER TABLE product ALTER is_available SET DEFAULT true; |
حذف | يحذف البيانات من الجدول المحدد | DELETE from employee where employee_id = 345; |
تنازلي | إرجاع البيانات بترتيب النهاية de sc ، المستخدم مع عبارة ORDER BY. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
إسقاط العمود | يحذف العمود المحدد من الجدول المحدد. | ALTER TABLE employee DROP COLUMN employee_name; |
إسقاط قاعدة البيانات | يحذف قاعدة البيانات بأكملها | DROP DATABASE movies_development; |
إسقاط افتراضي | يحذف القيمة الافتراضية للعمود المحدد | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
إسقاط الجدول | يحذف الجدول المحدد | DROP TABLE employee; |
EXISTS | للتحقق مما إذا كان هناك سجل موجود أم لا في الاستعلام الفرعي ، وإرجاع صحيح إذا تم العثور على نتيجة واحدة أو أكثر. | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR'); |
من | يحدد الجدول الذي يجب اختيار البيانات منه أو حذفها | SELECT * FROM employee; DELETE FROM employee where employee_id = 345; |
مجموعة من | بيانات المجموعات حسب العمود المحدد ، والمستخدمة للوظائف المجمعة | اعرض عدد الموظفين في كل بلدSELECT COUNT(employee_id), country from employee GROUP BY country; يظهر متوسط تصنيفات الموظفين في كل قسم SELECT AVG(rating), department from employee GROUP BY department; |
في | يستخدم لتحديد قيم متعددة مرة واحدة في جملة WHERE بدلاً من استخدام شروط OR متعددة | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia'); |
فهرس | يجعل الفهرس الاستعلام عن البيانات أكثر كفاءة وسرعة. يتم إنشاء الفهارس عادةً على الأعمدة التي يتم البحث عنها كثيرًا. | إنشاء فهرس:CREATE INDEX idx_employee ON employee (first_name, last_name); قم بإنشاء فهرس فريد حيث لا يمكن تكرار القيم: CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name); احذف الفهرس: ALTER TABLE employee DROP INDEX idx_employee; |
ادخل في | أضف صفًا جديدًا في الجدول | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
باطل | يتحقق من القيم الخالية | SELECT employee_id from employee where employee_name IS NULL; |
هو ليس لاشيء | يتحقق من القيم غير الفارغة | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL; |
مثل | تُرجع جميع القيم التي تطابق نمطًا معينًا | SELECT employee_id, first_name, last_name where first_name LIKE '%tony'; |
لا يشبه | تُرجع جميع القيم التي لا تتطابق مع النمط المحدد | SELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony'; |
أو | يعود صحيحًا إذا تم استيفاء أحد الشروط في جملة where | SELECT * from employee where country = 'India' OR country = 'Australia'; |
ترتيب حسب | يأمر النتائج بترتيب تصاعدي (افتراضيًا) أو بالترتيب المحدد في الاستعلام (نهاية تصاعدي أو نهاية تنازلية ) | SELECT employee_name, salary from employee ORDER BY salary DESC; |
ROWNUM | إرجاع العدد المحدد من الصفوف المذكورة في جملة WHERE من الاستعلام | SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset. |
تحديد | يحدد الأعمدة المذكورة في الجدول بناءً على الشروط المحددة. إذا تم تحديد * ، يتم إرجاع جميع قيم العمود. | SELECT employee_id from employee; SELECT * from employee; |
اختر في | ينسخ البيانات من الجدول المصدر إلى جدول وجهة آخر. يمكنك تحديد جميع الأعمدة (*) أو أعمدة معينة. | SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee; |
حدد الأعلى | تحديد عدد السجلات المحدد من الجدول | SELECT TOP 5 employee_id from employee where employee_rating = 5; |
تعيين | يضبط قيمة العمود على القيمة المحددة الجديدة أثناء عملية UPDATE. | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
بعض | إرجاع صحيح إذا تم استيفاء أحد الشروط في الاستعلام الفرعي. SOME مشابه لأي أمر. | SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR'); |
اقتطاع الجدول | يحذف البيانات من الجدول - تذكر أنه لن يتم حذف الجدول. | TRUNCATE TABLE log_info; |
اتحاد | إرجاع قيم مميزة من جدولين مرتبطين أو أكثر. للحصول على القيم المكررة أيضًا ، استخدم UNION ALL. | SELECT city from employee UNION SELECT city from office_locations; |
فريدة من نوعها | يضيف قيدًا فريدًا إلى العمود المحدد ، مما يعني أنه لا يمكن أن يحتوي العمود على قيم مكررة. يمكن استخدامها أثناء إنشاء الجدول أو تعديل الأوامر. | CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)); ALTER TABLE employee ADD UNIQUE(employee_id); |
تحديث | يحدّث قيمة العمود المحدد بقيمة جديدة | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
القيم | يُستخدم مع الأمر INSERT لإضافة صف جديد من القيم إلى الجدول | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
أين | يضيف شروطًا لتصفية مجموعة النتائج من عبارة select | SELECT * from employee WHERE salary > 20000; |
وظائف مجمعة
الدالات التجميعية هي أوامر معالجة البيانات التي تعمل على أعمدة رقمية مثل int و float. هذه مفيدة في تصفية البيانات وفرزها على مستوى قاعدة البيانات نفسها. بعض الوظائف المجمعة شائعة الاستخدام هي:

وظيفة | وصف | مثال |
AVG | إرجاع متوسط قيمة العمود المحدد | SELECT AVG(marks) from students where subject = 'English'; |
دقيقة | إرجاع أصغر قيمة للعمود المحدد | SELECT MIN(price) from product WHERE product_category = 'shoes'; |
الأعلى | تُرجع أكبر قيمة للعمود المحدد | SELECT MAX(quantity), product_name from inventory; |
عدد | تُرجع عدد الصفوف التي تُرضي الاستعلام | يظهر العدد الإجمالي للسجلات في جدول الموظف.SELECT COUNT(*) from employee; اظهر عدد الموظفين الذين يزيد راتبهم عن 20000 SELECT COUNT(*) from employee where salary > 20000; |
مجموع | تُرجع مجموع قيم العمود الرقمي المحدد | SELECT SUM(marks) from students where subject = 'English'; |
SQL ينضم
تعتبر صلات SQL مهمة جدًا لأنها تربط البيانات وتصفيتها من جداول متعددة. عمليات الانضمام صعبة بعض الشيء ويمكن أن تعطي نتائج غير متوقعة ، إذا لم يتم تنفيذها بشكل صحيح. سيساعدك الجدول أدناه على الرجوع بسرعة إلى الأنواع الأربعة من وصلات SQL:
نوع الانضمام | وصف | بناء الجملة | مثال |
صلة داخلية | إرجاع السجلات المطابقة في الجداول المرتبطة ؛ إنه مشابه للتقاطع. | حدد العمود 1 ، العمود 2 ... من الجدول 1 INNER JOIN table2 في table1.columnN = table2.columnN ؛ | select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id; |
صلة كاملة (خارجية) | تُرجع جميع السجلات التي تحتوي على تطابق على أي من الجانبين - يسارًا أو يمينًا. إنه مشابه للنقابة. | حدد العمود 1 ، العمود 2 ... من الجدول 1 FULL OUTER JOIN table2 في table1.columnN = table2.columnN ؛ | select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id; |
انضمام اليسار | تُرجع كافة السجلات من الجدول الأيسر والسجلات التي تطابق المعايير الموجودة في الجدول الأيمن | حدد العمود 1 ، العمود 2 ... من الجدول 1 LEFT JOIN table2 في table1.columnN = table2.columnN ؛ | select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id; |
حق الانضمام | تُرجع كافة السجلات من الجدول الأيمن والسجلات التي تطابق المعايير الموجودة في الجدول الأيسر | حدد العمود 1 ، العمود 2 ... من الجدول 1 الحق في الانضمام إلى الجدول 2 في table1.columnN = table2.columnN ؛ | select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id; |
مصادر إضافية
SQL هي أداة مهمة لمطوري البرامج وعلماء البيانات والمحللين على حد سواء. يمكن أن يوفر لك مرجع مفيد لأوامر SQL في شكل ورقة غش الكثير من الوقت ، ويساعدك على فهم الإخراج المتوقع لكل كلمة رئيسية.
للحصول على معلومات إضافية ، يرجى الرجوع إلى الموارد التالية:
دروس SQL: ورقة غش SQL
Intellipaat: ورقة الغش في أوامر SQL
إعداد الموقع: ورقة غش SQL
ProgrammingWithMosh: ورقة الغش SQL
ورقة الغش في PostgreSQL