بأزيد من 200 لغة برمجية في العالم اليوم قد تطرح على نفسك السؤال الأكثر شهرة بين كل المبرمجين او على الأقل المستجدين في مجال البرمجة و هو : ما هي أفضل لغة برمجة ؟، قد تبحث كثيرا في مواقع أجنبية او عربية، قد تطرح سؤالك في مجموعات فسيبوكية، او مواقع مثل Quora او Stackoverflow، و ستحصل على عدد كبير من النتائج و الإختلافات و لن تحصل على إجابة شافية إطلاقا، لأن ذلك السؤال لا يقبل إجابة واحدة، بل إجابات .

قائمة لأهم اللغات البرمجية المستخدمة في مجال الـ Data Science عليك تعلمها إن كنت مهتما بالمجال


فلو كانت لغة برمجية  واحدة في العالم هي الأفضل، لما نشأ تعددها، و لما تواجدت تطويرات دائمة للغات البرمجة، إن الهدف من تعدد لغات البرمجة هو خدمة أهداف مختلفة  لا نفس الهدف، فبعض اللغات تخصصت في صناعة برمجيات سطح المكتب، و بعضها تخصص في صناعة تطبيقات الويب، و تخصصت الأخرى في صناعة و إبتكار تطبيقات الموبايل، بينما تخصص البعض في الذكاء الإصطناعي و البعض الآخر في عالم البيانات الضخمة Big Data و بعضها تزعم عالم الـ Data Science او علوم البيانات، و بقيتها قد إستغلت فرصة العمل في مجال الروبوتيك Robotics و غيرها، إن السؤال السليم هو : أي تقنية برمجية قوية  و جيدة لمشروعي في مجال X ؟ و ليس : ما هي أفضل لغة برمجة .
بتعويض المتغير X بعبارة " علوم البيانات - Data Sciences " سنطرح على أنفسنا سؤال : ما هي أفضل التقنيات و اللغات البرمجية المستخدمة في مجال علوم البيانات ؟ و حتى نعينك على شقائك في البحث و طرح أسئلتك و إستفساراتك، فقد شكلنا لك هذا المقال، مقال على منصة أكوا ويب التي لطالما إعتنت باللغات البرمجية و قامت بشرحها لك و تصنيفها حسب مجالات العمل . 


- أول الأشياء أولا : الـ Data Science و الـ Data Scientist : 

قبل ان تبدأ اولا بقراءة هذا المقال و الإطلاع على اللغات البرمجية المستخدمة في هذا المجال، توجب علينا توضيح هذا المجال قبل كل شيئ، الـ Data Science او " علم البيانات " و هو بإختصار غير ويكيبيدي ( بعيد عن تعريفات ويكيبيديا ) هو إمكانية إستخراج عدد كبير جدا من البيانات ثم دراسة هذه البيانات و إستخراج معلومات نستطيع الإستفادة منها لاحقا بشتى الأشكال، تعتمد الشركات التقنية الرائدة اليوم على البيانات كجزء أساسي في تحقيق عائدات لشركتها، إذ تقوم مثلا شركة فيسبوك على إنتزاع و إستخراج جميع أنواع المعلومات من المستخدمين من منشورات و صور و رغبات و مشاعر و مكنونات خاصة بهم، أي معلومة تافهة كانت او مفيدة يتم تخزينها و تُسمى بالـ Big Data او البيانات الضخمة و هو مجال من خلاله يتم تجميع البيانات ثم تصنيفها حسب نوعها و العودة لها حين تحتاجها الشركة ( إليك كل ما تحتاج معرفته عن البيانات الضخمة و الـ Big Data )، عموما، بعد تجميع هذه البيانات و أصنافها، يأتي مختص في عالم البيانات او Data Scientist الذي طور نفسه و أجاد اللغات و التقنيات الخاصة بعلم البيانات، ثم يقوم بإستخراج أي نوع من الإحصائيات يحتاجها او تحتاجها الشركة، فإن ارادت الشركة معرفة أفضل أيام الأسبوع بالنسبة للمستخدمين على الفيسبوك ( على سبيل المثال نعلم انه مثال ضعيف ) سيقوم مختص البيانات بدراسة كل تلك البيانات و إستخراج إحصائية تقول ان يوم " السبت " هو اليوم الأفضل في حياة 78% من مستخدمي منصة فيسبوك، بينما " الإثنين " هو الأسوأ بالنسبة لـ 95% من مستخدمي المنصة، لذلك تستطيع لاحقا الفسيبوك الإرتكاز على هذه الإحصائية من أجل إطلاق حملة ما او منتج ما في شركتها لزيادة أرباحها إعتمادا على إحصائيات تم إستخراجها علميا من كم هائل من البيانات التي تم تجميعها . 

و ها قد عرفت الآن دور الـ Data Science و دور الـ Data Scientist كذلك، هذا المجال أصبح مطلوبا و بكثرة بين الشركات التقنية، و تتهافت الشركات اليوم على الـ Data Scientist، و لربما تريد تتبيث قدمك في هذا المجال، و نقترح عليك تعلم اللغات التالية لتحقيق ذلك . 

- لغة البرمجة بايثون Python : 

دعونا نتفق ان البايثون بنت اللعيبة أصبحت من اللغات التي تُدرج نفسها في كل المجالات تقريبا، تريد تصميم برمجيات سطح المكتب ؟ يمكنك إستخدام البايثون، موبايل ؟ مواقع ؟ ذكاء إصطناعي ؟ علوم البيانات ؟ البايثون موجودة لا محالة، ما يميز البايثون هو سهولة كتابتها و قراءة السطر البرمجي الخاص بها كذلك، و إمكانية تطوير برمجيات مختلفة كليا بعدد قليل من الأسطر البرمجية على عكس الجافا مثلا ( التي سنطرحها أيضا في هذا المقال -  Spoiler Alert ) التي يستلزمك 10 اسطر برمجية من أجل المناداة على الـ Packages ثم إنشاء الكلاس و كتابة عبارة Hello World، بينما يمكن تنفيذ نفس الأمر في سطر واحد في البايثون . 
عودة بنا الى عالم علم البيانات، تستخدم البايثون مجموعة من المكتبات القوية الخاصة بلغة البايثون في هذا المجال على رأسها Pandas و كذلك SciPy، و هما من أشهر المكتبات في البايثون المختصتين في علوم البيانات، إذ تسمح لك هذين المكتبتين بإنشاء Data Visualization بالإعتماد على المعلومات التي تم تجميعها من قبل، كما يمكن كذلك إستخدام مكتبة NumPy الخاصة بالإحصائيات من أجل إستخراج إحصائيات دقيقة بالإعتماد على البيانات السابقة.
البايثون و مكتباتها تُمثل بيئة خصبة لكل Data Scientist مستقبلي يطمح لتمجيد قدراته في هذا المجال . 



- الـ SQL و الـ NoSQL : 

الـ SQL ليست لغة برمجة في حد ذاتها و إنما Structured Query Language أي لغة إستعلام في الأصل تسمح لنا بإدارة البيانات الموجودة في قواعد البيانات عن طريق مجموعة من الأوامر / إستعلامات او Queries، حين تتعامل مع الـ Data فأنت تلقائيا تتعامل مع قواعد البيانات و الجداول، فتلك البيانات مخزنة و محفوظة في قواعد البيانات، إن كان نوع قواعد البيانات علائقيا او RDBMS، فأنت تلقائيا ستتعامل مع الـ SQL و الإستعلامات لا محالة من أجل جلب تلك البيانات او إحصائياتها او اي شيئ يتعلق بها، بل حتى صناعة برمجيات إحصائية بالإعتماد على تلك البيانات المخزنة سيتطلب منك بعض أوامر الـ SQL رغما عن أنفك . 
لكن ماذا لو كان التخزين في قواعد بيانات غير علائقية ؟ فالشركات التقنية مثل الفيسبوك و غيرها لا تعتمد على الـ RDBMS إطلاقا، و ذلك لأنها محدودة في الأصل و بطيئة كذلك، بل تعتمد على قواعد بيانات تعتمد على الـ NoSQL مثل MongoDB، إذ تتمتع أكثر بالمرونة و السرعة و تخزين أفضل لكل أنواع البيانات، و توجب عليك كذلك من طرفك ان تتقن التعامل مع الـ NoSQL و قواعد بياناته و طرق الإستعلام و التخزين التي تعتمد في الغالب على تقنيات مثل JSON و غيرها . 



- لغة البرمجة R : 

هل أنت أحد المتابعين لصفحتنا على الفيسبوك؟ إن كنت كذلك فقد نشرنا قبل يومين تقريبا منشورا عن لغة البرمجة R، و إن لم تكن متابعا لصفحتنا فقد حان الوقت لمتابعتها من هنا ، لغة البرمجة R من اللغات المتصدرة لقوائم أفضل اللغات البرمجية لسنة 2018، فهي لغة برمجة إحصائية تعتمد على الـ Statistical Programming من أجل إبراز النتائج، تقوم هذه اللغة بإستخراج إحصائيات دقيقة بالأعتماد على بيانات مدخلة، كما يمكنها التنبؤ كذلك ببعض الإحصائيات المستقبلية إن كانت البيانات المتوافرة كافية، يتم إستخدامها بشكل كبير حين يتعلق الأمر بالبيانات الضخمة جدا، او البيانات المعقدة صعبة التفكيك، و تتناسب إضطرادا مع لغة البرمجة بايثون حين يتعلق الأمر بمكنوناتها المخصصة للـ Data Science، عوضت كذلك R بعض التقنيات البرمجية الخاصة بالإحصائيات أيضا مثل Matlab بشكل جزئي و ليس كلي.
عموما، تعتبر لغة البرمجة R مثالا و خيارا قويا من أجل الولوج لعالم الـ Data Science و الغوص فيه . 


- لغة البرمجة Java : 

بتعددها و إستخداماتها الضخمة في كل المجالات تقريبا، تعتمد الشركات التقنية كذلك على مطوري الجافا في علوم البيانات، تأتي لغة الجافا بعدة  مكتبات كذلك تستطيع الإعتماد عليها في تقنيات الـ Machine Learning و الـ Data Science على التوازي من أجل إستخراج اي نوع من البيانات او إحصائيات بالإعتماد على البيانات الموجودة مسبقا، من بين هذه المكتبات يوجد الأشهر و هي Weka، كذلك Massive Online Analysis و لا ننسى كذلك مكتبة MLlib المتوفرة كذلك في كل من Scala و Python، تعتمد هذه المكتبات على خوارزميات قوية جدا في التحليل و التنسيق، قادرة على التعلم ذاتيا و توقع أي نوع من الإحصائيات بناءا على بيانات مسبقة، او استخراج بيانات معينة بين كم هائل من البيانات الضخمة، بتعدديتها و قدراتها المتطورة و مرونتها، الجافا مطلوبة و بكثرة في هذا المجال . 
لا ننسى ان الجافا معشوقة الجماهير، و يفضلها العديدون في بناء تطبيقات الموبايل او تطبيقات سطح المكتب، مما زاد شعبيتها و شهرتها بين المستخدمين حول العالم . 



- لغة البرمجة Julia : 

لغة البرمجة " جوليا - Julia " هي لغة ديناميكية كائنية التوجه، تم إبتكارها في الأساس من أجل التحليل و التعامل مع البيانات الرقمية بشكل خاص، و هما العاملين الأساسيين اللذان نحتاجهما بكثرة حيت يتعلق الأمر بالـ Data Science، بالرغب من قدراتها في هذا المجال، إلا ان إستخدامها لازال شبه مضمحل، فالبايثون و الجافا قد عوضتا الهدف من هذه اللغة في الأساس، لكن ببعض التحديثات في هذه اللغة، يمكننا الحصول على منصة مبنية بواسطتها قادرة على توفير اللازم حين يتعلق الأمر بتحليل البيانات و إستخراج الإحصائيات و التعامل الستاتيستيكي مع الأرقام و الداتا بشكل قياسي، لا يمكن ان ننكر فضل Julia في تطور العديد من الشركات التقنية اليوم التي إستغلتها لصالحها في تجميع البيانات و التعامل معها بهذه اللغة، و لا يمكن ان ننكر انها لغة قوية حقا في هذا المجال، لكن هل ستستطيع الصمود في ظل قريناتها ؟ سؤال لفلاسفة البرمجة ! 


- تقنيات أخرى مفيدة في مجال الـ Data Science : 

اللغات البرمجية ليست كل شيئ حين يتعلق الأمر بالـ Data Science، يوجد أيضا تقنيات و خصائص أخرى يجب ان يتمتع بها الـ Data Scientist الى جانب إتقان مهارات اللغات البرمجيات أعلاه كذلك على رأسها ان يجيد التعامل رياضيا و إحصائيا مع البيانات، أن تكون لديه قدرات في مجال الـ Machine Learning و الـ Data Modeling من أجل إستعراض البيانات بشكل فعال، ان تكون قادرا على حل المشاكل او Problem Solver، ان تجيد التعامل مع تقنيات الشبكات و قواعد البيانات مثل AWS او Microsoft Azur، ان تتمتع بالعديد من الخواص الموجودة في هذا الأنفوجرافيك البسيط الجانبي.
و لنسهل عليك خوض غمار تجربة الـ Data Science، نقترح عليك تجربة هذا الكورس التفاعلي من منصة CodeCademy المخصص للـ Data Science .



شاركه على :


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


مجموعة ادوات إختراق و حماية جديدة عليك الإطلاع عليها لهذا الشهر ( أكتوبر / تشرين الأول )


قبل ان نلج معك مباشرة في مقالنا لهذا الشهر، إليك بعض التفاصيل حول إختراق هذا الشهر، إذ صرحت شركة فيسبوك انه قد تم فعلا إختراقها، و قد قام المخترق أيضا بسحب بيانات 50 مليون مستخدم لمنصة الفسيبوك، إستخدم المُخترق ثغرة معينة في الفيسبوك تعتمد على غيار View As في الموقع، من أجل التأكد من سلامة كل المستخدمين أيضا، قامت الفيسبوك بتفعيل خروج كل المستخدمين Logout و إعادة إدخال كلمات السر مجددا من أجل التأكد من سلامتهم، تعرضت شركة الفيسبوك لدعوتين قضائيتين من إمرأتين الأولى من كولورادو في أمريكا و الثانية من شيكاغو من نفس البلد مفادها ان الشركة لم تقم بحماية بيانتهما و على الفيسبوك ان تعوضهما عن ذلك، إعتذرت الفيسبوك عن الإختراق أيضا . 

إطلع على مقالاتنا السابقة من نفس الصنف : 

  1. مجموعة ادوات إختراق و حماية جديدة عليك الإطلاع عليها لهذا الشهر ( سبتمبر / أيلول )
  2. مجموعة ادوات إختراق و حماية جديدة عليك الإطلاع عليها لهذا الشهر ( اغسطس )
  3. مجموعة ادوات إختراق و حماية جديدة عليك الإطلاع عليها لهذا الشهر ( يوليو / آب )

 أداة OWASP Zed : أداة لكشف و إختراق تطبيقات الويب : 

أداة مخصصة لإختبار الإختراق لتطبيقات الويب و المواقع، ليست بالأداة الجديدة حقا، بل شهرتها كبيرة بين جل المستخدمين في العالم، لكن قد لا تكون بتلك الشهرة بالنسبة لمتابعي موقع أكوا ويب، فنحن لم نتحدث عنها في أي من مقالاتنا السابقة إطلاقا، تعتبر أداة مُستخدمة بكثرة في عالم الـ Cyber security لما توفره من سهولة في الإستخدام واجهة جرافيكية بسيطة تساعدك على كشف المواقع و تطبيقات الويب و إستخراج كل المعلومات التي تحتاجها عنها، و ربما إستغلالها كذلك إن وجدت اي أخطاء أمنية في الموقع، يمكن للجميع إستخدام الأداة فهي بسيطة من ناحية المبدأ و متاحة على مختلف الأنظمة كذلك . 


 أداة EnumDB : أداة مفتوحة المصدر لإستخراج بيانات قواعد بيانات Mysql : 

أداة متوفرة على Github مبنية على لغة البرمجة بايثون، تسمح لك هذه الأداة بإستخراج قواعد البيانات على شكل قائمة xlsx من خلال قواعد بيانات MySQL ثم القيام بعليات Bruteforce أيضا على كلمات السر من أجل إستخراجها، الأداة تشتغل فقط بسطر الأوامر و تتوفر على مجموعة متعددة من الأوامر التي يمكنك استخدامها للتحكم الكامل في قواعد البيانات و إستخراج أي نوع من البيانات بشكل إحترافي أيضا، الأداة سهلة الإستخدام ففور سحبها الى جهازك يمكنك تشغيلها و توفير رابط قاعدة البيانات ( او عنوان السيرفر )  للأداة، ستقوم بعدها بتحميل قاعدة البيانات كاملة و القيام بأي نوع من العمليات تريد عليها . 


 أداة Habu : أداة بايثون لكشف و إختراق الشبكات : 


هي في الأصل اداة تعليمية تساعد المستجدين في عالم البايثون الى إكتشاف الشبكات و البيانات حولها  و كيفية صناعة أسطر برمجية تساعدك على كشف الشبكات و تحليلها و حتى إختراقها، الا انه تم تحديثها و تحديثها بالمزيد من الأسطر البرمجية حتى صارت أداة متكاملة قادرة على مساعدة المستخدم على تحليل كامل للشبكة و إستخراج كل متعلقاتها، تتضمن الأداة الآن العديد من التقنيات المفيدة مثل ARP Poisining , Arp sniffing, LAND Attack و العديد من التقنيات الأخرى التي تساعدك على التحكم الكامل في الشبكة و متصليها أيضا . 


- أداة BYOB : اداة مخصصة لصناعة Botnet خاص بك : 


تذكر ان مثل هذه الادوات مخصصة لأصحاب الإختصاص، و يُفضل إستخدامها لأغراض هادفة او تعليمية، أداة BYOB و هي إختصار لعبارة Build Your Own Botnet، تسمح لك هذه الاداة بصناعة Botnet خاص بك بإستخدام لغة البرمجة بايثون، الأداة مخصصة بالفعل و لا يحتاج منك الأمر لأي سطر برمجي سوى سطر الأوامر لتوفير المعلومات و الخصائص التي يحتاجها الـ Botnet الخاص بك، و لمن لا يعرف الـ Botnet فهو واحد من أخطر الفيروسات الذي يصيب الجهاز او الحاسوب ثم يحوله الى جهاز إختراق بحد ذاته ليصيب أي جهاز مرتبط به أيضا، ببساطة يمكن لهذا الفيروس ان ينتشر في الشبكة و يصيب كل الحواسيب دفعة واحدة، فإحذر من إستخدامه.
اداة BYOB مبنية على البايثون و مفتوحة المصدر كذلك، اما الـ Botnet الخاص بك فيمكن التحكم به عن بعد للقيام بالعديد من الأمور مثل كشف كلمات السر المخزنة في الجهاز المصاب، تحميل البيانات او رفعها على الحاسوب، إستخراج الملفات، إستخدام Keylogger لمعرفة ما يكتبه المستخدم، أخذ Screenshots للحاسوب و غيرها من الأمور الأخرى التي يستطيع أي Botnet فعلها و أكثر أيضا.


أداة Leaked : للتحقق من الإيميلات و كلمات السر المسربة : 


لربما تسمع دائما عن إخترقات و تسريب للبيانات في كل مكان و في خدمات معينة، مثل فيسبوك على سبيل المثال في حدثها الأخير الذي تمت الإشارة إليه أعلاه، لنفترض ان تلك البيانات قد تم تسريبها و بيعها، فهل بياناتك من ضمنها ؟ 
تُساعدك أداة Leaked على البحث و تقصي البريد الإلكتروني و حتى كلمة السر ( رغم اننا لا ننصحك بكتابة كلمة السر بالطبع ) و البحث عنها في مجموعة من المواقع المختلفة منها الإجتماعية و منها العادية و منها المواقع التي تفصح عن المعلومات المسربة، ثُم يُرجع البرنامج نتيجة محددة، فإن كان البريد الإلكتروني مستخدم او تم تسريبه في احد المواقع تظهر لك الأداة كل الخدمات و المنصات التي تستخدم بريدك، إن قمت بالتشكيك في احد الخدمات الغير مسجل فيها ظاهرة لك، ففي الغالب تم تسريبه بالفعل، إن لم يكن فأنت في أمان، يمكنك إستخدام الأداة للتحقق من أي نوع من البريد الإلكتروني .

- أداة CyberChef : منصة كاملة للتشفير و فك التشفير و تحليل البيانات : 

أداة CyberChef أداة بسيطة بواجهة جرافيكية يمكنك إستخدامها من أجل فك تشفير كلمات السر او اي نوع تشفيرات آخر، علاوة على ذلك يمكنك أيضا تشفير أي نوع من البيانات بشتفير قوي او بإختيارك أنت لنوع التشفير من خلال الأداة، كما انه يوفر لك خاصية ضغط البيانات و الملفات، الى جانب بعض الأدوات من أجل تحليل تلك البيانات او تقسيمها و تفريقها بشكل يسهل عليك قرائته، تطبيق CyberChef يساعدك في طبخ أي نوع من التشفيرات و تجهيزه للهضم السريع ! 



- أداة Ettercap : أداة MITM إحترافية للحاسوب : 

لطالما إستعرضنا تطبيق Zanti في موقعن ( ستجد شرحا للتطبيق في الرابط أعلاه )، يتيح لك التطبيق القيام بعمليات MITM او Man in The Middle و هي تقنية تنفذها على الشبكة بحيث تصبح كل الإتصالات بين الجهاز المتصل بالشبكة و الراوتر او نقطة الإتصال تمر من خلالك مما يسمح لك بتقصي كل شيئ يُرسله المتصل بالشبكة او يستقبله من مواقع و صور و فيديوهات و كل شيئ تقريبا، حتى انه يمكنك أنت أيضا ان تتحكم في المحتوى  المُرسل للضحية و توجيهه لمواقع محددة و ما الى ذلك، لكن ماذا لو اردنا نقل كل ذلك للحاسوب ؟ 
في هذه الحالة سنقترح عليك أداة Ettercap، و هي أداة مشهورة أيضا تسمح لك بالقيام بعمليات MITM بإستخدام حاسوبك، و تقصي كل البيانات الجارية بينك و بين المتصلين معك في نفس الشبكة و تمكين الوصول لبياناتهم المرسلة او المستقبلة بينهم و بين نقطة الإتصال.


- أداة SMBetray : أداة MITM أخرى تعتمد على سط الأوامر : 

أداة SMBetray أداة MITM أخرى قادرة على تقصي كل ما يمر في الشبكة بين الضحية و نقطة الإتصال و إستخراج كل المعلومات وا لبيانات، هذه الاداة مفتوحة المصدر و مبنية على البايثون أيضا، لا تتضمن أي واجهة جرافيكية و تشتغل بسطر الأوامر، بسيطة في أوامرها فلا داعي للقلق، تسمح لك كذلك هذه الأداة " بتسميم " الشبكة و إرسالة ملفات و توجه للروابط من خلالها و تطبيقها على المستخدم، بحيث يستطيع المستخدم تحميل ملفات لم يكن يرغب فيها، او تجيه نطاق الولوج لأي موقع تريده أنت، يوجد توثيق كامل للاداة يمكنك إستغلاله . 

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

شاركه على :


الشركات التقنية حول العالم وفرت لنا و لازالت توفر و ستوفر دائما العديد من البرمجيات و التقنيات الجديدة التي تساعد المستخدمين على انجاز مهامهم اليومية مهما كان نوعها سواء العملية او الترفيهية او في إطار الدراسة بالنسبة للطلبة و التلاميذ، و تحصل هي الأخرى على عائد كبير مقابل الخدمات التي توفر، فأحيانا من خلال الإعلانات، و أحيانا أخرى من خلال شراء حسابات VIP او Premium في تلك الخدمات من أجل الحصول على خدمات أفضل و أقوى، و أحيانا فقط من أجل سحب بياناتك و إعادة بيعها و إستغلالها، فقد شرحنا ذلك في مقال مخصص بعنوان : كيف تحقق شركات الألعاب و الشركات ذات الخدمات المجانية أرباحها إطلع عليه إن اردت إلقاء نظرة أقرب عن عالم الأرباح الخفي الذي تحاول الشركات التقنية تغطيته بزي كاشف عليك . 


سبوتيفاي 101 : ما هو سبوتيفاي؟ كيف تفتح حسابا؟ كيف تستخدمه و كل ما تحتاج معرفته عن Spotify


من بين الخدمات المثيرة و التي إجتاحت العالم في السنوات الأخيرة، هي خدمة Spotify التي قضت تماما على خدمة Soundcloud و إن كان التشابه بينهما طفيف الى حد ما، فخدمة Spotify أصبحت في حواسيب و هواتف الجميع تقريبا و يستفيد منها الكل، و ربما لا دراية لك أنت حول هذه الخدمة و الهدف منها و أساسياتها و كيفية تحصيلها و الإستفادة منها كسائر المستخدمين الآخرين على هذه الشبكة العنكبوتية، هنا يأتي " سوبر أكوا ويب " ليساعدك في أحد مقالات الـ 101 ( الـ 101 يُعنى بها الأساسيات ) التي نقدمها لك على الدوام من أجل مساعدتك في فهم هذه الخدمة و كل ما يتعلق بها، المقال مقسم لأقسام يمكنك إختيار الفقرة التي تريد من أجل الإطلاع على محتواها و لست مضطرا لقراءة المقال كاملا إن كنت على دراية مسبقا بخدمة سبوتيفاي.


- ما هي خدمة سبوتيفاي - Spotify ؟ 




لدينا جميعا تلك الرغبة في الإستماع للموسيقى بإستخدام هواتفنا او حواسيبنا، تكوين قائمة تشغيل Playlist خاصة بنا، الحصول على آخر المستجدات أغاني مغنينا المفضلين و الإطلاع على جديدهم و قديمهم و غيرها، سابقا كان الأمر أشبه باليدوي، بحيث توجب عليك إما الإستماع لها مباشرة على اليوتيوب، او تحميلها من اليوتيوب على شكل موسيقى أيضا و إدراجها في هاتفك او حاسوبك، او شراء الألبوم إن اردت، او الولوج لأحد المواقع الخاصة بالموسيقى مثل Soundcloud او Myspace ( اه يا جيل الإنترنت القديم ) و الإستماع للموسيقى، لكن ذلك لم يكن كافيا، فانا اريد ان اتوصل بجديد اغاني ذلك المغني دائما، ان استمع كذلك لأغاني من صنف معين مثل البوب او الروك او حتى الميتال، اود ان استكشف الجديد في عالم الموسيقى و ليس فقط ما اعرفه.
من هذا المبدأ ظهرت خدمة Spotify، منصة متوافرة على الحاسوب و الموبايل تقوم من خلالها بتسجيل حساب، و تعيين موسيقاك المفضلة للإستماع إليها، إختيار كذلك مغنيك المفضلين و متابعتهم للتوصل بجديد ألبوماتهم أولا بأول، كما يمكنك البحث عن اي صنف أغاني تريد و الإستماع له، ليس هذا فقط، بل يمكنك البحث عن أغانيك المفضلة او مغنيك المفضلين، إضافتهم الى Playlist و الإستماع لموسيقاهم، و إن لم تكن لديك إنترنت، فيمكنك تحميل تلك الموسيقى للإستماع أوفلاين، كل هذا من خلال خدمة سبوتيفاي يا صديقي. 

- كيف تفتح حسابا في خدمة سبوتيفاي ؟ 


مادمت تقرأ هذا المقال باللغة العربية، فيؤسفني أن اخبرك ان منصة سبوتيفاي غير متاحة للعديد من الدول العربية في الوقت الراهن، لكن أبشر، لازال بإمكانك صناعة حساب و الإستفادة منه بشكل عادي بكل المنافع و الميزات حتى و إن كان محظورا في بلدك، فقط إتبع الخطوات التالية عزيزي القارئ : 
1- أولا ستحتاج الى VPN، لا تقلق فإستخدامه مؤقت و لست مضطرا للحصول عليه مدفوعا او اي شيئ من أجل الإستفادة من الخدمة، لنسهل عليك الأمر ننصحك بإضافة Betternet على متصفح كروم، إضافة تسمح لك بتغيير الـ IP بسهولة و بشكل مجاني، او يمكنك إستخدام احد برامج الـ VPN المجانية التي يمكنك الإطلاع عليها من هنا ، بعد ان تقوم بتنصيب إحداها قم بتشغيلها من أجل تغيير IP جهازك و تحويله الى IP لأحد البلدان الأجنبية لا يهم أي بلد، مادام ليس عربيا . 
2 - بعد تغيير الـ IP نلج مباشرة لصفحة Spotify الرسمية من هنا  من أجل تسجيل حساب في الخدمة، نقوم بملأ كل البيانات الخاصة بالتسجيل ( يُفضل عدم إستخدام التسجيل عبر فيسبوك او احد الخدمات الأخرى لأنها ستعيقك لاحقا في الدخول بدون VPN ) لذلك تسجل بطريقة عادية عن طريق البريد الإلكتروني، و أتمم بقية المعلومات . 
3 - ستتوصل بعدها برسالة تفعيل للحساب على البريد المسجل، قم بتفعيل حسابك و تنشيطه، و بعدها مباشرة نمر لتحميل البرنامج، البرنامج متوفر على كل الأنظمة من لينكس و ماك و ويندوز، يمكنك إستخدام تطبيق Spotify على الويندوز أيضا من خلال متجر المايكروسوفت، بالنسبة للهاتف فالتطبيق لن يظهر لك في المتجر كونه محظور في بلدك، الحل البديل هو الحصول على VPN في الهاتف و البحث عنه، او تحميله من مصدر خارجي من أحد المواقع البديلة لمتجر جوجل بلاي
4 - يمكننا التخلص من الـ VPN الآن و إستخدام سبوتيفاي بشكل عادي، بعد الولوج للبرنامج او التطبيق، قم بالولوج بحسابك الذي قمت بتسجيله، لتظهر لك واجهة البرنامج و كل خدماته التي يمكنك الإستفادة منها بشكل عادي و طبيعي بدون VPN، و لا تقلق لن ينتهي الأمر او يتم غلق حسابك، صدقني فأنا استخدم الخدمة الآن لما يقارب السنة و قمت بالأمر كما شرحته لك . 


- كيف تستخدم خدمة سبوتيفاي ؟ 

فور الولوج للبرنامج او التطبيق الخاص بسبوتيفاي، ستظهر لك واجهة شبيهة بالصورة أعلاه التي تستعرض عليك في الواجهة بعض الإقتراحات لبعض الأغاني و الموسيقى الأكثر رواجا للأسبوع او أجددها أيضا . 
- يمكنك البحث عن ألبوم معين، مغني معين، فرقة معينة او أغنية معينة عبر عملية البحث أعلاه كما في الصور و ذلك عن طريق كتابة الإسم، في حالة البحث عن مغني، يمكنك النقر على إسمه لتجد كل الألبومات و الاغاني الخاصة به، قد تجد أيضا بعض الـ Playlist او قوائم التشغيل التي قد تظهر مع البحث و تتضمن تلك الاغنية التي بحثت عنها، قوائم التشغيل في الغالب تتضمن أغاني مماثلة لها . 
- يمكنك أيضا الإنضمام و متابعة مغنيك المفضلين من أجل التوصل في الصفحة الرئيسية بكل جديدهم من ألبومات و أغاني . 
- يمكنك الإنتقال في القائمة الجانبية أيضا الى تبويب Discover من أجل الإطلاع على أجدد قوائم التشغيل المناسبة لك او قوائم تشغيل مناسبة لمزاجك، مثل قوائم تشغيل لأغاني الخريف و غيرها .


- او يمكنك الإنتقال لتبويبات أخرى مثل Genre للبحث عن لونك المناسب في الموسيقى و الأغاني، او New Releases من أجل الإطلاع على أجدد الأغاني الموسيقية حاليا .
في التبويبات الجانبية، سيمكنك الإنتقال بين العديد من الخيارات الأخرى المفيدة أيضا مثل Recently Played للإطلاع على آخر ما إستمعت إليه أيضا، او الاغاني التي قمت بحفظها و ذلك عن طريق خيار Songs، بل حتى انه يمكنك حفظ الأغاني التي تريد في قوائم تشغيل من صناعتك و ستجدها في الجانب أيضا في الأسفل من اجل الإطلاع عليها في أي وقت.
يوجد الكثير من الخيارات الأخرى التي ستستكشفها مع الوقت .

- كيف تضيف موسيقاك الأصلية في حاسوبك و الإستماع لها من سبوتيفاي ؟ 

احد الأسئلة الأكثر شيوعا بين المستخدمين هي كيفية إضافة الموسيقى المحملة مسبقا في الجهاز الحاسوب و الإستماع لها من خلال سبوتيفاي، الحل سهل جدا، يكفي أولا ان تتوجه الى التعديلات في الأعلى في اليسار ( رمزه ثلاث نقاط . . . ) ثم إختر خيار Edit ثم Preferences، اهبط قليلا الى ان تجد خيار Local files، سيخبرك البرنامج إن اردت إضافة مصدر اخر او مجلد من حاسوبك و قراءة الملفات الموسيقية منه، نقوم بفعل ذلك و نختار مجلدا ثم نحفظ التحديثات.
نذهب الآن الى التبويبات الجانبية، و نبحث عن خيار Local Files و ستجد ان موسيقاك من الحاسوب قد تم تحميلها الى البرنامج و يمكنك الإستماع لها من خلال البرنامج .


- تحميل أغاني Spotify الى حاسوبك : 

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

نرحب دائما بإستفساراتك حول خدمة سبوتيفاي و كل ما يتعلق بها، و سنحاول أن نجيبك عنها بدقة قدر الإمكان .

شاركه على :


لربما سمعت عنها من قريب او بعيد، و لم تعرف ماهيتها، و ما دورها و كيف ستغير العالم التقني، و إن لم تكن مركز حديث الساعة حاليا، فلا يمكننا إنكار ان الحواسيب الكمومية، او الحواسيب الكمية كما يسميها البعض ستغير العالم التكنولوجي لما توفره من تقنيات و تكنولوجيات جديدة.
فالتقنية اليوم في تسارع، تتقدم كل يوم و تنشر الجديد في عالم التقنية، فعليك مواكبتها و إستعابها و لو نظريا دون الأخذ في تطبيقها، فتطبيق تلك التكنولوجيات في أرض الواقع قد يكون صعبا، لكن إسيتعابها أسهل و أفضل، من أنترنت الأشياء IoT الى تقنية البلوكتشين مرورا بالسيارات ذاتية القيادة و تطبيقات الذكاء الإصطناعي و عوالم الـ Big Data و جديد عالم الروبوتيك و أشباه الروبوت " صوفيا " و غيرها من التكنولوجيات باتت تشاطرنا هذا العالم، و توجب علينا ان نعرف أي شيئ و كل شيئ عن هذه التقنيات. 
و من شأن هذا المقال اليوم ان يعرفك و يوفر لك دليلا للتعرف على الحواسيب الكمومية و معرفة الغاية منها و فوائدها و ذلك عن طريق تقديم 25 معلومة فذة حول الحواسيب الكمومية ستقوم بتعريفها لك و تساعدك على فهمها و فهم الغاية منها أيضا . 


7 معلومات مذهلة لتعريفك بالحواسيب الكمومية / الكمية او الـ Quantum Computers


- ما هي الحواسيب الكمومية Quantum Computers : 


الحواسيب الكمومية ليست حواسيب صالحة للإستخدام الشخصي، ليست بالحواسيب التي يمكنك تنصيب لعبة Call of Duty عليها، او التحقق من بريدك الإلكتروني او الولوج للفيسبوك من خلالها، بل عملها أعقد بكثير من هذا، فنحن نعلم سرعة الحاسوب العادي اليوم و كيف يستطيع إجراء العديد من العمليات الحسابية المعقدة و إستخراج النتائج في رمشة عين، لكن حين يتعلق الأمر بالقيام بعمليات حسابية متراكبة و كثيرة في وقت وجيز، فالإعتماد على الحاسوب العادي قد يكون أسوأ فكرة على الإطلاق، يسمح لنا الحاسوب الكمومي المجهز بالـ Qubits بدل bits بحيث تسمح هذه الـ Qubits بتسجيل أزيد من حالة بدل الحالتين المعروفتين و هما 0 و 1، الحاسوب الكمومي تتكون أجزاء أجزائه من جسيمات صغيرة ميكانيكية كمية نستطيع التحكم بها من أجل تخزين و معالجة البيانات بسرعة و حجم فائقين، بدأت عملية التفكير في صناعة حواسيب كمية منذ نشأة آلة تورينغ ( إن شاهدت فلم The Imitation Game فعليك مشاهدته لأنه يشرح هذا الأمر )، لا وجود حاليا لحاسوب كمي فيزيائي صحيح و عملي، لكن العمل عليه جاري من طرف كبرى الشركات التقنية مثل IBM و Google و مايكروسوفت، يوجد كتاب خاص يشرح لك كل ما تحتاج معرفته حول الحواسيب الكمومية قمنا بنشرها في مقال خاص يمكنك الإطلاع عليه من هنا .

فإليك إذن بعض الحقائق الجميلة و المذهلة التي ستساعدك أكثر على التعرف على الحواسيب الكمومية و آلية عملها . 

1 - نوع آخر من الحماية الغير القابل للكسر : 

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


إقرأ أيضا : كيف تحقق شركات الألعاب و المواقع الإجتماعية و الخدمات المجانية أرباحها ؟

2 - ربما نهاية الخوارزميات المعقدة ... و العمليات الرياضية بدون حل ! 

هل درست المعلوميات في الجامعة او مدارس مخصصة  لها او في كليات الحاسبات ؟ إن فعلت فلا بد انك قد درست مادة " الخوارزميات " و كيف انها تساعدنا في حل بعض المشاكل البرمجية Problem Solving بشكل أساسي، إن تعمقت كذلك أكثر في الخوارزميات، ستجد انه يوجد عدد لا بأس به من الخوارزميات بدون حل، او صعبة الحل او صعبة التنفيذ، بل أن بعض الشركات توفر لك مبالغ مالية مقابل حل تلك الخوارزميات او تبسيطها، نعم إنها كذلك، و السبب في عدم إيجاد حل لها في الأساس قائم على صعوبة تنفيذ المهمة. 
لأشرح لك الأمر بشكل أبسط، لنأخذ خوارزمية بسيطة ( ذات حل مسبق فقط من أجل التوضيح ) لنفترض انه لدينا موقع مثل فيسبوك يرتاده تقريبا 3 مليار مستخدم، المعضلة امامنا هي دخول المستخدم، فالخوارزمية المقترحة لولوج المستخدم هي ان يضع بريده الإلكتروني ثم نقوم بالبحث في قاعدة البيانات واحدا تلو الواحد عن الشخص الذي يملك نفس البريد الإلكتروني ثم إستخراج كلمة السر المسجلة ثم مقارنتها مع كلمة سر التي ادخلها المستخدم. جيد حتى الآن، تخيل معي انه لإيجاد البريد الإلكتروني يجب المرور و مقارنة البريد مع أزيد من 3 مليار سطر او بيانات، في الغالب ستلج الى الفسيبوك بعد 4 أيام من البحث او أكثر، هنا يجب ان يتدخل احد الأذكياء من اجل توفير حل أبسط، كتقسيم البحث مثلا او القيام بعمليات معينة، هذا الحل الأبسط غير متوافر في بغض الخوارزميات مما يجعل العديد من الشركات تدفع مبالغ طائلة من أجل حل عملي.
الحواسيب الكمومية ستساعدنا على حل هذه المشكلة إطلاقا، فهي قادرة على القيام بأي انواع العمليات بشكل سريع جدا و كبير أيضا، مما سيسمح لنا أخيرا بحل الخوارزميات المعقدة و تحليلها و تبسيطها، و كذا المسائل الرياضية بدون حل أيضا . 

3 - اثناء كتابة هذه الأسطر ... لا يوجد حواسيب كمومية فيزيائية إطلاقا : 

تعتمد الحواسيب الكمومية على قواعد ميكانيكا الكم في التشغيل و التخزين، بحيث ان شرائح التخزين المكونة للحاسوب مكونة في الأصل من إلكترونات و فوتونات معينة مما يجعلها قوية في التخزين و التعامل، لكن حركة هذه الإلكترونات و الفوتونات و غيرها من مكنونات الحواسيب الكمومية غير قابلة للتنبؤ، بل حركتها أحيانا قد تسبب إنهيارا للشرائح الأخرى مسببة ما يسمى بالـ decoherence و التي لم اعرف كيف اترجمها لك بالعربية 😅 .
و لازال العلم التقني الحديث غير قادر على بناء حاسوب كمي فيزيائيا، لكن نظريا فكل مكنوناته على مخطط أزرق و محقق فيزيائيا، لكن بنائه أصعب من ذلك بكثير .

4 - رغم ذلك، فقد إستطاعت بعض الشركات التقنية من صناعة الشرائح الكمومية Quantum Chips : 

يتكون أي حاسوب من مجموعة شرائح، لكل شريحة دورها الأساسي في تشغيل ذلك الحاسوب، لا يختلف الحاسوب الكمي عن هذا المبدأ كثيرا، إلا ان بعض شرائحه كما أشرنا تدعم التخزين عن طريق إلكترونات و فوتونات معينة، و إن كانت الحواسيب الكمومية صعب التحقيق و البناء، إلا ان بعض الشركات إستطاعت مبدئيا صناعة بعض الشرائح المكونة لهذا الحاسوب، على رأسها جوجل، شركة IBM، شركة Intel، شركة Rigetti و أيضا D-wave، و هي شركات رائدة في صناعة قطع الحاسوب و شرائحه، و قد تمكنت من صناعة بعض مكونات الحاسوب الكمي، بينما لازالت بعض المكونات الأخرى غير قابلة للإنجاز في الوقت الراهن .


إقرأ أيضا : هذه هي اللغات البرمجية التي يجب عليك تعلمها لسنة 2018 !

5 - الذكاء الإصطناعي سيصبح أكثر ذكاءََ و خبرة من ذي قبل : 

لحد الآن فقد توصلت التكنولوجيا الحديثة الى صناعة العديد من الروبوتات المتقدمة و التي تعتمد على الذكاء الإصطناعي، لعل أكثرها تقدما و شهرة كذلك هي الروبوت " صوفيا " ذو الذكاء الإصطناعي المنفرد، تستطيع صوفيا تجميع البيانات عبر الإنترنت بإستخدام خوارزميات خاصة و تحليلها و الخروج بنتائج خاصة بها، فذكائها الإصطناعي غير مُتحكم به و يعمل من تلقاء ذاته، إلا أنه و أحيانا ( كما شاهدنا في عدة مقابلات ) يتهنج هذا الذكاء، او يقدم أجوبة خاطئة بعيدة عن السؤال او الموضوع المطروح.
إن أكثر شيئ يتحمس له هواة التقنية و محبيها هو تمكين الروبوتات من إستخدام الذكاء الإصطناعي المدمج مع الحواسيب الكمومية، تخيل ان يصير ذكاء الروبوت " صوفيا " أذكى أضعاف مضاعفة، أسرع أضعاف مضاعفة و ذو تفكير مستقل أضعاف مضاعفة، حينها فقط سنلتمس المعنى الحقيقي للروبوت المكافئ للإنسان و القادر على التفكير بشكل قريب للإنسان، و كل ما سينقصه حينها - اي الروبوت - هي المشاعر فقط. 

6 - إنخفاض إستهلاك الطاقة : 


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


إقرأ أيضا :ما هي لغات البرمجة الخاصة ببرمجة الذكاء الإصطناعي ؟

7 - إستكشافات أكثر و توسيع أكبر لمدارك الإنسان : 

في كل إستطلاع فضائي، او باطني، او بحث علمي، يوجد كمية كبيرة من الحواسيب التي تقوم بالعمليات الحسابية و التخطيط من أجل الإنسان، و لولاها لما إكتشفنا مجرات و عوالم و كواكب أخرى، او درسنا إمكانية الوصول إليها او إرسال مسبار فضائي لها دون الحسابات الدقيقة التي تقوم عليها الحواسيب، نقترح عليك مشاهدة فلم " Hidden Figures " لترى بنفسك حجم الطاقة المهدرة من طرف الإنسان من أجل حساب مسار مسبار فضائي، بينما إستطاع الحاسوب القيام بها في رمشة عين، رغم ذلك لازال العالم غامضا، نحتاج الى حسابات أدق و أسرع و أفضل، حسابات لا يستطيع الحاسوب العادي القيام بها، الحل الوحيد هو الحاسوب الكمومي، تخيل معي وجوده في العالم، السوبر كمبيوتر سيُطلعنا على مستجدات لم يصل إليها الإنسان بعد ! 

الحواسيب الكمومية بكل تأكيد ستشكل فارقا جديدا في العالم و في تعاملنا اليومي مع التكنولوجيا، خصوصا إن تم دمجها مع تقنيات أفضل قادمة لهذا العالم مثل الـ Blockchain و الـ AI و غيرها .

شاركه على :


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

الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)


في الجزء الثاني سنبدأ حديثنا عن العلاقات بين الجداول و كيفية الربط بينهما أيضا، ثم سنمر مباشرة للإستعلامات الرئيسية في الـ SQL و كيفية إنجاز بعض الإستعلامات التي ستحتاجها كثيرا طيلة مسيرة تعاملك مع قواعد البيانات على رأسها إستعلامات الـ CRUD . 


يمكنك الإطلاع على الجزء الأول من هنا : الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الأول) 

- شرح بسيط للـ CRUD : 

ستجد عبارة الـ CRUD تقريبا في كل كورس برمجي تأخذه، او أي مقال برمجي شرحي مثل هذا المقال، الـ CRUD هي عبارة شهيرة و إختصار لـ Create / Read / Update / Delete ، أي الإضافة، القراءة، التعديل ثم الحذف، و هي الخواص الأربعة التي يمتاز بها أي Object برمجي كيفما كان، بحيث سنحتاج الى إضافة هذا الـ Object او العنصر، التعديل عليه إن إقتضى الأمر، جلب معلوماته من أجل الإطلاع عليها، و حذفه أيضا، و هي عبارة عن سلسلة حياة او Life Cycle لأي عنصر برمجي . 

- العلاقات بين الجداول : 


الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)


لكل جدول نقوم بصناعته في قاعدة البيانات شرط او Constraint خاص بالـ Primary Key، شيئ أساسي و ضروري في كل جدول ان يكون هناك عمود على شكل Primary Key في الغالب يكون الـ Number او الـ ID  أو الـ order Number و غيرها حسب نوع الجدول، و هذا يساعدنا على تقسيم البيانات و معرفة كل سطر على حدة و فصله عن بقية الأسطر الأخرى . 
حين يتعلق جدول بجدول آخر، فإن وسيلة الربط بينهما هي الـ Primary Key بحيث يكون الـ Primary Key في الجدول الأول هو عبارة عن مفتاح خارجي او Foreign Key في الجدول الثاني، بحيث يكون عمود الـ Foreign Key في الجدول الثاني هو نفسه عمود الـ Primary Key في الجدول الأول، لا تقلق الأمر بسيط جدا.
بالعودة للتخطيط أعلاه، سنأخذ الجدولين Customer ( الزبون )  و الجدول Orders ( الطلبيات ) فكل زبون له الحق في القيام بطلبيته الخاصة، و يمكن للزبون ان يقوم بعدة طلبيات أيضا، لكن لكل طلبية زبون واحد و لا يمكن لطلبية ان يشاركها عدة زبائن، لذلك ستجد امام جدول الزبون رمز " 1 " اي انه لكل طلبية زبون واحد، و امام جدول الطلبيات رمز " ∞ " إذ يمكن للزبون ان يقوم بعدة طلبيات، هذا ليس موضوعنا، هذا تحليل آخر متعلق بالـ UML / Merise . 
إن دققت في اعمدة جدول الطلبيات ستجد خانة بإسم CustomerID اي الـ Id الخاص بالزبون الذي قام بتلك الطلبية، و هو عبارة عن Foreign Key يربط الجدول Customer بالجدول Orders بينما يحتفظ الجدول Orders بالـ Primary Key الخاص به و هو Order N . 
دعونا نقوم بإنشاء الجدول Orders كما أنشأنا الجدول Customer في الدرس السابق، سنقوم بتطبيق الإستعلام التالي : 



حسنا، ما الذي تغير هذه المرة في هذا الإستعلام مقابل الإستعلام في الدرس السابق لصناعة الجدول ؟ ببساطة يوجد فرق واحد أساسي وهو إضافة Constraint جديد في آخر الجدول، هذا الـ Constraint متعلق هذه المرة بالـ Foreign Key  بحيث نقوم بأخذ العمود الثاني في الجدول و نقوم بتطبيق شرط المفتاح الخارجي Foreign Key و من أجل تحديد مصدره نقوم بإعطائه خاصية References ثم نستدعي الجدول الذي يمتلك الـ Primary Key و بعدها بين قوسين عمود الـ Primary Key ليصبح السطر في الأخير Foreign Key References customer(custId) و هو المطلوب في الربط بين الجدولين.

ستجد أيضا تغييرا اخر و هو نوع بيانات من نوع Date على عمود the_date و ذلك من أجل تسجيل البيانات على شكل تاريخ و ليس على شكل نص، في حين ان Time نقوم بتسجيله على شكل varchar لا مشكلة في ذلك . 
قبل ان نلج للفقرة الموالية، دعونا نضيف بعض البيانات في جدول الـ Orders من أجل تحقيق بعض الإستعلامات على الجدولين و جلب البيانات الخاصة بهما، لنطبق الإستعلام التالي : 



ملاحظات مهمة حول هذه الفقرة : أثناء تسجيل بيانات في الجدول Orders عليك التأكد ان عمود Customer ID موجود مسبقا في جدول Customer، إذ لا يمكنك إضافة ID غير موجود أصلا في جدول Customers في هذه الحالة قد يحدث خطأ في تسجيل البيانات . 
أيضا، أثناء تعاملك مع الـ SQL Server بدل MySQL قد لا تشتغل معك طريقة إضافة الـ Foreign Key كما في الأعلى و سيتوجب عليك إضافتها كما في السطر الثاني كما في الكود أعلاه ( الكود بين التعليقين ) . 

- إستعلامات جلب البيانات : 

إن كل ما جاء مسبقا سواء في هذا الجزء او الجزء السابق يعتبر فقط الجزء الأول و الأسهل من الـ SQL او من هيكلة و تصميم قواعد البيانات، بحيث ان كل ما سبق ذكره متعلق فقط بهيكلة و صناعة قاعدة البيانات و جداولها، و النتيجة كانت في الأخير قاعدة بيانات تتضمن جدولين مهيكلين جيدا قادرين على تخزين المعلومات و مرتبطين ببعضهما كذلك بشكل منطقي . 
الآن يبدأ الحماس، و تبدأ الإثارة كذلك، بحث انه و بعد تسجيل هذه البيانات سنحتاج الى إسترجاعها حسب الحاجة في برنامجنا، فإن اراد المستخدم الدخول ( كمثال بعيد عن قواعد البيانات التي نحن الآن في صدد العمل عليها ) ستحتاج الى جلب كلمة السر و البريد الإلكتروني مثلا، إن اراد المستخدم الإطلاع على بروفايله و كل معلوماته و التعديل عليها، علينا ان نوفر له ذلك، و من أجل تحقيق هذا سيتوجب علينا الإطلاع على بعض الإستعلامات و إيجاد التعامل معها . 
فكفانا حديثا، و دعونا نبدأ مباشرة بأول إستعلام : 



هذا الإستعلام سنستخدمه كثيرا كثيرا كثيرا، تقريبا أي إستعلام متعلق بالـ Read ( أي قراءة / جلب البيانات من الجداول ) يبتدأ بعبارة Select * ، و تعني Select * في الـ SQL أمر " إختر كل شيئ " و عبارة from table_name تحدد له الجدول الذي نريد ان نجلب منه كل شيئ، لذلك تقنيا عبارة Select * from customer تقول " أجلب كل البيانات من جدول customer " و النتيجة : 



الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)

إن حرف او علام " * " تعني كل شيئ، او كل البيانات، في حالتنا هذه تم إسترجاع كل البيانات من جدول Customer، نحن نريد تخصيص هذه البيانات، لنفترض انه و لدواعي الخصوصية لا نريد إظهار رقم هاتف الزبناء و كذا عناوينهم، كل ما نريد إظهاره هو فقط الرقم الخاص بهم ( الذي لا يتكرر لأنه Primary Key ) و إسمهم الكامل، و نريد إظهار كل الزبناء الموجودين في الجدول كاملا، الإستعلام الأصح هنا هو كالتالي : 



هذه المرة و بدل جلب كل بيانات الأعمدة عن طريق " * " قمنا بتخصيصها أكثر و ذلك عن طريق حذف الـ " * " و تعويضها بأسماء الأعمدة، بحيث نقوم بفرز كل عمود على حدة عن طريق فارزة  " , " مع كتابة إسم العمود بشكل صحيح، في حالتنا هذه نريد الـ ID و الإسم الأخير و الإسم الأول للمستخدم، لذلك قمنا بتطبيق الإستعلام أعلاه، و النتيجة : 



الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)


ملاحظات متعلقة بهذه الفقرة : تختلف أوامر الـ SQL من منصة لأخرى، قد يدعوك بعضها لإضافة الجدول بين فارزتين في إستعلام الـ SQL و غيرها، لذلك لا تقلق فكل الإستعلامات متشابهة، و تذكر ان الـ SQL لا يفرق بين الأحرف الكبيرة و الصغيرة، فإستعلام SELECT هو نفسه Select . 
إستعلام Select سنستخدمه تقريبا الى بقية نهاية هذه الأجزاء، لذلك إن لم تفهمه جيدا، فعد قليلا لهذه الفقرة و قم بالمحاولة مجددا، لكن هذه المرة مع جدول orders مع بعض التجريب . 




- إستعلام جلب البيانات مع إستخدام الـ Alias : 


لنفترض ان رب العمل يريد منا ان نقدم له جدولا يتضمن معلومات المستخدمين، الرقم و الإسم و النسب، أثناء هيكلتنا للجدول قمنا بتسمية هذه الأعمدة بـ CustID , LN, FN ( كما ترى في الصورة أعلاه ) إن قمنا بإستخراج البيانات عن طريق Select و تقديمها لرب العمل، لربما لن يفهم هذه الإختصارات الخاصة بـ CustID او LN او FN، لذلك سنستخدم ما يسمى بالـ Alias او الأسماء الحركية إن صحت الترجمة من أجل تغيير إسمها، ببساطة نضيف عبارة as ' New Name ' مع إحترام الـ " ' " للإسم الجديد حتى يستطيع إستيعاب الفراغ في الإسم، نضيفها مباشرة بعد إسم الجدول حين تحديده بعد Select و ذلك عن طريق الإستعلام التالي : 



كما ترى  قمنا بإختيار إسم جديد مباشرة بعد كل إسم عمود نختاره، هذه العملية تسمى بالـ Alias و تسمح لنا بتغيير إسم الأعمدة في الجدول بالأسماء التي نريد، سنستخدمها بكثرة عن نتعامل مع بعض الـ Functions مثل count() و غيرها ( نحن في طريقها لا داعي للتسرع )، كما ترى سنحصل على نتيجة كالتالي : 



الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)
ستلاحظ أن اسماء الجداول الآن أكثر وضوحا، و يمكننا طباعة هذا الجدول و تقديمه لرب العمل الآن . 


- إستعلام جلب البيانات بإستخدام Distinct : 


من الطبيعي ان تكون بعض البيانات مكررة في الجداول، بالطبع مادام الـ  Primary Key مختلف، احيانا قد نود الحصول على كل البيانات بطريقة غي مكررة، على سبيل المثال لنعد الآن الى جدول Orders، في جدول Orders يوجد لدينا عمود Type هذا العمود يسمح لنا بتسجيل بيانات عن نوع الطلبية التي قام بها المستخدم، شخصيا أضفت نوعين الطلبية العادية Regular Order و طلبية Big Meal Order، لا اعرف لما اضفت هذين الخاصيتين لكن ما علينا كل هذا فقط من أجل الشرح، إن عدت للجزء الأول ستجد انني قمت بخطأ فظيع و هو انني قمت بتسجيل هذا النوع في عمود الـ Time و تسجيل الـ Time في خانة الـ Type لذلك علينا تصحيح هذا الأمر أولا، لنقوم بتصحيحه سنستعين بشرح الجزء الأول و خاصية Alter Table التي تسمح لنا بالتعديل على الجدول، بما ان العمودين من نوع varchar سأقوم فقط بتغيير إسم العمودين و ذلك بالطريقة التالية : 



بهذا الإستعلام قمنا بتغيير أسماء العمودين، قمت بتغيير عمود time الى thetime لأنه يوجد نوع بيانات او Datatype من نوع time و حتى لا يحدث اي إرتباك في الإستعلام قمنا بتغييره، كان هذا مجرد تعديل بسيط، لنعد لمحتوى هذه الفقرة . 

أخبرني رب العمل انه يريد أنوع الطلبات التي تمت، لأقوم بفعل هذا في الغالب سأقوم بإستعلام Select type from orders، و هو إستعلام صحيح، لكن ما سيحدث حقا هو انه سأحصل على أنواع طلبات متكررة، و هذا ما لا يريده رئيسي، بل يريد فقط كل نوع على حدة، لذلك سأستخدم خيار Distinct هذه المرة، و بهذا الإستعلام : 



 بهذا الإستعلام، سنحصل على نتيجة خاصة و هي كالتالي : 



الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)

بالطريقة التالية أحصل على بيانات غير مكررة و ذلك عن طريق Distinct، نضيف عبارة Distinct مباشرة بعد أمر Select .


- إستعلامات جلب البيانات بإستخدام الجمل الشرطية عن طريق Where : 


إن كانت عبارة Select سنستخدمها كثيرا كثيرا كثيرا، فبالتأكيد عبارة Where سنستخدمها أيضا كثيرا كثيرا، في كل من الأمثلة السابقة، دائما ما نجلب كل البيانات كلها حسب نوع الإستعلام، و لا يوجد شرط مُطبق على الإستعلام من أجل تخصيص جلب البيانات، تسمح لنا عبارة Where و هي جزء آخر من أجزاء الإستعلام من مساعدتنا على تحديد شرط معين من أجل جلب البيانات التي تنصاع لهذا الشرط، فعلى سبيل المثال يمكنني جلب الطلبات او الـ orders التي تمت في تاريخ معين، او يمكنني جلب بيانات شخص من خلال إسمه، او يمكنني تحديد كل الأشخاص الذين يقطنون في شارع معين في جدول Customer، هذه عبارة عن شروط يمكنني تحقيقها بعبارة Where، دعونا نقوم بتجريب بعض الإستعلامات بإستخدام هذا الشرط، لنجرب جلب بيانات المستخدمين الذين يحملون إسم " Ahmed " : 



و النتيجة هي كالتالي : 




الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)

ببساطة نضيف عبارة Where مباشرة بعد الإستعلام الذي يجلب كل البيانات او البيانات التي نريد وهو Select، بعد جلب كل البيانات نقوم بفلترتها عبر شرط Where متبوعا بالشرط، في حالتنا هذه شرطنا كان ان يكون عمود Name يساوي ' Ahmed ' مما وفر لنا في الأخير إستعلاما على الشكل أعلاه . 
كل الشروط تقريبا التي تتبع عبارة Where تبدأ بتحديد الـ Column او العمود الذي نريد تطبيق الشرط عليه، الشرط المتبوع يعتمد على أحد الـ Operators، ماذا ؟ ليست لديك فكرة عن الـ Operators ؟ لحظة هذا سيحتاج الى فقرة جديدة. 


- فقرة إضافية : إفهم الـ Operators : 


إن كنت مبرمجا مسبقا، او لديك خبرات أولية في البرمجة، فقد تعاملت بشكل أو بآخر مع الـ Operators، الـ Operators تساعدنا على القيام بالعمليات الحسابية أولا، ثم عمليات المقارنة ثانيا، سنقوم بتعريف فقط الـ Operators الـ Global و لن نتحدث عن المخصصة للـ SQL في الوقت الراهن حتى نصل الى فقراتها المخصصة، أهم الـ  Operators نجد : 
علامة تساوي = ، علامة الجمع + ، علامة الطرح - ، علامة القسمة / ، علامة الموديلو % ( و تعني باقي القسمة فمثلا 4%2 = 0 ) ، علامة != و تعني لا يساوي ، علامة == و تعني التحقق من المساواة، علامة <= أكبر من او يساوي ، علام =< أصغر من أو يساوي، علامة && و تعني " و " ، علامة  || و تعني " أو " ... 
يوجد العديد منها لكن مبدئيا هذه هي العالمية، في الـ SQL نستخدم بعضها و لا نستخدم البعض الآخر إذ نستخدم بعض الـ Operators الأخرى غير هذه أيضا، مثل And . 


- الإستعلام الشرطي Where مع And : 


يسمح لنا الإستعلام الشرطي بخاصية Where من جلب البيانات بعد تحقيقها لشرط محدد، لكن ماذا لو أردنا ان يتم تحقيق شرطين او أكثر في الإستعلام قبل جلب البيانات ؟ يمكن تنفيذ ذلك عن طريق خاصية " And "، في الإستعلام السابق قمنا بالبحث عن أشخاص يمتلكون إسم " Ahmed "، و قد حصلنا على نتيجتين في عملية البحث بهذا الشرط، لكن لدينا شرط آخر نريد تنفيذه، نريد أشخاصا بإسم "Ahmed" يقطنون بمدينة رمزها البريدي 28932، يمكننا تحقيق النتيجة عن طريق هذا الإستعلام : 



اما النتيجة المحصلة فهي كالتالي : 



الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)

إن دققت النظر في الصورة قليلا، ستجد انه يقوم بتأطير الأعمدة التي نطبق عليها الشرط، و هو عمود LN للبحث عن إسم "Ahmed" و عمود الـ ZipCode للبحث عن الرقم البريدي للمدينة.
خاصية And تسمح لنا بتجميع العديد من الشروط دفعة واحدة في إستعلام واحد، بحيث تفضل عبارة And الشروط على حدة، فالشرط الأول هو جلب إسم "Ahmed" و الشرط الثاني هو جلب الـ ZipCode = 28932 و وسيلة الربط بينهما هي And التي توسطتهما في الإستعلام، إن أردت إضافة شرط ثالث، فمباشرة بعد الـ ZipCode أضف And ثم أضف الشرط الثالث، لا مشكلة في ذلك إطلاقا.


- الإستعلام الشرطي Where مع Or : 


على عكس And، يمكننا إستخدام Or المتناقضة كليا مع And، في إستعلام And يجب على الشرطين او الشروط المضافة ان تتحقق كلها من أجل جلب النتيجة، فإن لم يكن هناك على سبيل المثال و بالإعتماد على المثال السابق اي مستخدم إسمه 'Ahmed' يقطن بالمدينة رقم 28932 فلن نحصل على أي نتائج و سترجع النتائج فارغة، لأنه وجب إلزاما تحقق الشرطين من أجل الحصول على نتيجة.
خاصية or عكسية، بحيث تعيد النتائج فقط حين يتحقق شرط واحد من سلسلة الشروط، يتم فصل الشروط كذلك بـ or بدل And و في حالة تحقق أي شرط من الشروط يتم إسترجاع النتائج الخاصة به، كمثال لذلك، دعونا نبحث عن أشخاص يملكون إسم " Ahmed " او يملكون إسم "Rida" ، المفتاح هنا هو عبارة " أو "، لذلك إستعلامنا سيكون بالشكل التالي : 



اما النتيجة فهي كالتالي : 



الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الثاني)

يمكنك ان تلاحظ انه تم جلب كل الأسطر التي يتضمن الإسم الخاص بها عبارة "Ahmed" او "Rida"، يمكن إستخدام أزيد من شرط كذلك لجلب البيانات عند تحقيقه عند إستخدام Or كما الحال بالنسبة لـ And . 

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

شاركه على :


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

الـ SQL للمبتدئين : تعلم أساسيات الـ SQL و أوامر الإستعلام ( الجزء الأول )


تتهيكل قواعد البيانات بشكل منتظم، بحيث يتم حفظ بيانات كل مشروع فيما يسمى بقاعدة بيانات او Database، لكل مشروع قاعدة بيانات واحدة، تتضمن قواعد البيانات مجموعة من الجداول او Tables، هذه الـ Tables او الجداول تخص كل عنصر من عناصر المشروع البرمجي الخاص بك، فإن كان على سبيل المثال المشروع عبارة عن إدارة المستخدمين الذين يتم تسجيلهم في أقسام مدرسة معينة، فالمستخدم يعتبر عنصرا و المدرسة كذلك عنصر، في الغالب قد قمت بإستخراج عناصر مشروعك البرمجي عبر بعض تقنيات التحليل مسبقا مثل UML او Merise، او ان العنصر الخاص بك هو في الأساس Class في مشروعك البرمجي، بتحويله الى لغة قواعد البيانات ( ليست الـ SQL بل فقط تعبير مجازي ) فإن الـ Class او العنصر يمكن إعتباره Table داخل الـ Database، يمتلك كذلك الـ Table او الجدول عناصر محددة و هي الـ Column او العمود و الـ  Row او السطر، يتضمن العمود نوع او إسم البيانات التي يتضمنها الـ Table مثل الـ ID او الـ Name الخاص بالمستخدم و هكذا، بينما يتضمن الـ Row او السطر المعلومات المسجلة مثل " 1 " بالنسبة للـ ID و " Ahmed " بالنسبة للـ Name . 
بعكس الكل، يتم تخزين البيانات على شكل سطور Row يحدد نوع محتواها مسبقا عن طريق الـ Column يتم تخزين الكل على شكل Table الذي يجسد نفسه داخل Database . 
لا تقلق إن لم تستوعب الأمر حتى الآن، فلازال لدينا الكثير من الوقت لفهم كل هذا و التعامل معه بطريقة أعمق. 

- فهم أساسيات قواعد البيانات : 


الصورة الأولى : قاعدة البيانات

قاعدة البيانات تعتبر حاوية او Container ( نقوم بترجمة بعض العبارات للإنجليزية في حالة أردت التعمق كثيرا عبر مقالات أجنبية لاحقا، كما انك ستتعامل مع كل شيئ بالإنجليزية و الترجمة بالعربية ما هي الا اداة مساعدة على الفهم )، هذه الحاوية لا تتكرر، بحيث لكل مشروع برمجي حاوية، اي قاعدة بيانات خاصة به، لا يمكن لمشروع برمجي ان يتضمن عدة قواعد بيانات إلا في حالة خاصة جدا و التي لن تستخدمها حاليا، كل قاعدة بيانات تتضمن جدولا او عدة جداول Tables، كما في الصورة أعلاه، إذ نجد جدولا يسمى Customer و آخر إسمه Orders و الآخر Order&Pizzas و غيرها، تلك هي مكونات و عناصر المشروع، تستطيع ان تلاحظ ان لكل جدول بعض الخصائص، لنأخذ مثلا جدول Customer، تستطيع ان ترى خاصية Cust ID و LN ( Last Name ) و FN ( First Name ) و Phone Number و غيرها، تلك هي خصائص الجدول او Properties / Attributes، كل خاصية تعتبر عمودا محددا يستطيع تخزين بيانات من ذلك النوع، فمثل عمود Last Name سيقوم بتخزين فقط الإسم الأخير للـ Customers، لن يقوم بتخزين أي شيئ آخر، اما الـ Row او السطر فهو البيانات التي تم تخزينها، يمكن تخزين عدد لا محدود من البيانات على شكل سطر، في حالتنا هذه إن ادخلت بيانات مستخدم في Customer على الشكل التالي : (id: 1 , LN: Mahmoud, FN: Ahmed, Phone Number:0588899662, Street Name: Mystreet, Street Number:25, Zipcode: 25200)، فهذا يعتبر سطرا او Row إذ يتضمن معلومات مستخدم تم تخزينها وفق بيانات العمود.
بما اننا نتعامل مع قواعد بيانات علائقية او RDBMS ( يمكنك الإطلاع على مفهوم الـ RDBMS من خلال هذا المقال ) فهذا يعني ان الجداول مرتبطة ببعضها على شكل علاقات، سنناقش كل جزء على حدة حين نصل إليه في هذا المقال، يتم تجسيد هذه العلاقات في المبيان أعلاه على شكل خطوط . 


- ما هي الـ SQL : 

كتعريف بسيط للـ SQL قبل البدئ في شرحنا لهذا اليوم، الـ SQL هي إختصار لعبارة Structured Query Language و يمكن شرحها او ترجمتها الى لغة إستعلا مهيكلة، هي ليست لغة برمجة بالكامل بل فقط لغة إستعلام تقوم بتنفيذ أوامر على قواعد البيانات و جداولها و محتوياتها و إسترجاع النتائج، يتم إستخدامها على نطاق واسع في التعامل مع قواعد البيانات العلائقية . 


- إنشاء قاعدة بيانات : 



يمكنك إختيار المنصة المناسبة لك او لمشروعك من أجل بناء قواعد البيانات و هيكلتها و إستعلامها، شخصيا سأستخدم منصة MySQL لتنفيذ الأوامر و مشاركتها معكم مع شرحها، يمكنك إستخدام منصات أخرى حسب نوع مشروعك مثل SQL Server، لا تختلف الأوامر كثيرا . 
لإنشاء قاعدة بيانات يمكن فعل ذلك بشكل يدوي عن طريق الولوج الى خدمة PhpMyAdmin ثم النقر على تبويب Database الذي سيوفر لنا تلقائيا مساحة كتابة إسم قاعدة البيانات الخاصة بالمشروع، ثم بعدها ننقر على Create من أجل صناعتها : 



لكننا هنا نريد تعلم أوامر الإستعلامات و ليس الأوامر اليدوية، لذلك سنتوجه الى تبويب SQL في الأعلى الى جانب تبويب Database ثم نقوم بكتاب الأمر التالي : 



هذا الإستعلام يساعدنا على إنشاء قاعدة البيانات، يتكون الإستعلام من 3 فقرات الأولى Create و هو أمر أساسي من أجل صناعة قاعدة البيانات، الثاني Database لنحدد ان ما نريد صناعته هو قاعدة البيانات، اما الثالث فهو إسم قاعدة البيانات، لاحظ معي انه يمكن تطبيق الإستعلام دون الحاجة الى غلق السطر بواسطة فاصلة منقوطة ( ; )، بالطريقة التالية ستنشئ قاعدة بيانات ستجدها في الجانب، يمكنك النقر عليها و الذهاب مجددا لتبويب SQL من أجل تنفيذ الأوامر و الإستعلامات القادمة . 



- صناعة الجداول في قواعد البيانات : 


بعد إختيار قاعدة البيانات، يمكنك التوجه أيضا الى تبويب SQL، لاحظ جيدا ان كل الإستعلامات في شرح هذا المقال سيتم تنفيذها في تبويب SQL في قاعدة البيانات التي قمنا بنصاعتها لذلك لن نقوم بالتذكير في كل مرة، دعونا نأخذ بعين الإعتبار قاعدة البيانات السابقة في الصورة الأولى، لنقم بصناعة جدول Customer و ذلك عن طريق الإستعلام الآتي : 



لا تقلق سنشرح كل شيئ على حدة، أولا لاحظ معي ان لغة الـ SQL لا تعير إهتماما للحروف الكبرى او الصغرى، فـ Create هي نفسها CREATE هي نفسها create لا مشكلة في ذلك . 

يبدأ الإستعلام بعبارة Create Table table_name ، يتم تغيير table_name حسب نوع الجدول، بالنسبة لنا إسم الجدول هو Customer.
ثم نقوم بفتح قوسين () و نقوم بتحديد الـ Columns داخله، يتميز الـ Column بميزتين أساسيتين و هما الإسم و النوع، فمثلا العمود الثاني ( دعونا نتجاوز الأول لوهلة ) نجد سطر LN varchar(50) اي قمت بتحديد إسم العمود و هو LN ثم نوعه و هو varchar و قمت بتحديد عدد الأحرف في 50 حرف، يوجد العديد من الانواع مثل Text, Integer, double,float,date,boolean، كل نوع يحفظ نوعا محددا من البيانات، فمثلا الـ Integer يحفظ فقط الأرقام الصحيحة، بينما varchar يحفظ النصوص بكل أنواعها في حدود 50 حرف، بينما Text يحفظ النص مهما كان طوله و هكذا دواليك . 
إذن الكود أعلاه سيقوم بإنشاء جدول بإسم Customer و هذا الجدول يتضمن تلك الأعمدة، و لكل عمود نوع خاص من البيانات سيقوم بإستقباله ، لكن ما خطب الـ Primary Key ؟ 


- إفهم الـ Constraints : 


تحدثنا عن كيف أن الـ Column يتميز بميزتين أساسيتين و هما الإسم و النوع، يوجد كذلك ميزة ثالثة ثانوية في الـ Column تسمى بالـ Constraint يسمح لنا هذا الـ Constraint بمنع او السماح بتسجيل المعلومات في العمود تحت شرط معين، على سبيل المثال أعلاه إستخدمنا Constraint يُسمى بالـ Primary Key او المفتاح الأساسي، كل جدول يمتاز بعمود أساسي يحمل رقما او ميزة لا يمكن تكرارها و ذلك من أجل جعل كل نوع من البيانات يتم تسجيلها في الجدول غير مكرر، بل و حتى ان تكررت نفس البيانات الأخرى يبقى الـ Primary Key فريدا من نوعه . 
يوجد العديد من الـ Constraints مثل Unique, Not Null, Index ... دعونا نطبق بعضها في الجدول ذاته لنحصل على النتيجة التالية : 



يمكنك ان ترى جليا دور الـ Constraint في الكود، يمكنك إضافة Constraint التي توفرها لك مسبقا الـ SQL او يمكنك صناعة Constraint الخاص بك كما في الأسفل Unique() لكن في حالة أردت صناعة واحدة خاصة  بك سيكون الكود مختلف قليلا، في الجدول أعلاه لا يوجد مثلا الفئة العمرية التاريخ من أجل صناعة Constraint لكن في مثال آخر سنقوم بذلك حتما . 



- حذف و تعديل الجداول في قواعد البيانات : 





نستخدم أمر Drop Table متبوعا بإسم الجدول كما في الإستعلام الأول أعلاه من أجل حذف الجدول كاملا، تأكد انك حقا لا تريد الجدول من أجل تنفيذ هذا الأمر لأن كل البيانات المستخدمة في هذا الجدول ستضيع منك، أيضا تأكد من أن الجدول لا تربطه أي علاقات مع جداول خارجية او في هذه الحالة قد يحدث خطأ و يرفض الحذف، في هذه الحالة سيتوجب عليك القيام بأمر آخر سنعود له لاحقا حين نتحدث أكثر عن العلاقات بين الجداول و كيفية إدارتها.

يتم إستخدام أمر Drop للحذف دائما، يمكن إستخدام Drop Database myDatabase من أجل حذف قاعدة بيانات كاملة إن اردت.
أحيانا قد تجد ان الجدول الخاص بك و المليئ بالمعلومات و البيانات يحتاج الى عمود جديد، في حالتنا هذه و مع جدول Customer إكتشفنا انه قد نحتاج الى عمود السن او Age، لا يمكننا حذف الجدول كاملا و إعادة صناعته مع إضافة العمود، لذلك سنحتاج فقط الى التعديل على الجدول من أجل إضافة هذا العمود، لفعل ذلك سنستخدم إستعلام Alter Table table_name، هذا الأمر يساعدنا على إختيار أولا الجدول الذي نريد التعديل عليه، ثم بعدها يأتي المقطع الثاني الخاص بالتعديل، في حالتنا نريد إضافة عمود Age لذلك مقطع التعديل سيحتوي على Add column_name column_type  في حالتنا نحن Add Age integer ليصبح الإستعلام كاملا كما في الأعلى في الإستعلام الثاني . 
إكتشفنا لاحقا انه لا يمكنك طلب عمر الزبون أثناء شرائه للبيزا، حقا من يفعل ذلك ؟ لا احد، لذلك قررنا حذف العمود فإضافته كان خطأََ في الأساس، لذلك سنستعين مجددا بخاصية Alter Table، المقطع الأول لتحديد الجدول لن يختلف، سيختلف فقط المقطع الثاني الخاص بأمر التعديل و كما أشرنا فإن أمر Drop يشير دائما للحذف، لذلك لحذف العمود نعتمد على الإستعلام الأخير . 
تختلف الإستعلامات الخاصة بالتعديل حسب نوع التعديل الذي تريد القيام به على الجدول، لكن الإستعلام الرئيسي هو Alter Table table_name


- إضافة بيانات في الجداول : 





إضافة البيانات في الجداول أمر ضروري، يتم إضافة البيانات على شكل Row او سطر يتضمن معلومات تناسب كل عمود، فعمود الـ ID سيحصل على رقم، عمود الـ LN سيتضمن الإسم الأخير للمستخدم و هكذا، يمكن إضافة البيانات في الجدول عن طريق أمر Insert Into table_name values() كإستعلام أساسي، لكن يمكن تخصيص هذا الإستعلام حسب الحاجة : 

- في الإستعلام الأول قمنا بإضافة بيانات في الجدول الخاص بنا وهو Customer عبر الإستعلام سابق الذكر، في الـ Values نقوم بإضافة القيم التي نريد تسجيلها في الجدول بالترتيب المتعلق بالجدول و بإحتراف نوع كل بيانات، فمثلا في ترتيب الجدول لدينا على التوالي : custID, LN, FN, PhoneNumber, StreetAdress, StreetNumber, ZipCode  و نوع البيانات التي تستقبلها على التوالي هي : Integer, varchar, varchar, varchar, text, Integer, Integer لذلك البيانات التي يجب إدخالها يجب ان تحترم هذا الترتيب و نوع البيانات، فإن كان Integer يجب وضع رقم صحيح طبيعي، إن كان varchar/text يجب وضع البيانات بين علامتين ' ' ، و هكذا . 
- في الإستعلام الثاني قمنا بإضافة أزيد من بيانات دفعة واحدة، لست مضطرا ان تعيد أمر Inster Into في كل مرة تريد إضافة بيانات، يمكن إضافة الكل دفعة واحدة عن طريق الإستعلام الثاني، قمنا بتفريق كل سطر Row بيانات في سطر خاص به من أجل تسهيل قرائته، لا تقلق سيشتغل الكود لا مشكلة في ذلك . 
- لنفترض أن احد الزبناء رفض إعطائنا أي معلومات حول نفسه، فقط الإسم الكامل، لا عنوان و لا رقم هاتف، رغم ذلك وجب علينا تسجيله في قواعد البيانات الخاصة بنا، كيف نفعل ذلك ؟ نحن لا نملك كل المعلومات الخاصة به التي يتطلبها الجدول ؟ ببساطة نقوم بإضافتها عن طريق الإستعلا الثالث، يختلف الإستعلام الثالث أعلاه عن بقية الإستعلامات السابقة في الجزء المتعلق بإختيار الجدول، بحيث مباشرة بعد إختيار الجدول الذي اود ان اضع بياناتي داخله، اقوم بتحديد مباشرة نوع البيانات المدخلة، في حالتنا هذه إخترنا جدول Customer بالطبع و البيانات التي سأدخلها هي custId, LN, FN فقط لذلك سيصبح الإستعلام Insert Into Customer(custId,LN,FN) ثم بقية الإستعلام كما السابقين مع إضافة فقط البيانات التي لدينا بترتيب متوالي . 
ملاحظات حول هذه الفقرة : أولا تذكر ان تحترم الـ Constraint من أجل تسجيل البيانات بشكل صحيح، على سبيل المثال لدينا الـ CustID عبارة عن Primary Key أي لا يمكنه ان يتكرر، فلا يمكنك إدخال بيانات بنفس الـ CustID إن حاولت إدخال سطرين ب CustID يساوي 1 سيحدث خطأ في الإضافة. 
أيضا في الإستعلام الثالث، الخانات التي لم يتم إدخالها سيتم إضافة عبارة NULL في محتواها . 
في حالة كان الـ Constraint على أحد الخانات هو NOT NULL و لم تقم بإدراجه في الإستعلام الثالث، سيظهر لك خطأ كذلك، لذلك إنتبه جيدا مع الـ Constraint و إحترمها . 

سنختم الجزء الأول هنا و سنبدأ مباشرة بإعداد الجزء الثاني، في الجزء الثاني سنقوم بشرح الإستعلامات الأساسية الخاصة بالـ SQL و الأكثر إستخداما مع شرحها أيضا و سنتعلم كذلك أساسيات الـ CRUD و كيفية تحقيقها بطريقة صحيحة حسب متطلبات برامجك.

شاركه على :