تعلم SQL في 20 دقيقة

0
568

تعلم SQL في 20 دقيقة , على كل مطور ويب أن يعرف SQL. على الرغم من أنها موجودة منذ السبعينات ، فإنها لا تزال تستخدم على نطاق واسع، ولا يمكنك بناء تطبيق جدي من دونه. معظم الأطر لديها مكتبات للتعامل مع تعقيدات SQL , ActiveRecord, Doctrine, Hibernate  وأكثر من ذلك. ولكن في كثير من الأحيان تحتاج إلى أن تكتب بنفسك بلغة  SQL منخفضة المستوى.

لهذا السبب قمنا بتحضير مقدمة قصيرة وفي الصميم لأساسيات SQL. ضمن هذا المقال .

هيا نبدأ!

  1. إنشاء الجدول  Create Table

    عند إنشاء جداول جديدة في SQL فإنه يطلق عليها  CREATE TABLE . وهو يتضمن الأعمدة التي نريدها في الجدول، مع أنواع البيانات الخاصة بهم.

    سوف نقوم هنا بإنشاء جدول بسيط يسمى أشهر. وهو يتألف من 3 أعمدة columns:

    • id : عدد الشهر في السنة التقويمية (integer) .
    • Name : اسم الشهر (string, maximum of 10 characters).
    • Days : عدد الأيام في ذلك الشهر (integer) .

    وهذه هي الطريقة التي تبدو فيها SQL:

    أيضا عند إنشاء الجداول، من المستحسن إضافة مفتاح أساسي إلى أحد الأعمدة. وهذا يساعد على ان تكون المدخلات فريدة من نوعها ويسرع من عمليات ال queries الاستعلامات.

  2.  إدراج الصفوف Insert Rows

    الآن دعونا نملأ الأشهر مع عدد من الصفوف بالمعلومات. تتم إضافة بيانات إلى الجدول من خلال  INSERT وهناك طريقتان مختلفتان لاستخدامه:

    الطريقة الأولى لا يتم خلالها تحديد أسماء الأعمدة التي سيتم إدراج البيانات فيها، فإنها فقط تتوقع القيم ويُترك الأمر للمطور لتزويد كافة البيانات بالترتيب الصحيح.

    ولكن الطريقة المثلى لكتابة هذا هو تضمين الأعمدة:

    يمكنك تجربة تشغيل هذه الأوامر :

months

idnamedays
1January31
2February29

Results

idnamedays
1January31
2February29
3March31

مساعدة : اكتب عبارة INSERT  لإضافة المزيد من الشهور إلى الجدول.

3. Select

هي الأفضل عندما نريد جلب معلومات من قاعدة البيانات. يتم استخدامها في كل وقت , حتى في هذا المقال سوف ينفق الكثير من الوقت تغطيتها.

سيكون أبسط مثال على  SELECT هو هذا الاستعلام query الذي سيعرض كافة الأعمدة والصفوف من جدول characters table :

النجمة (*) تعني أننا نريد استرجاع جميع الأعمدة، دون استبعاد أي شيء. بما أن قواعد بيانات SQL تتكون عادة من أكثر من جدول واحد، فإن الكلمة الرئيسية FROM  مطلوبة لتحديد الجدول الذي نريد أن نبحث فيه.

في بعض الأحيان لا نريد جميع الأعمدة في الجدول. SQL يسمح لنا باختيار فقط تلك التي نحتاج إليها: بدلا من وضع العلامة النجمية (*)، فاننا نكتب أسماء الأعمدة المطلوبة.

أيضا، في كثير من الحالات نريد فرز النتائج بطريقة معينة. في SQL نقوم بذلك عن طريق استخدام  ORDER BY. يمكن استخدام DESC  لتحديد البيانات المراد استرجاعها  وفرز النتائج:

characters

nameracegenderweaponhobby
ahmadHumanmalepistolshooting first
salehHumanmalecrossbowpainting

 

Results:

nameweapon
ahmadpistol
salehcrossbow

مساعدة : كتابة SELECT  من شأنها أن تحدد أعمدة الاسم والعرق والهواية.

4. Where

لقد تعلمت كيفية تحديد أعمدة معينة فقط، ولكن ماذا لو أردنا الحصول على صفوف معينة فقط. هنا يأتي شرط Where، مما يسمح لنا لتصفية البيانات اعتمادا على شرط معين.

في هذا الاستعلام query  نختار فقط تلك المدخلات من جدول characters table، الذين يستخدمون pistol  لمحاربة الأعداء.

characters

nameracegenderweaponhobby
ahmadHumanmalepistolshooting first
salehHumanmalecrossbowpainting

 

Results

nameracegenderweaponhobby
ahmadHumanmalepistolshooting first

5. AND / OR

يمكن استخدام Where  الشرطية لتحديد ما تريد، مع مساعدة من logical operators  (AND ، OR) وأدوات المقارنة الرياضية مثل (=، <،>، <=،> =، <>).

هنا لدينا جدول يحتوي على أعلى 4 ألبومات الأكثر مبيعا في كل العصور. دعونا نختار تلك التي تصنف على أنها rock  وبيعت تحت 50 مليون نسخة. ويمكن القيام بذلك بسهولة عن طريق وضع AND  بين الجمل .

albums

artistalbumreleasedgenresales_in_millions
Michael JacksonThriller1982pop70
AC/DCBack in Black1980rock50
Pink FloydThe Dark Side of the Moon1973rock45
Whitney HoustonThe Bodyguard1992soul44

 

Results

artistalbumreleasedgenresales_in_millions
Pink FloydThe Dark Side of the Moon1973rock45
AC/DCBack in Black1980rock50

 

6. In/Between/Like

تدعم  Where أيضا بعض الأوامر الخاصة، مما يتيح طريقة سريعة للتحقق من الاستعلامات الشائعة الاستخدام. هي:

  • IN – يقارن العمود نسبة الى قيم متعددة، ويرجع صحيح إذا كان يطابق قيمة واحدة على الأقل.
  • BETWEEN- تتحقق إذا كانت القيمة ضمن الRange .
  • LIKE – البحث عن نمط معين .

على سبيل المثال، إذا أردنا إجراء استعلام لتحديد ألبومات pop  و soul  من جدولنا، يمكننا استخدام IN(“value1″,”value2”)

إذا أردنا الحصول على جميع الألبومات التي صدرت بين عامي 1975 و 1985 سنكتب:

albums

artistalbumreleasedgenresales_in_millions
Michael JacksonThriller1982pop70
AC/DCBack in Black1980rock50
Pink FloydThe Dark Side of the Moon1973rock45
Whitney HoustonThe Bodyguard1992soul44

 

 

Results

artistalbumreleasedgenresales_in_millions
Michael JacksonThriller1982pop70
Whitney HoustonThe Bodyguard1992soul44

 

مساعدة : كل من العمليات المذكورة أعلاه يمكن عكسها عن طريق وضع NOT  أمامهم. حاول استخدام NOT BETWEEN  للحصول على ألبومات صدرت قبل عام 1975 وبعد عام 1985.

7. Functions

SQL  مليئة ب Functions المفيدة. وفيما يلي بعض من الأكثر استخداما:

  • COUNT() : لإرجاع عدد الصفوف .
  • SUM() : ترجع مجموع عمود رقمي.
  • AVG() : ترجع متوسط مجموعة من القيم.
  • MIN() / MAX() : يرجع الحد الأدنى / الحد الأقصى للقيم من عمود معين.

للحصول على أحدث سنة في جدولنا يمكننا تشغيل:

albums

artistalbumreleasedgenresales_in_millions
Michael JacksonThriller1982pop70
AC/DCBack in Black1980rock50
Pink FloydThe Dark Side of the Moon1973rock45
Whitney HoustonThe Bodyguard1992soul44

 

MAX(released)
1992

 

8. Nested Select

في النقطة السابقة تعلمنا كيفية القيام بعمليات حسابية بسيطة مع البيانات. إذا أردنا استخدام النتيجة فعليا من هذه الحسابات، غالبا ما يكون من الضروري وجود استعلام متداخل nested query (يعرف أيضا باسم sub select). لنفترض أننا نريد الحصول على الفنان والألبوم وسنة الإصدار لأقدم ألبوم في الجدول.

نحن نعلم كيفية الحصول على هذه الأعمدة المحددة:

ونحن نعلم أيضا كيفية الحصول على السنة الأولى:

كل ما هو مطلوب الآن هو الجمع بين اثنين مع مساعدة من WHERE:

albums

artistalbumreleasedgenresales_in_millions
Michael JacksonThriller1982pop70
AC/DCBack in Black1980rock50
Pink FloydThe Dark Side of the Moon1973rock45
Whitney HoustonThe Bodyguard1992soul44

Results

artistalbumreleased
Pink FloydThe Dark Side of the Moon1973

 

9. Joining Tables

في قواعد البيانات الأكثر تعقيدا، في معظم الوقت هناك عدة جداول متصلة بعضها البعض بطريقة أو بأخرى. على سبيل المثال، أدناه في المحرر جدولان حول ألعاب الفيديو ومطوري ألعاب الفيديو.

في جدول video_games هناك عمود مطور، ولكنه يحمل عددا صحيحا بدلا من اسم المطور. يمثل هذا الرقم المطور المختص من جدول game_developers، وربط منطقيا الجدولين، مما يسمح لنا لاستخدام المعلومات المخزنة في كل منهما في نفس الوقت.

إذا أردنا إنشاء استعلام يعرض كل ما نحتاج إلى معرفته حول الألعاب، يمكننا استخدام INNER JOIN للحصول على الأعمدة من كلا الجدولين.

video_games

idnamedeveloper_idgenre
1Super Mario Bros.2platformer
2World of Warcraft1MMORPG
3The Legend of Zelda2adventure

 

game_developers

idnamecountry
1BlizzardUSA
2NintendoJapan

 

Results

namegenrenamecountry
Super Mario Bros.platformerNintendoJapan
World of WarcraftMMORPGBlizzardUSA
The Legend of ZeldaadventureNintendoJapan

 

هذا هو الأبسط والأكثر شيوعا نوع JOIN. هناك بضعة خيارات أخرى، ولكنها تنطبق على سيناريوهات أقل تكررا. الرسم البياني  Chart of SQL Joins

10. Aliases

إذا نظرتم إلى المثال السابق ستلاحظ أن هناك عمودين يسمى الاسم. هذا أمر مربك، لذا دعونا نغيره عن طريق تعيين اسم بديل alias  إلى أحد الأعمدة المتكررة: سيظهر الاسم من game_developers كمطور برامج.

يمكننا أيضا اختصار الاستعلام query  بشكل كبير عن طريق وضع الأسماء المستعارة لأسماء الجدول: video_games يصبح الألعاب  games  و game_developers يصبح devs.

video_games

idnamedeveloper_idgenre
1Super Mario Bros.2platformer
2World of Warcraft1MMORPG
3The Legend of Zelda2adventure

game_developers

idnamecountry
1BlizzardUSA
2NintendoJapan

 

Results

namegenredevelopercountry
Super Mario Bros.platformerNintendoJapan
World of WarcraftMMORPGBlizzardUSA
The Legend of ZeldaadventureNintendoJapan

 

11. Update

في كثير من الأحيان علينا تغيير البيانات في بعض الصفوف. في SQL  يتم ذلك عن طريق UPDATE

وهو هو يتكون من :

  • اختيار الجدول الذي يوجد فيه السجل الذي نريد تغييره.
  • تحديد قيمة جديدة للعمود المطلوب.
  • التحديد باستخدام WHERE أي الصفوف التي نريد تحديثها. إذا تم حذف هذا سيتم تغيير كافة الصفوف في الجدول.

هنا هو جدول لبعض من المسلسلات التلفزيونية الأعلى تصنيف في كل العصور. هناك مشكلة صغيرة واحدة ، يتم وصف  Game of Thrones على أنه كوميدي ، التي من الواضح أنها ليست كذلك. دعونا إصلاح ذلك!

tv_series

idnamegenrestill_runningimdb_rating
1Breaking Baddramano9.5
2Game of Thronescomedyyes9.5
3Rick and Mortycomedyyes9.4
4Sherlockmysteryyes9.3

Results

idnamegenrestill_runningimdb_rating
2Game of Thronesdramayes9.5

 

12. Delete Rows

حذف صف من جدول خلال SQL  عملية بسيطة حقا. كل ما هو مطلوب هو تحديد الجدول الصحيح والصف الذي نريد إزالته.

tv_series

idnamegenrestill_runningimdb_rating
1Breaking Baddramano9.5
2Game of Thronescomedyyes9.5
3Rick and Mortycomedyyes9.4
4Sherlockmysteryyes9.3

 

Results

idnamegenrestill_runningimdb_rating
1Breaking Baddramano9.5
2Game of Thronescomedyyes9.5
3Rick and Mortycomedyyes9.4

 

هناك الكثير لتغطية، ولكن ما سبق يجب أن يكون كافيا لإعطائك بعض المهارات العملية في حياتك ك  web dev.

لمزيد من المعلومات حول SQL  تحقق من هذه الموارد.

ماالمقصود بقاعدة البيانات.

أساسيات قواعد البيانات.

اترك رد

اترك تعليق
ادخل اسمك هنا