[Powered by Google Translate] [SQL] [CHRISTOPHER BARTHOLOMEW] [ჰარვარდის უნივერსიტეტის] [ეს არის CS50] [CS50 TV] ასე რომ, პროგრამისტების გამოიყენოს მონაცემთა ბაზების, როგორც ინსტრუმენტი შესანახად და ორგანიზება ჩვენი დაჟინებული მონაცემები ფარგლებში მაგიდები. ეს ნიშნავს, რომ თქვენი ინფორმაცია ინახება არასამთავრობო არასტაბილურ medians როგორიცაა მყარი დისკის, და მაშინაც კი, როდესაც კომპიუტერი არის გამორთული, მონაცემები ჯერ კიდევ ხელუხლებლად. და, როგორც პროგრამისტები, ჩვენი პროგრამების გამოყენებას მონაცემთა ბაზების სცენარი, როგორიცაა შენახვა მომხმარებლის ინფორმაციის ვებ ფორმებს, ეძებს up ინვენტარი, ან განახლებაზე ინფორმაციას რა საიტებზე არიან. მაგრამ როგორ უნდა რეალურად ურთიერთქმედება ჩვენს ბაზაში, ან რას ვიყენებთ წაკითხვის, შენახვის, წაშლის, განახლება და ჩვენი მონაცემებით ფარგლებში ამ მონაცემთა ბაზაში ცხრილების? ისე, პასუხი არის, რომ ჩვენ ვიყენებთ სპეციალური ტიპის მონაცემთა ბაზის ენა რომელიც ურთიერთქმედებს უშუალოდ ჩვენს ბაზაში ცხრილების. მისი სახელი არის სტრუქტურირებული შეკითხვის ენა, [სტრუქტურირებული შეკითხვის ენა] ან რა ეხება როგორც SQL. ახლა, [SE-QueL], ან SQL, რომელიც არ არის პროგრამირების ენა, მაგრამ ამის ნაცვლად, ის ენა, რომელიც უზრუნველყოფს სტანდარტული კომპლექტი ბრძანებები ვიღებ და მანიპულირების მონაცემები სხვადასხვა მონაცემთა ბაზების მართვის სისტემების. მიზნით CS50, ჩვენ წავიდეთ მეტი ოთხი ძირითადი ბრძანებები: აირჩიეთ, ჩადეთ, განახლება და წაშლა. გარდა ამისა, ჩვენ გამოიყენოს მონაცემთა ბაზის ვებ ინტერფეისის მოუწოდა phpMyAdmin, რომელიც დამონტაჟებული ელექტრო მოწყობილობების დაწერა ჩვენი SQL განცხადებები. ასე რომ, რათა დაეხმაროს გახსოვთ ეს ბრძანებები, მე მოიტანა cupcakes in კარადა დაეხმაროს ჩვენს სცენარებს. Say გაქვთ cupcake მონაცემთა ბაზა, სადაც თქვენ შეინახოთ ინფორმაცია თქვენი cupcakes. ახლა, მონაცემთა ბაზა შეიძლება შეიცავდეს ბევრი მაგიდები და მაგიდები თავად შეიძლება შეიცავდეს ბევრ სვეტით. Inside ჩვენი cupcake მონაცემთა ბაზა, გვაქვს მაგიდა მოუწოდა cupcake_cupboard. ეს მაგიდა იქნება გამოყენებული შესანახად ყველა ინფორმაციას cupcakes , რომლებიც, ასევე, თქვენს კარადა. სვეტების, რომლებიც შიგნით თქვენს მაგიდასთან წარმოადგენენ ატრიბუტები cupcake. მაგალითად, cupcake_cupboard მისი სვეტების Cake ID, CakeType, CakeColor და CakeIsNice. ეს ლოგიკური-აკრეფილი სვეტი გასაზღვრავს თუ ტორტი არის ლამაზი თუ არა ლამაზი. ჩვენ ვაპირებთ დავიწყოთ წერა არჩევა განცხადებაში. აირჩიეთ განცხადებებს გამოიყენება ვიღებ მონაცემები კერძოდ მონაცემთა ბაზის ცხრილს. ამ სცენარით, ჩვენ გვინდა ვიცოდეთ ყველაფერი ყველა cupcakes, რომ არსებობს ჩვენი კარადა. სინტაქსი უნდა გააკეთოს ეს "ამოირჩიეთ" სივრცეში ვარსკვლავი, ან *, სივრცეში სივრცეში ჩვენი მაგიდა, რაც cupcake_cupboard. მოდით წავიდეთ წინ და შეასრულოს რომ. როგორც ვხედავთ, ეს არის ყველა cupcakes ჩვენს კარადა. მნიშვნელოვანია აღინიშნოს, რომ *, ან ვარსკვლავი, არის ველური განყოფილებიდან ხასიათი რომ ნიშნავს შეკრებას ყველა სვეტის ზოგიერთი მაგიდასთან. ჩვეულებრივ, ჩვენ შეუძლიათ კონკრეტული სვეტი ან სვეტების მიერ შეცვალა * ერთად ფაქტობრივი column. თუ გვინდა მრავალი სვეტის, მაგრამ არა ყველა, მივაღწიოთ ამ წერილობით მწკრივები გამიჯნონ თითოეული სვეტის მიერ მძიმით. მაგალითად, მოდით მხოლოდ ვიღებ CakeId და CakeType წელს cupcake_cupboard მაგიდასთან. სინტაქსი ამის გაკეთება არის: აირჩიეთ სივრცეში CakeID მძიმით CakeType სივრცეში ჩვენი მაგიდა, cupcake_cupboard. მოდით წავიდეთ წინ და შეასრულოს ამ. და აქ, ჩვენ ახლა მხოლოდ ორ ბურჯს ჩვენ მითითებული თითოეული cupcake ჩვენს კარადა. ჩვენ შეგვიძლია ასევე დახვეწა ჩვენი ხერხისთვის შედეგების განსაზღვრით "სად" პუნქტი მხოლოდ მას შემდეგ, რაც მაგიდასთან სახელი. მაგალითად, იქ, როგორც ჩანს, cupcake ჩვენს კარადა რომ არის, კარგად, არც ისე ლამაზი ეძებს. მოდით გაერკვნენ ყველა cupcakes ჩვენს კარადა, რომლებიც, ასევე, არც ისე ლამაზი ეძებს გამოყენებით "სად" სტატიაზე. სინტაქსი ამის გაკეთება არის: აირჩიეთ სივრცეში * ფართობი სივრცეში cupcake_cupboard სივრცე, სადაც სივრცეში ჩვენი პირობითი სვეტი, ამ შემთხვევაში CakeIsNice =, და ლოგიკური ღირებულების ყალბი. მნიშვნელოვანია აღინიშნოს, რომ, თუ თქვენ იყენებთ სიმები, თქვენ უნდა დაურთოს მას ერთ შეთავაზებები. ეს არის ნამდვილი ყველა სიმებისათვის SQL, ან, SQL მონაცემთა ბაზის თვალსაზრისით, ვარიანტი გმირები ცნობილია როგორც varchar თემები. ამ შემთხვევაში, ჩვენ გამოყენებით True ან ყალბი, რომელიც ლოგიკური მნიშვნელობა და არ სიმებიანი. მოდით წავიდეთ წინ და შეასრულოს ბრძანება. Lo და აჰა, ეს არის საქმე, რომ ჩვენ გვყავს 1 შოკოლადის არც ისე ლამაზი cupcake ჩვენს კარადა. შემდეგი, ჩვენ ვაპირებთ დავწეროთ ჩასმა განცხადებაში. Insert განცხადებები გამოიყენება ჩადეთ ან დაამატოთ დამატებითი რიგები მონაცემები თქვენს მონაცემთა ბაზაში მაგიდასთან. Revisiting ჩვენი სცენარი, მოდით ვივარაუდოთ, რომ ჩვენ უბრალოდ გააკეთა ახალი cupcake. მას შემდეგ, რაც ჩვენ ძალიან ორგანიზებული cupcake ქერქიჭამიების, ჩვენ ვაპირებთ აქვს ჩასასმელად ამ ახალი cupcake ჩვენს cupcake_cupboard მაგიდასთან. სინტაქსი ამის გაკეთება არის ამ: ჩადეთ სივრცეში კოსმოსში ჩვენი მაგიდა, cupcake_cupboard, ინტერვალი (, და აქ ჩვენ სვეტების სპეციფიკაცია, სახელები, delimited მიერ მძიმე, CakeType მძიმით CakeColor მძიმით CakeIsNice) ფართი. შემდეგ, ჩვენ წერენ სიტყვა ფასეულობები ინტერვალი (, და აქ შევდივართ ღირებულება თითოეული სვეტის შესაბამისად, ასევე delimited მიერ მძიმით. უცოლო ციტირებით, რადგან ისინი ყველა varchar ღირებულებები ჩვენ გარს მათ ერთ შეთავაზებები, არაქისის კარაქი "მძიმით" მუქი "მძიმით True. ახლა მნიშვნელოვანია მისცეს თითოეული მწკრივი უნიკალური ნომრის იდენტიფიცირება თავად. Autoincrementing სვეტი უზრუნველყოფს ამ  "არა ორი იგივე პირადობის მოწმობა შეიძლება ოდესმე არსებობს ამ მაგიდასთან." მოდით წავიდეთ წინ და შეასრულოს. იქ ჩვენ წავიდეთ, ყველა ორგანიზებული. შემდეგი SQL განაცხადი, რომ ჩვენ წერენ არის update განცხადებაში. Update განაცხადი შეიძლება გამოყენებულ იქნას ცვლილებები მონაცემები ფარგლებში სვეტი ნებისმიერი არსებული row თქვენს მონაცემთა ბაზაში მაგიდასთან. მანამდე ჩვენი სცენარი გამოყენებით არჩევა განაცხადი, ჩვენ გამოვლენილი cupcake ფარგლებში ჩვენი cupcake_cupboard ს მაგიდასთან რომლის CakeIsNice ღირებულება იყო ყალბი. მოდით ვივარაუდოთ, რომ სანამ ჩვენი არაქისის კარაქი cupcake იყო ღუმელი, ჩვენ მივიღეთ ჩვენი არცთუ ლამაზი cupcake ძალიან ლამაზი. მიმდინარეობს ისე უაღრესად ორგანიზებული, ჩვენ გვინდა ჩვენი cupcake ასახავს ამ მნიშვნელობის ჩვენს cupcake_cupboard მაგიდასთან. ამიტომ, მოდით, განაახლოს ჩვენი შოკოლადის cupcake ბაზაში ასახავს ამ. სინტაქსი არის: UPDATE სივრცეში ჩვენი მაგიდა, cupcake_cupboard, სივრცეში SET სივრცეში სვეტი, რომ ჩვენ გვინდა, რომ შეიცვალოს, CakeIsNice =. მაშინ აქ ჩვენ განათავსოთ ჩვენი ახალი მნიშვნელობის True სივრცეში. ახლა, როდესაც ჩვენ არ გვინდა, რომ განაახლოს ყველა რიგები ამ ღირებულება, ჩვენ გვინდა, რომ უზრუნველყოს "სად" პუნქტი, რომელიც pinpoint us ზუსტ row რომ ჩვენ გვინდა ცვლილებები. ამ შემთხვევაში, ჩვენ ვიცით, რომ არსებობს მხოლოდ ერთი cupcake რომ აქვს CakeIsNice ღირებულების ყალბი. გარდა ამისა, ჩვენ ასევე უზრუნველყოფს, რომ ჩვენ განახლებაზე სწორი row გამოყენებით "და" სტატიაზე. ჩვენ ვიყენებთ "და" პუნქტი გაუმჯობესების ჩვენი ხერხისთვის შემდგომი. ამ შემთხვევაში, რადგან ჩვენ ვიცით, რომ cupcake შოკოლადი, ჩვენ გამოვიყენებთ ამ CakeType სვეტი. WHERE სივრცეში ჩვენი პირობითი სვეტი სივრცეში CakeIsNice სივრცეში = ყალბი, და სივრცეში CakeType = 'შოკოლადი.' ასე რომ, აყენებს მას ყველა ერთად, ამ განახლება ნათქვამია განცხადებაში ყველა cupcakes ჩვენს cupcake კარადა, და თუ არის cupcake რომლის სვეტი CakeIsNice შეიცავს ღირებულების ყალბი და CakeType შეიცავს ღირებულების შოკოლადი, ჩვენ გვინდა განაახლოთ კონკრეტული რიგები CakeIsNice ღირებულება ჭეშმარიტი. ასე რომ, მოდით, წავიდეთ წინ და შეასრულოს განცხადებაში. და ახლა, ჩვენ ორგანიზებული. ყველა ამ საუბარი cupcakes გააკეთა ჩემთვის ცოტა მშიერი. ვფიქრობ, უნდა დავეხმაროთ თავს ერთ. მაგრამ თუ მე რეალურად ჭამა ამ cupcake, მე მაინც უნდა ასევე ამოიღონ თავისი არსებობის  ჩვენი cupcake_cupboard მაგიდასთან. ამისთვის, ჩვენ გამოვიყენებთ "წაშლა" განცხადებაში. "წაშლა" განაცხადი შეიძლება გამოყენებულ იქნას ამოიღონ ყველა ან რამოდენიმე რიგები ტოვებს მაგიდას. თუ გსურთ ამოიღონ ზოგიერთი კონკრეტული row საწყისი მაგიდა, მაშინ თქვენ უნდა უზრუნველყოს "სად" პუნქტი, რითაც მიუთითებს სვეტი რომ უნდა იყოს უნიკალური row რომ გსურთ ამოიღონ. ეს არის სინტაქსი: წაშლის სივრცეში სივრცეში ჩვენი მაგიდა, cupcake_cupboard, სივრცეში. ახლა, ამ ეტაპზე, როდესაც თქვენ ამ შორს თქვენს წაშლა განაცხადი გსურთ იყოს ძალიან ფრთხილად. მაგალითად, თუ მინდა აწარმოებს ამ შეკითხვის როგორც არის გარეშე მიწოდების ზოგიერთი "სად" პუნქტით მინდა დაკარგავთ ყველა მონაცემი cupcake_cupboard მაგიდა, არამედ იმიტომ, რომ მე უკვე ვიცი, რომ ჩემი ტორტი პირადობის მოწმობები არის უნიკალური, მე გამოყენება Red Velvet ტორტი ID შეეხება ჩემს "სად" სტატიაზე. WHERE სივრცეში ჩვენი სვეტი, CakeID = 1. იმიტომ, რომ ეს არის მთელი რიცხვი ღირებულება არ არის საჭირო, რათა გარს მას ერთ შეთავაზებები. ასე რომ, მოდით, შეასრულოს განცხადებაში. ისე, ახლა რომ ჩვენ წაშლილია არსებობა ამ cupcake ჩვენი cupcake_cupboard მაგიდასთან, ჩვენ მხოლოდ ერთი რამ მარცხენა: ჩადება ის გაქრება. მე კრისტოფერ ბართლომე. ეს არის CS50.