1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [SQL] 2 00:00:02,000 --> 00:00:04,000 [CHRISTOPHER BARTHOLOMEW] [ჰარვარდის უნივერსიტეტის] 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 ეს ნიშნავს, რომ თქვენი ინფორმაცია ინახება არასამთავრობო არასტაბილურ medians როგორიცაა მყარი დისკის, 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 მომხმარებლის ინფორმაციის ვებ ფორმებს, ეძებს up ინვენტარი, 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 >> ახლა, [SE-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 გარდა ამისა, ჩვენ გამოიყენოს მონაცემთა ბაზის ვებ ინტერფეისის მოუწოდა phpMyAdmin, 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 მე მოიტანა cupcakes in კარადა დაეხმაროს ჩვენს სცენარებს. 28 00:01:39,650 --> 00:01:42,210 Say გაქვთ cupcake მონაცემთა ბაზა, 29 00:01:42,210 --> 00:01:44,490 სადაც თქვენ შეინახოთ ინფორმაცია თქვენი cupcakes. 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 Inside ჩვენი cupcake მონაცემთა ბაზა, გვაქვს მაგიდა მოუწოდა cupcake_cupboard. 33 00:01:57,020 --> 00:02:00,500 ეს მაგიდა იქნება გამოყენებული შესანახად ყველა ინფორმაციას cupcakes 34 00:02:00,500 --> 00:02:02,990 , რომლებიც, ასევე, თქვენს კარადა. 35 00:02:02,990 --> 00:02:07,770 სვეტების, რომლებიც შიგნით თქვენს მაგიდასთან წარმოადგენენ ატრიბუტები cupcake. 36 00:02:07,770 --> 00:02:14,560 მაგალითად, cupcake_cupboard მისი სვეტების 37 00:02:14,560 --> 00:02:15,920 Cake ID, CakeType, CakeColor და CakeIsNice. 38 00:02:15,920 --> 00:02:23,040 ეს ლოგიკური-აკრეფილი სვეტი გასაზღვრავს თუ ტორტი არის ლამაზი თუ არა ლამაზი. 39 00:02:23,040 --> 00:02:26,560 ჩვენ ვაპირებთ დავიწყოთ წერა არჩევა განცხადებაში. 40 00:02:26,560 --> 00:02:32,160 აირჩიეთ განცხადებებს გამოიყენება ვიღებ მონაცემები კერძოდ მონაცემთა ბაზის ცხრილს. 41 00:02:32,160 --> 00:02:34,890 ამ სცენარით, ჩვენ გვინდა ვიცოდეთ ყველაფერი 42 00:02:34,890 --> 00:02:39,080 ყველა cupcakes, რომ არსებობს ჩვენი კარადა. 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 >> როგორც ვხედავთ, ეს არის ყველა cupcakes ჩვენს კარადა. 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 მიერ შეცვალა * ერთად ფაქტობრივი column. 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 სინტაქსი ამის გაკეთება არის: აირჩიეთ სივრცეში 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 თითოეული cupcake ჩვენს კარადა. 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 მაგალითად, იქ, როგორც ჩანს, cupcake ჩვენს კარადა 62 00:04:05,410 --> 00:04:08,660 რომ არის, კარგად, არც ისე ლამაზი ეძებს. 63 00:04:08,660 --> 00:04:13,950 მოდით გაერკვნენ ყველა cupcakes ჩვენს კარადა, რომლებიც, ასევე, არც ისე ლამაზი ეძებს 64 00:04:13,950 --> 00:04:16,110 გამოყენებით "სად" სტატიაზე. 65 00:04:16,110 --> 00:04:26,390 სინტაქსი ამის გაკეთება არის: აირჩიეთ სივრცეში * ფართობი სივრცეში cupcake_cupboard 66 00:04:26,390 --> 00:04:34,080 სივრცე, სადაც სივრცეში ჩვენი პირობითი სვეტი, ამ შემთხვევაში CakeIsNice =, 67 00:04:34,080 --> 00:04:36,900 და ლოგიკური ღირებულების ყალბი. 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 ამ შემთხვევაში, ჩვენ გამოყენებით True ან ყალბი, რომელიც ლოგიკური მნიშვნელობა და არ სიმებიანი. 72 00:04:59,120 --> 00:05:00,660 მოდით წავიდეთ წინ და შეასრულოს ბრძანება. 73 00:05:00,660 --> 00:05:05,340 >> Lo და აჰა, ეს არის საქმე, რომ ჩვენ გვყავს 1 შოკოლადის 74 00:05:05,340 --> 00:05:07,920 არც ისე ლამაზი cupcake ჩვენს კარადა. 75 00:05:09,620 --> 00:05:11,460 შემდეგი, ჩვენ ვაპირებთ დავწეროთ ჩასმა განცხადებაში. 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 Revisiting ჩვენი სცენარი, მოდით ვივარაუდოთ, რომ ჩვენ უბრალოდ გააკეთა ახალი cupcake. 79 00:05:25,910 --> 00:05:30,080 მას შემდეგ, რაც ჩვენ ძალიან ორგანიზებული cupcake ქერქიჭამიების, ჩვენ ვაპირებთ აქვს ჩასასმელად ამ ახალი cupcake 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 და აქ ჩვენ სვეტების სპეციფიკაცია, სახელები, delimited მიერ მძიმე, 84 00:05:51,060 --> 00:05:59,790 CakeType მძიმით CakeColor მძიმით CakeIsNice) ფართი. 85 00:05:59,790 --> 00:06:06,540 შემდეგ, ჩვენ წერენ სიტყვა ფასეულობები ინტერვალი (, და აქ 86 00:06:06,540 --> 00:06:12,170 შევდივართ ღირებულება თითოეული სვეტის შესაბამისად, ასევე delimited მიერ მძიმით. 87 00:06:12,170 --> 00:06:17,830 უცოლო ციტირებით, რადგან ისინი ყველა varchar ღირებულებები ჩვენ გარს მათ ერთ შეთავაზებები, 88 00:06:17,830 --> 00:06:26,780 არაქისის კარაქი "მძიმით" მუქი "მძიმით True. 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 განაცხადი, რომ ჩვენ წერენ არის update განცხადებაში. 95 00:06:52,100 --> 00:06:55,650 Update განაცხადი შეიძლება გამოყენებულ იქნას ცვლილებები მონაცემები ფარგლებში სვეტი 96 00:06:55,650 --> 00:06:58,440 ნებისმიერი არსებული row თქვენს მონაცემთა ბაზაში მაგიდასთან. 97 00:06:59,670 --> 00:07:03,420 მანამდე ჩვენი სცენარი გამოყენებით არჩევა განაცხადი, ჩვენ გამოვლენილი cupcake 98 00:07:03,420 --> 00:07:08,300 ფარგლებში ჩვენი cupcake_cupboard ს მაგიდასთან რომლის CakeIsNice ღირებულება იყო ყალბი. 99 00:07:08,300 --> 00:07:12,050 მოდით ვივარაუდოთ, რომ სანამ ჩვენი არაქისის კარაქი cupcake იყო ღუმელი, 100 00:07:12,050 --> 00:07:15,790 ჩვენ მივიღეთ ჩვენი არცთუ ლამაზი cupcake ძალიან ლამაზი. 101 00:07:18,020 --> 00:07:22,240 მიმდინარეობს ისე უაღრესად ორგანიზებული, ჩვენ გვინდა ჩვენი cupcake ასახავს ამ მნიშვნელობის 102 00:07:22,240 --> 00:07:24,240 ჩვენს cupcake_cupboard მაგიდასთან. 103 00:07:24,240 --> 00:07:28,710 ამიტომ, მოდით, განაახლოს ჩვენი შოკოლადის cupcake ბაზაში ასახავს ამ. 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 მაშინ აქ ჩვენ განათავსოთ ჩვენი ახალი მნიშვნელობის True სივრცეში. 107 00:07:49,210 --> 00:07:54,290 ახლა, როდესაც ჩვენ არ გვინდა, რომ განაახლოს ყველა რიგები ამ ღირებულება, 108 00:07:54,290 --> 00:07:57,400 ჩვენ გვინდა, რომ უზრუნველყოს "სად" პუნქტი, რომელიც pinpoint us 109 00:07:57,400 --> 00:07:59,830 ზუსტ row რომ ჩვენ გვინდა ცვლილებები. 110 00:07:59,830 --> 00:08:03,690 ამ შემთხვევაში, ჩვენ ვიცით, რომ არსებობს მხოლოდ ერთი cupcake 111 00:08:03,690 --> 00:08:06,670 რომ აქვს CakeIsNice ღირებულების ყალბი. 112 00:08:06,670 --> 00:08:11,030 გარდა ამისა, ჩვენ ასევე უზრუნველყოფს, რომ ჩვენ განახლებაზე სწორი row 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 = 'შოკოლადი.' 119 00:08:38,330 --> 00:08:41,880 ასე რომ, აყენებს მას ყველა ერთად, ამ განახლება ნათქვამია განცხადებაში 120 00:08:41,880 --> 00:08:44,670 ყველა cupcakes ჩვენს cupcake კარადა, 121 00:08:44,670 --> 00:08:50,520 და თუ არის cupcake რომლის სვეტი CakeIsNice შეიცავს ღირებულების ყალბი 122 00:08:50,520 --> 00:08:54,130 და CakeType შეიცავს ღირებულების შოკოლადი, 123 00:08:54,130 --> 00:08:58,240 ჩვენ გვინდა განაახლოთ კონკრეტული რიგები CakeIsNice ღირებულება ჭეშმარიტი. 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 >> ყველა ამ საუბარი cupcakes გააკეთა ჩემთვის ცოტა მშიერი. 127 00:09:09,220 --> 00:09:11,360 ვფიქრობ, უნდა დავეხმაროთ თავს ერთ. 128 00:09:11,360 --> 00:09:17,670 მაგრამ თუ მე რეალურად ჭამა ამ cupcake, მე მაინც უნდა ასევე ამოიღონ თავისი არსებობის 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 თუ გსურთ ამოიღონ ზოგიერთი კონკრეტული row საწყისი მაგიდა, 133 00:09:29,920 --> 00:09:34,360 მაშინ თქვენ უნდა უზრუნველყოს "სად" პუნქტი, რითაც მიუთითებს სვეტი 134 00:09:34,360 --> 00:09:37,660 რომ უნდა იყოს უნიკალური row რომ გსურთ ამოიღონ. 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 Red Velvet ტორტი 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 ისე, ახლა რომ ჩვენ წაშლილია არსებობა ამ cupcake 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.