[Powered by Google Translate] [SQL] [CHRISTOPHER بارثولومو] [جامعة هارفارد] [هذا CS50] [CS50 TV] لذلك، المبرمجين استخدام قواعد البيانات كأداة لتخزين وتنظيم لدينا البيانات الثابتة داخل الجداول. هذا يعني أن يتم تخزين البيانات الخاصة بك على غير متقلبة الوساطات مثل القرص الصلب، وحتى عندما يكون الكمبيوتر متوقفا عن التشغيل، فإن البيانات لا تزال سليمة. و، والمبرمجين، استخدام قواعد البيانات لدينا برامج لسيناريوهات مثل تخزين معلومات المستخدم من نماذج الويب، وتبحث عن المخزون، أو تحديث المعلومات حول ما عرض المواقع. ولكن كيف نتفاعل مع الواقع قاعدة بياناتنا، أو ماذا نستخدمها لقراءة وتخزين وحذف، وتحديث البيانات المتوفرة لدينا داخل هذه الجداول قاعدة البيانات؟ كذلك، فإن الجواب هو أن نستخدم نوع خاص من اللغة قاعدة البيانات الذي يتفاعل مباشرة مع جداول قاعدة البيانات لدينا. ويتمحور عليه اسم لغة الاستعلام، [لغة الاستعلام الهيكلية] أو ما أود أن أشير إلى أنه SQL. الآن، [سي QUEL]، أو SQL، ليست لغة برمجة، ولكن بدلا من ذلك، انها اللغة التي توفر مجموعة قياسية من الأوامر لاسترداد البيانات ومعالجتها من مجموعة متنوعة من نظم إدارة قواعد البيانات. لغرض CS50، سوف نذهب أكثر من أربعة الأوامر الأساسية: حدد، إدراج، تحديث، وحذف. وعلاوة على ذلك، سوف نستخدم موقع على شبكة الإنترنت قاعدة بيانات تسمى بريس، التي مثبتة على الأجهزة لكتابة بياناتنا SQL. لذلك، لمساعدتك على تذكر هذه الأوامر، لقد احضرت بعض الكعك في خزانة للمساعدة في سيناريوهات لدينا. نقول لديك قاعدة بيانات كب كيك ل، حيث يمكنك تخزين جميع المعلومات عن الكعك الخاص بك. الآن، يمكن أن تحتوي على قواعد بيانات العديد من الجداول ويمكن أن تحتوي على الجداول نفسها العديد من الأعمدة. داخل قاعدة البيانات لدينا كب كيك، لدينا جدول يسمى cupcake_cupboard. وسيتم استخدام هذا الجدول لتخزين جميع المعلومات عن الكعك التي هي، أيضا، في خزانة الخاص بك. الأعمدة الموجودة داخل الجدول الخاص بك تمثل سمات كب كيك. على سبيل المثال، الأعمدة هي cupcake_cupboard كعكة ID، CakeType، CakeColor، وCakeIsNice. يستخدم هذا العمود منطقية كتبته لتحديد ما إذا الكعكة هو لطيف أو ليس لطيفا. ونحن في طريقنا للبدء في كتابة عبارة SELECT. وتستخدم عبارات SELECT لاسترداد البيانات من جدول قاعدة بيانات معينة. في هذا السيناريو، نريد أن نعرف كل شيء عن كل الكعك التي توجد في خزانة لدينا. بناء الجملة للقيام بذلك هي "تحديد" نجمة الفضاء، أو *، ومساحة من الفضاء جدول أعمالنا، وهو cupcake_cupboard. دعونا نمضي قدما وتنفيذ ذلك. كما يمكننا أن نرى، وهذه هي كل الكعك في خزانة لدينا. من المهم أن نلاحظ أن *، أو النجمة، هو شخصية وبطاقة البرية أن يدل على جمع كافة الأعمدة من الجدول بعض. عادة، لا يمكننا الوصول إلى عمود أو أعمدة محددة * من خلال استبدال مع اسم العمود الفعلي. إذا كنا نريد أعمدة متعددة، ولكن ليس كل شيء، يمكننا تحقيق ذلك من خلال كتابة أسماء الأعمدة ترسيم كل عمود بفاصلة. على سبيل المثال، دعونا استرداد فقط CakeId وCakeType في الجدول cupcake_cupboard. بناء الجملة للقيام بذلك هي: SELECT فاصلة CakeID الفضاء CakeType الفضاء من cupcake_cupboard لدينا، الجدول. دعونا نمضي قدما وتنفيذ هذا. وهنا، ونحن الآن لا تملك إلا العمودين حددنا لكل كب كيك في خزانة لدينا. يمكننا أيضا تحسين نتائجنا الاستعلام عن طريق تحديد و"أين" شرط بعد اسم الجدول. على سبيل المثال، يبدو أن هناك لدينا كب كيك في خزانة وهذا هو، أيضا، ليس لطيفا يبحث. دعونا معرفة كل الكعك في خزانة في أن يتم، أيضا، ليس لطيفا يبحث باستخدام "أين" شرط. بناء الجملة للقيام بذلك هي: SELECT * مساحة الفضاء من الفضاء cupcake_cupboard الفضاء حيث لدينا مساحة العمود الشرطي، في هذه الحالة = CakeIsNice، وقيمة منطقية من False. من المهم أن نلاحظ أنه إذا كنت تستخدم السلاسل، يجب عليك احتوائه تهمك واحد. هذا صحيح بالنسبة لجميع السلاسل في SQL، أو قاعدة بيانات SQL من حيث الأحرف البديل، المعروفة باسم نوع البيانات VARCHAR. في هذه الحالة، نحن نستخدم صواب أم خطأ، والذي هو قيمة منطقية وليس سلسلة. دعونا نمضي قدما وتنفيذ هذا الأمر. وها، كانت الحالة التي لدينا 1 الشوكولاته ليس لطيفا كب كيك في خزانة لدينا. المقبل، ونحن في طريقنا لكتابة عبارة INSERT. وتستخدم عبارات INSERT لإدراج أو إضافة إضافية صفوف البيانات في جدول قاعدة البيانات. إعادة النظر في السيناريو لدينا، دعونا نفترض أن لدينا للتو كب كيك العلامة التجارية الجديدة. منذ تنظم جدا ونحن أكلة كب كيك، ونحن ستكون لدينا لإدراج هذه كب كيك جديدة في الجدول cupcake_cupboard لدينا. بناء الجملة للقيام بذلك هو هذا: إدراج الفضاء إلى الفضاء جدول أعمالنا، cupcake_cupboard، والفضاء (، ونحن هنا تحديد أسماء الأعمدة، محدد بفاصلة، CakeType فاصلة فاصلة CakeColor CakeIsNice) الفضائية. وفي أعقاب ذلك، نكتب المساحة VALUES كلمة (، وهنا نحن ندخل قيمة كل عمود على التوالي، كما محدد بفاصلة. اقتباس واحد، لأنها كلها قيم VARCHAR سنقوم تحيط بهم تهمك واحد، "فاصلة" زبدة الفول السوداني بني فاتح 'فاصلة صحيح. الآن، فإنه من المهم لإعطاء كل صف رقم فريد لتعريف نفسه. Autoincrementing عمود يوفر هذا النحو  "لا يمكن لاثنين من أي وقت مضى وجود معرفات نفس في هذا الجدول." دعونا نمضي قدما وتنفيذ. هناك نذهب، كل المنظمة. البيان SQL التالية التي سنقوم كتابة عبارة التحديث. يمكن استخدام عبارة UPDATE لتعديل البيانات داخل العمود لأي صف في الجدول القائمة قاعدة البيانات الخاصة بك. في وقت سابق من السيناريو لدينا، وذلك باستخدام عبارة SELECT، حددنا كب كيك ضمن الجدول cupcake_cupboard لدينا كان الذي CakeIsNice قيمة خطأ. دعونا نفترض أن لدينا في حين كب كيك زبدة الفول السوداني كان في الفرن، التي قطعناها على أنفسنا كب كيك لدينا ليست بهذه طيفة لطيفة جدا. يجري ذلك بشكل استثنائي تنظيم، ونحن نريد لدينا كب كيك لتعكس هذه القيمة في الجدول cupcake_cupboard لدينا. لذا، دعونا تحديث كب كيك الشوكولاته لدينا في قاعدة البيانات لتعكس هذا. بناء الجملة: UPDATE الفضاء جدول أعمالنا، cupcake_cupboard، والفضاء الفضاء SET العمود الذي نود أن تتغير، CakeIsNice =. ثم هنا نضع مجالنا قيمة جديدة حقيقية. الآن، لأننا لا نريد لتحديث كافة الصفوف مع هذه القيمة، نريد لتوفير "أين" شرط أن تحديد لنا إلى الصف الدقيقة التي نريد تعديلها. في هذه الحالة، ونحن نعلم أن هناك واحد فقط كب كيك الذي يحتوي على قيمة CakeIsNice من خطأ. وعلاوة على ذلك، سوف نضمن أيضا أننا نقوم بتحديث الصف الصحيح باستخدام "و" شرط. نستخدم "و" شرط لتحسين الاستعلام لدينا مزيد. في هذه الحالة، لأننا نعلم أن cupcake غير الشوكولاته، سوف نستخدم هذا العمود CakeType. WHERE فضائنا الفضاء العمود الشرطي CakeIsNice الفضاء = خطأ، والفضاء CakeType = 'CHOCOLATE ". لذلك، ووضع كل ذلك معا، يقول هذا البيان التحديث العثور على كل الكعك في خزانة لدينا كب كيك، وإذا كان هناك كب كيك الذي يحتوي على عمود CakeIsNice قيمة خطأ وCakeType يحتوي على قيمة CHOCOLATE، نحن نريد لتحديث CakeIsNice صفوف محددة القيمة إلى True. لذلك، دعونا نمضي قدما وتنفيذ العبارة. والآن، نحن نظمنا. أنجز كل هذا الكلام من الكعك لي قليلا من الجوع. أعتقد أنني يجب أن أساعد نفسي إلى واحد. ولكن إذا كنت فعلا أكل هذا كب كيك، وأرجو على الأقل أيضا إزالة وجودها  من الجدول cupcake_cupboard لدينا. للقيام بذلك، سوف نستخدم "حذف" بيان. يمكن استخدام "حذف" بيان لإزالة كافة أو بعض الصفوف من الجدول. إذا كنت ترغب في إزالة بعض صف محدد من الجدول، ثم يجب توفير "أين" شرط، وبالتالي تحديد عمود يجب أن تكون فريدة من نوعها إلى الصف الذي ترغب في إزالته. هذا هو بناء الجملة: حذف مساحة من الفضاء لدينا الجدول، cupcake_cupboard، والفضاء. الآن، في هذه المرحلة، كلما كنت إلى هذا الحد في بيانكم حذف كنت تريد أن تكون حذرة للغاية. على سبيل المثال، إذا كنت ترغب في تشغيل هذا الاستعلام كما هو دون تقديم بعض "أين" شرط وأود أن تفقد كل البيانات في هذا الجدول cupcake_cupboard، ولكن لأنني أعرف مسبقا أن معرفات كعكة بلدي هي فريدة من نوعها، سوف تستخدم الكعكة المخملية الحمراء ID لبلدي شرط "أين". WHERE فضائنا العمود، CakeID = 1. لأن هذا هو قيمة عددية ليست هناك حاجة لتحيط بها تهمك واحد. لذلك، دعونا تنفيذ العبارة. حسنا، الآن بعد أن قمت محو نحن وجود هذا كب كيك من الجدول cupcake_cupboard، لدينا شيء واحد فقط من الزمن: جعلها تختفي. أنا كريستوفر بارثولوميو. هذا هو CS50.