1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER بارثولومو] [جامعة هارفارد] 3 00:00:04,000 --> 00:00:06,000 [هذا CS50] [CS50 TV] 4 00:00:07,950 --> 00:00:11,620 لذلك، المبرمجين استخدام قواعد البيانات كأداة لتخزين وتنظيم 5 00:00:11,620 --> 00:00:13,620 لدينا البيانات الثابتة داخل الجداول. 6 00:00:13,620 --> 00:00:18,960 هذا يعني أن يتم تخزين البيانات الخاصة بك على غير متقلبة الوساطات مثل القرص الصلب، 7 00:00:18,960 --> 00:00:22,940 وحتى عندما يكون الكمبيوتر متوقفا عن التشغيل، فإن البيانات لا تزال سليمة. 8 00:00:22,940 --> 00:00:29,530 و، والمبرمجين، استخدام قواعد البيانات لدينا برامج لسيناريوهات مثل تخزين 9 00:00:29,530 --> 00:00:32,890 معلومات المستخدم من نماذج الويب، وتبحث عن المخزون، 10 00:00:32,890 --> 00:00:36,210 أو تحديث المعلومات حول ما عرض المواقع. 11 00:00:37,150 --> 00:00:40,070 ولكن كيف نتفاعل مع الواقع قاعدة بياناتنا، 12 00:00:40,070 --> 00:00:43,150 أو ماذا نستخدمها لقراءة وتخزين وحذف، 13 00:00:43,150 --> 00:00:46,070 وتحديث البيانات المتوفرة لدينا داخل هذه الجداول قاعدة البيانات؟ 14 00:00:47,280 --> 00:00:49,700 كذلك، فإن الجواب هو أن نستخدم نوع خاص من اللغة قاعدة البيانات 15 00:00:49,700 --> 00:00:53,400 الذي يتفاعل مباشرة مع جداول قاعدة البيانات لدينا. 16 00:00:53,400 --> 00:00:56,740 ويتمحور عليه اسم لغة الاستعلام، 17 00:00:56,740 --> 00:00:58,740 [لغة الاستعلام الهيكلية] 18 00:00:58,740 --> 00:01:00,740 أو ما أود أن أشير إلى أنه SQL. 19 00:01:00,740 --> 00:01:05,100 >> الآن، [سي QUEL]، أو SQL، ليست لغة برمجة، 20 00:01:05,100 --> 00:01:08,580 ولكن بدلا من ذلك، انها اللغة التي توفر مجموعة قياسية من الأوامر 21 00:01:08,580 --> 00:01:13,520 لاسترداد البيانات ومعالجتها من مجموعة متنوعة من نظم إدارة قواعد البيانات. 22 00:01:13,520 --> 00:01:17,630 لغرض CS50، سوف نذهب أكثر من أربعة الأوامر الأساسية: 23 00:01:17,630 --> 00:01:21,210 حدد، إدراج، تحديث، وحذف. 24 00:01:21,210 --> 00:01:26,230 وعلاوة على ذلك، سوف نستخدم موقع على شبكة الإنترنت قاعدة بيانات تسمى بريس، 25 00:01:26,230 --> 00:01:29,890 التي مثبتة على الأجهزة لكتابة بياناتنا SQL. 26 00:01:30,830 --> 00:01:33,050 لذلك، لمساعدتك على تذكر هذه الأوامر، 27 00:01:33,050 --> 00:01:37,080 لقد احضرت بعض الكعك في خزانة للمساعدة في سيناريوهات لدينا. 28 00:01:39,650 --> 00:01:42,210 نقول لديك قاعدة بيانات كب كيك ل، 29 00:01:42,210 --> 00:01:44,490 حيث يمكنك تخزين جميع المعلومات عن الكعك الخاص بك. 30 00:01:44,490 --> 00:01:48,220 الآن، يمكن أن تحتوي على قواعد بيانات العديد من الجداول 31 00:01:48,220 --> 00:01:50,950 ويمكن أن تحتوي على الجداول نفسها العديد من الأعمدة. 32 00:01:50,950 --> 00:01:57,020 داخل قاعدة البيانات لدينا كب كيك، لدينا جدول يسمى cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 وسيتم استخدام هذا الجدول لتخزين جميع المعلومات عن الكعك 34 00:02:00,500 --> 00:02:02,990 التي هي، أيضا، في خزانة الخاص بك. 35 00:02:02,990 --> 00:02:07,770 الأعمدة الموجودة داخل الجدول الخاص بك تمثل سمات كب كيك. 36 00:02:07,770 --> 00:02:14,560 على سبيل المثال، الأعمدة هي cupcake_cupboard 37 00:02:14,560 --> 00:02:15,920 كعكة ID، CakeType، CakeColor، وCakeIsNice. 38 00:02:15,920 --> 00:02:23,040 يستخدم هذا العمود منطقية كتبته لتحديد ما إذا الكعكة هو لطيف أو ليس لطيفا. 39 00:02:23,040 --> 00:02:26,560 ونحن في طريقنا للبدء في كتابة عبارة SELECT. 40 00:02:26,560 --> 00:02:32,160 وتستخدم عبارات SELECT لاسترداد البيانات من جدول قاعدة بيانات معينة. 41 00:02:32,160 --> 00:02:34,890 في هذا السيناريو، نريد أن نعرف كل شيء 42 00:02:34,890 --> 00:02:39,080 عن كل الكعك التي توجد في خزانة لدينا. 43 00:02:39,080 --> 00:02:48,670 بناء الجملة للقيام بذلك هي "تحديد" نجمة الفضاء، أو *، ومساحة من الفضاء جدول أعمالنا، 44 00:02:48,670 --> 00:02:52,050 وهو cupcake_cupboard. 45 00:02:52,050 --> 00:02:54,640 دعونا نمضي قدما وتنفيذ ذلك. 46 00:02:56,670 --> 00:03:00,140 >> كما يمكننا أن نرى، وهذه هي كل الكعك في خزانة لدينا. 47 00:03:00,140 --> 00:03:05,110 من المهم أن نلاحظ أن *، أو النجمة، هو شخصية وبطاقة البرية 48 00:03:05,110 --> 00:03:08,830 أن يدل على جمع كافة الأعمدة من الجدول بعض. 49 00:03:08,830 --> 00:03:13,650 عادة، لا يمكننا الوصول إلى عمود أو أعمدة محددة 50 00:03:13,650 --> 00:03:16,950 * من خلال استبدال مع اسم العمود الفعلي. 51 00:03:16,950 --> 00:03:21,220 إذا كنا نريد أعمدة متعددة، ولكن ليس كل شيء، يمكننا تحقيق ذلك 52 00:03:21,220 --> 00:03:25,620 من خلال كتابة أسماء الأعمدة ترسيم كل عمود بفاصلة. 53 00:03:25,620 --> 00:03:28,620 على سبيل المثال، دعونا استرداد فقط CakeId وCakeType في الجدول cupcake_cupboard. 54 00:03:28,620 --> 00:03:38,370 بناء الجملة للقيام بذلك هي: SELECT فاصلة CakeID الفضاء 55 00:03:38,370 --> 00:03:44,370 CakeType الفضاء من cupcake_cupboard لدينا، الجدول. 56 00:03:44,370 --> 00:03:46,370 دعونا نمضي قدما وتنفيذ هذا. 57 00:03:49,340 --> 00:03:52,670 وهنا، ونحن الآن لا تملك إلا العمودين حددنا 58 00:03:52,670 --> 00:03:54,670 لكل كب كيك في خزانة لدينا. 59 00:03:54,670 --> 00:03:57,710 يمكننا أيضا تحسين نتائجنا الاستعلام عن طريق تحديد 60 00:03:57,710 --> 00:04:00,910 و"أين" شرط بعد اسم الجدول. 61 00:04:02,000 --> 00:04:05,410 على سبيل المثال، يبدو أن هناك لدينا كب كيك في خزانة 62 00:04:05,410 --> 00:04:08,660 وهذا هو، أيضا، ليس لطيفا يبحث. 63 00:04:08,660 --> 00:04:13,950 دعونا معرفة كل الكعك في خزانة في أن يتم، أيضا، ليس لطيفا يبحث 64 00:04:13,950 --> 00:04:16,110 باستخدام "أين" شرط. 65 00:04:16,110 --> 00:04:26,390 بناء الجملة للقيام بذلك هي: SELECT * مساحة الفضاء من الفضاء cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 الفضاء حيث لدينا مساحة العمود الشرطي، في هذه الحالة = CakeIsNice، 67 00:04:34,080 --> 00:04:36,900 وقيمة منطقية من False. 68 00:04:36,900 --> 00:04:42,750 من المهم أن نلاحظ أنه إذا كنت تستخدم السلاسل، يجب عليك احتوائه تهمك واحد. 69 00:04:42,750 --> 00:04:49,620 هذا صحيح بالنسبة لجميع السلاسل في SQL، أو قاعدة بيانات SQL من حيث الأحرف البديل، 70 00:04:49,620 --> 00:04:51,620 المعروفة باسم نوع البيانات VARCHAR. 71 00:04:51,620 --> 00:04:57,660 في هذه الحالة، نحن نستخدم صواب أم خطأ، والذي هو قيمة منطقية وليس سلسلة. 72 00:04:59,120 --> 00:05:00,660 دعونا نمضي قدما وتنفيذ هذا الأمر. 73 00:05:00,660 --> 00:05:05,340 >> وها، كانت الحالة التي لدينا 1 الشوكولاته 74 00:05:05,340 --> 00:05:07,920 ليس لطيفا كب كيك في خزانة لدينا. 75 00:05:09,620 --> 00:05:11,460 المقبل، ونحن في طريقنا لكتابة عبارة INSERT. 76 00:05:11,460 --> 00:05:15,560 وتستخدم عبارات INSERT لإدراج أو إضافة 77 00:05:15,560 --> 00:05:17,770 إضافية صفوف البيانات في جدول قاعدة البيانات. 78 00:05:17,770 --> 00:05:23,160 إعادة النظر في السيناريو لدينا، دعونا نفترض أن لدينا للتو كب كيك العلامة التجارية الجديدة. 79 00:05:25,910 --> 00:05:30,080 منذ تنظم جدا ونحن أكلة كب كيك، ونحن ستكون لدينا لإدراج هذه كب كيك جديدة 80 00:05:30,080 --> 00:05:32,330 في الجدول cupcake_cupboard لدينا. 81 00:05:32,330 --> 00:05:40,690 بناء الجملة للقيام بذلك هو هذا: إدراج الفضاء إلى الفضاء جدول أعمالنا، 82 00:05:40,690 --> 00:05:46,830 cupcake_cupboard، والفضاء (، 83 00:05:46,830 --> 00:05:51,060 ونحن هنا تحديد أسماء الأعمدة، محدد بفاصلة، 84 00:05:51,060 --> 00:05:59,790 CakeType فاصلة فاصلة CakeColor CakeIsNice) الفضائية. 85 00:05:59,790 --> 00:06:06,540 وفي أعقاب ذلك، نكتب المساحة VALUES كلمة (، وهنا 86 00:06:06,540 --> 00:06:12,170 نحن ندخل قيمة كل عمود على التوالي، كما محدد بفاصلة. 87 00:06:12,170 --> 00:06:17,830 اقتباس واحد، لأنها كلها قيم VARCHAR سنقوم تحيط بهم تهمك واحد، 88 00:06:17,830 --> 00:06:26,780 "فاصلة" زبدة الفول السوداني بني فاتح 'فاصلة صحيح. 89 00:06:26,780 --> 00:06:30,480 الآن، فإنه من المهم لإعطاء كل صف رقم فريد لتعريف نفسه. 90 00:06:30,480 --> 00:06:33,660 Autoincrementing عمود يوفر هذا النحو 91 00:06:33,660 --> 00:06:37,410  "لا يمكن لاثنين من أي وقت مضى وجود معرفات نفس في هذا الجدول." 92 00:06:37,410 --> 00:06:39,480 دعونا نمضي قدما وتنفيذ. 93 00:06:39,480 --> 00:06:45,380 هناك نذهب، كل المنظمة. 94 00:06:49,720 --> 00:06:52,100 >> البيان SQL التالية التي سنقوم كتابة عبارة التحديث. 95 00:06:52,100 --> 00:06:55,650 يمكن استخدام عبارة UPDATE لتعديل البيانات داخل العمود 96 00:06:55,650 --> 00:06:58,440 لأي صف في الجدول القائمة قاعدة البيانات الخاصة بك. 97 00:06:59,670 --> 00:07:03,420 في وقت سابق من السيناريو لدينا، وذلك باستخدام عبارة SELECT، حددنا كب كيك 98 00:07:03,420 --> 00:07:08,300 ضمن الجدول cupcake_cupboard لدينا كان الذي CakeIsNice قيمة خطأ. 99 00:07:08,300 --> 00:07:12,050 دعونا نفترض أن لدينا في حين كب كيك زبدة الفول السوداني كان في الفرن، 100 00:07:12,050 --> 00:07:15,790 التي قطعناها على أنفسنا كب كيك لدينا ليست بهذه طيفة لطيفة جدا. 101 00:07:18,020 --> 00:07:22,240 يجري ذلك بشكل استثنائي تنظيم، ونحن نريد لدينا كب كيك لتعكس هذه القيمة 102 00:07:22,240 --> 00:07:24,240 في الجدول cupcake_cupboard لدينا. 103 00:07:24,240 --> 00:07:28,710 لذا، دعونا تحديث كب كيك الشوكولاته لدينا في قاعدة البيانات لتعكس هذا. 104 00:07:28,710 --> 00:07:39,720 بناء الجملة: UPDATE الفضاء جدول أعمالنا، cupcake_cupboard، والفضاء الفضاء SET 105 00:07:39,720 --> 00:07:44,240 العمود الذي نود أن تتغير، CakeIsNice =. 106 00:07:44,240 --> 00:07:49,210 ثم هنا نضع مجالنا قيمة جديدة حقيقية. 107 00:07:49,210 --> 00:07:54,290 الآن، لأننا لا نريد لتحديث كافة الصفوف مع هذه القيمة، 108 00:07:54,290 --> 00:07:57,400 نريد لتوفير "أين" شرط أن تحديد لنا 109 00:07:57,400 --> 00:07:59,830 إلى الصف الدقيقة التي نريد تعديلها. 110 00:07:59,830 --> 00:08:03,690 في هذه الحالة، ونحن نعلم أن هناك واحد فقط كب كيك 111 00:08:03,690 --> 00:08:06,670 الذي يحتوي على قيمة CakeIsNice من خطأ. 112 00:08:06,670 --> 00:08:11,030 وعلاوة على ذلك، سوف نضمن أيضا أننا نقوم بتحديث الصف الصحيح 113 00:08:11,030 --> 00:08:13,030 باستخدام "و" شرط. 114 00:08:14,340 --> 00:08:17,270 نستخدم "و" شرط لتحسين الاستعلام لدينا مزيد. 115 00:08:17,270 --> 00:08:20,380 في هذه الحالة، لأننا نعلم أن cupcake غير الشوكولاته، 116 00:08:20,380 --> 00:08:23,160 سوف نستخدم هذا العمود CakeType. 117 00:08:23,160 --> 00:08:31,500 WHERE فضائنا الفضاء العمود الشرطي CakeIsNice الفضاء = خطأ، 118 00:08:31,500 --> 00:08:38,330 والفضاء CakeType = 'CHOCOLATE ". 119 00:08:38,330 --> 00:08:41,880 لذلك، ووضع كل ذلك معا، يقول هذا البيان التحديث 120 00:08:41,880 --> 00:08:44,670 العثور على كل الكعك في خزانة لدينا كب كيك، 121 00:08:44,670 --> 00:08:50,520 وإذا كان هناك كب كيك الذي يحتوي على عمود CakeIsNice قيمة خطأ 122 00:08:50,520 --> 00:08:54,130 وCakeType يحتوي على قيمة CHOCOLATE، 123 00:08:54,130 --> 00:08:58,240 نحن نريد لتحديث CakeIsNice صفوف محددة القيمة إلى True. 124 00:08:58,240 --> 00:09:01,140 لذلك، دعونا نمضي قدما وتنفيذ العبارة. 125 00:09:03,860 --> 00:09:05,860 والآن، نحن نظمنا. 126 00:09:06,650 --> 00:09:09,220 >> أنجز كل هذا الكلام من الكعك لي قليلا من الجوع. 127 00:09:09,220 --> 00:09:11,360 أعتقد أنني يجب أن أساعد نفسي إلى واحد. 128 00:09:11,360 --> 00:09:17,670 ولكن إذا كنت فعلا أكل هذا كب كيك، وأرجو على الأقل أيضا إزالة وجودها 129 00:09:17,670 --> 00:09:19,670  من الجدول cupcake_cupboard لدينا. 130 00:09:20,650 --> 00:09:22,590 للقيام بذلك، سوف نستخدم "حذف" بيان. 131 00:09:22,590 --> 00:09:27,400 يمكن استخدام "حذف" بيان لإزالة كافة أو بعض الصفوف من الجدول. 132 00:09:27,400 --> 00:09:29,920 إذا كنت ترغب في إزالة بعض صف محدد من الجدول، 133 00:09:29,920 --> 00:09:34,360 ثم يجب توفير "أين" شرط، وبالتالي تحديد عمود 134 00:09:34,360 --> 00:09:37,660 يجب أن تكون فريدة من نوعها إلى الصف الذي ترغب في إزالته. 135 00:09:37,660 --> 00:09:47,370 هذا هو بناء الجملة: حذف مساحة من الفضاء لدينا الجدول، cupcake_cupboard، والفضاء. 136 00:09:47,370 --> 00:09:51,760 الآن، في هذه المرحلة، كلما كنت إلى هذا الحد في بيانكم حذف 137 00:09:51,760 --> 00:09:54,240 كنت تريد أن تكون حذرة للغاية. 138 00:09:54,240 --> 00:09:59,970 على سبيل المثال، إذا كنت ترغب في تشغيل هذا الاستعلام كما هو دون تقديم بعض "أين" شرط 139 00:09:59,970 --> 00:10:04,500 وأود أن تفقد كل البيانات في هذا الجدول cupcake_cupboard، 140 00:10:04,500 --> 00:10:09,590 ولكن لأنني أعرف مسبقا أن معرفات كعكة بلدي هي فريدة من نوعها، سوف تستخدم 141 00:10:09,590 --> 00:10:12,410 الكعكة المخملية الحمراء ID لبلدي شرط "أين". 142 00:10:14,550 --> 00:10:20,670 WHERE فضائنا العمود، CakeID = 1. 143 00:10:20,670 --> 00:10:25,010 لأن هذا هو قيمة عددية ليست هناك حاجة لتحيط بها تهمك واحد. 144 00:10:25,010 --> 00:10:27,020 لذلك، دعونا تنفيذ العبارة. 145 00:10:33,560 --> 00:10:35,990 حسنا، الآن بعد أن قمت محو نحن وجود هذا كب كيك 146 00:10:35,990 --> 00:10:40,360 من الجدول cupcake_cupboard، لدينا شيء واحد فقط من الزمن: 147 00:10:41,680 --> 00:10:43,680 جعلها تختفي. 148 00:10:43,680 --> 00:10:46,990 أنا كريستوفر بارثولوميو. هذا هو CS50.