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

0
5490

تعلم 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

id name days
1 January 31
2 February 29

Results

id name days
1 January 31
2 February 29
3 March 31

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

3. Select

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

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

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

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

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

characters

name race gender weapon hobby
ahmad Human male pistol shooting first
saleh Human male crossbow painting

 

Results:

name weapon
ahmad pistol
saleh crossbow

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

4. Where

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

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

characters

name race gender weapon hobby
ahmad Human male pistol shooting first
saleh Human male crossbow painting

 

Results

name race gender weapon hobby
ahmad Human male pistol shooting first

5. AND / OR

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

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

albums

artist album released genre sales_in_millions
Michael Jackson Thriller 1982 pop 70
AC/DC Back in Black 1980 rock 50
Pink Floyd The Dark Side of the Moon 1973 rock 45
Whitney Houston The Bodyguard 1992 soul 44

 

Results

artist album released genre sales_in_millions
Pink Floyd The Dark Side of the Moon 1973 rock 45
AC/DC Back in Black 1980 rock 50

 

6. In/Between/Like

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

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

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

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

albums

artist album released genre sales_in_millions
Michael Jackson Thriller 1982 pop 70
AC/DC Back in Black 1980 rock 50
Pink Floyd The Dark Side of the Moon 1973 rock 45
Whitney Houston The Bodyguard 1992 soul 44

 

 

Results

artist album released genre sales_in_millions
Michael Jackson Thriller 1982 pop 70
Whitney Houston The Bodyguard 1992 soul 44

 

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

7. Functions

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

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

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

albums

artist album released genre sales_in_millions
Michael Jackson Thriller 1982 pop 70
AC/DC Back in Black 1980 rock 50
Pink Floyd The Dark Side of the Moon 1973 rock 45
Whitney Houston The Bodyguard 1992 soul 44

 

MAX(released)
1992

 

8. Nested Select

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

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

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

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

albums

artist album released genre sales_in_millions
Michael Jackson Thriller 1982 pop 70
AC/DC Back in Black 1980 rock 50
Pink Floyd The Dark Side of the Moon 1973 rock 45
Whitney Houston The Bodyguard 1992 soul 44

Results

artist album released
Pink Floyd The Dark Side of the Moon 1973

 

9. Joining Tables

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

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

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

video_games

id name developer_id genre
1 Super Mario Bros. 2 platformer
2 World of Warcraft 1 MMORPG
3 The Legend of Zelda 2 adventure

 

game_developers

id name country
1 Blizzard USA
2 Nintendo Japan

 

Results

name genre name country
Super Mario Bros. platformer Nintendo Japan
World of Warcraft MMORPG Blizzard USA
The Legend of Zelda adventure Nintendo Japan

 

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

10. Aliases

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

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

video_games

id name developer_id genre
1 Super Mario Bros. 2 platformer
2 World of Warcraft 1 MMORPG
3 The Legend of Zelda 2 adventure

game_developers

id name country
1 Blizzard USA
2 Nintendo Japan

 

Results

name genre developer country
Super Mario Bros. platformer Nintendo Japan
World of Warcraft MMORPG Blizzard USA
The Legend of Zelda adventure Nintendo Japan

 

11. Update

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

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

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

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

tv_series

id name genre still_running imdb_rating
1 Breaking Bad drama no 9.5
2 Game of Thrones comedy yes 9.5
3 Rick and Morty comedy yes 9.4
4 Sherlock mystery yes 9.3

Results

id name genre still_running imdb_rating
2 Game of Thrones drama yes 9.5

 

12. Delete Rows

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

tv_series

id name genre still_running imdb_rating
1 Breaking Bad drama no 9.5
2 Game of Thrones comedy yes 9.5
3 Rick and Morty comedy yes 9.4
4 Sherlock mystery yes 9.3

 

Results

id name genre still_running imdb_rating
1 Breaking Bad drama no 9.5
2 Game of Thrones comedy yes 9.5
3 Rick and Morty comedy yes 9.4

 

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

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

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

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

اترك رد

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