Კომპიუტერები, Ფაილის ტიპები
SQL მკაფიო: აღწერა, მაგალითები, თვისებები
ხშირად, როდესაც თქვენ გამოიყენოთ SQL ახლიდან მონაცემების მაგიდები, მომხმარებელი მიიღებს გადაჭარბებული მონაცემების არსებობა აბსოლუტურად იდენტური დუბლიკატი რიგები. თავიდან აცილების მიზნით, ამ სიტუაციაში, გამოიყენოთ SQL მკაფიო არგუმენტი სასჯელი არჩევა. ამ სტატიაში განვიხილავთ მაგალითები გამოყენების ეს არგუმენტი, ისევე როგორც სიტუაციაში, რომელიც განაცხადი უნდა მიტოვებული არგუმენტი.
სანამ გაგრძელება განიხილოს კონკრეტული მაგალითები, მონაცემთა ბაზის შექმნა საჭირო რამდენიმე მაგიდები.
მომზადება მაგიდა
წარმოიდგინეთ, რომ ჩვენ გვაქვს ბაზაში ინახავს ინფორმაციას ფონი წარმოდგენილია ორი მაგიდები. ეს მაგიდა oboi (ფონი) ერთად id სფეროებში (უნიკალური იდენტიფიკატორი), ტიპის (type ფონი -. ქაღალდის, ვინილის, და ა.შ.), ფერი (ფერი), struct (სტრუქტურა) და ფასი (ღირებულება). და მაგიდის Ostatki (ნარჩენები) ერთად id_oboi სფეროებში (მინიშნება უნიკალური იდენტიფიკატორი მაგიდასთან oboi) და რაოდენობა (რიცხვი რულონები გაყიდვაში).
შეავსეთ მონაცემები მაგიდასთან. In მაგიდაზე ფონი 9 ჩანაწერი:
oboi | ||||
id | ტიპი | ფერი | struct | ფასი |
1 | ქაღალდი | მრავალფერიანი | რელიეფური | 56.9 |
2 | ქაღალდის ორმაგი ფენიანი | beige | გლუვი | 114,8 |
3 | ვინილის | Orange | რელიეფური | 504 |
4 | Fleece | beige | რელიეფური | 1020,9 |
5 | ქაღალდის ორმაგი ფენიანი | beige | გლუვი | 150.6 |
6 | ქაღალდი | მრავალფერიანი | გლუვი | 95.4 |
7 | ვინილის | brown | გლუვი | 372 |
8 | Fleece | თეთრი | რელიეფური | 980,1 |
9 | ქსოვილი | ვარდისფერი | გლუვი | 1166,5 |
მაგიდასთან რჩება - ცხრა ჩანაწერები:
Ostatki | |
id_oboi | იმედი |
1 | 8 |
2 | 12 |
3 | 24 |
4 | 9 |
5 | 16 |
6 | 7 |
7 | 24 |
8 | 32 |
9 | 11 |
ვაგრძელებთ აღწერა მკაფიო წესრიგი SQL.
ადგილი მკაფიო აირჩიეთ პუნქტი
მკაფიო არგუმენტი უნდა განთავსდეს მაშინვე აირჩიეთ სიტყვით შეკითხვებს. მან მიმართა ყველა სვეტის განსაზღვრული სასჯელის აირჩიეთ, იმიტომ, რომ ის გაირიცხება საბოლოო შეკითხვაზე შედეგი აბსოლუტურად იდენტურია strings. ამდენად, ერთხელ არის საკმარისი დააკონკრეტა, როდესაც წერილობით SQL «აირჩიეთ მკაფიო» მოთხოვნით. გამონაკლისია გამოყენების მკაფიო შიგნით საერთო ფუნქციები რომ შევხედოთ ცოტა მოგვიანებით.
უნდა გვახსოვდეს, რომ ყველაზე მონაცემთა ბაზაში და არ აღიარებს თქვენი მოთხოვნის ტიპის:
SELECT მკაფიო Ostatki.Count, მკაფიო oboi *. FROM oboi INNER JOIN Ostatki ON Oboi.id = Ostatki.id_oboi |
არ იყო განხილული არგუმენტი რამდენჯერმე, ან კიდევ მითითებული, მაგრამ სანამ მეორე, მესამე ან სხვა შერჩეული სვეტი. თქვენ მიიღებთ შეცდომა გულისხმობდა შეცდომა სინტაქსი.
განაცხადის მკაფიო შეკითხვებს სტანდარტული
აშკარაა, რომ სათანადო შენობის სტრუქტურა მაგიდები და შევსების მათ ერთ მაგიდასთან გამორიცხული სიტუაცია, როცა აბსოლუტურად იდენტურია strings. აქედან გამომდინარე, შეკითხვის შესრულების «აირჩიეთ მკაფიო *» ნიმუში ერთ მაგიდასთან არაპრაქტიკულია.
წარმოიდგინეთ სიტუაცია, როდესაც ჩვენ უნდა იცოდეს, რა ტიპის ჩვენ ფონი, მხოლოდ მოხერხებულობის, დასალაგებლად ტიპი:
SELECT Oboi.type FROM oboi რათა ტიპის |
და მიიღეთ შედეგები:
ტიპი |
ქაღალდი |
ქაღალდი |
ქაღალდის ორმაგი ფენიანი |
ქაღალდის ორმაგი ფენიანი |
ვინილის |
ვინილის |
ქსოვილი |
Fleece |
Fleece |
როგორც ჩანს მაგიდაზე არსებობს ერთნაირი რიგები. თუ დავუმატებთ წინადადება აირჩიეთ მკაფიო:
SELECT მკაფიო Oboi.type FROM oboi რათა ტიპის |
მივიღებთ შედეგი გარეშე განმეორება:
ტიპი |
ქაღალდი |
ქაღალდის ორმაგი ფენიანი |
ვინილის |
ქსოვილი |
Fleece |
ასე რომ, თუ სწორად შეიყვანეთ მონაცემები მაგიდა, მაშინ დაუყოვნებლივ სატელეფონო ზარი ან თხოვნით მყიდველებს ჩვენ შეგვიძლია პასუხი, რომ თხევადი შპალერი, fiberglass და აკრილის ფონი ხელმისაწვდომია მაღაზიაში არ არიან. იმის გათვალისწინებით, რომ სპექტრი მაღაზიები, როგორც წესი, არ შემოიფარგლება ასი ფონი, სიის სანახავად არასამთავრობო უნიკალური სახის იქნება საკმაოდ შრომატევადია.
გამოყენების მკაფიო საერთო ფუნქციების
SQL მკაფიო არგუმენტი შეიძლება გამოყენებულ იქნას ნებისმიერი საერთო ფუნქცია. მაგრამ, მინ და მაქს მისი გამოყენების გავლენას არ მოახდენს, მაგრამ როდესაც საანგარიშო თანხა ან საშუალო ღირებულება იშვიათად სიტუაცია, სადაც არავინ უნდა გაითვალისწინოს გამეორებას.
დავუშვათ, რომ ჩვენ გვინდა შევამოწმოთ ტევადობის საწყობი და გაგზავნის ამ მოთხოვნით, computes საერთო რაოდენობის coils საწყობში:
SELECT თანხა (Ostatki.count) FROM Ostatki |
მოთხოვნა მისცემს პასუხს 143. თუმცა, თუ ჩვენ შეიცვლება:
SELECT თანხა (მკაფიო Ostatki.count) FROM Ostatki |
ვიღებთ სულ 119, როგორც ფონი ნაწილი ნომრები 3 და 7 საფონდო იმავე ოდენობით. თუმცა, აშკარაა, რომ პასუხი არასწორია.
ყველაზე ხშირად გამოიყენება SQL მკაფიო ფუნქცია Count. ასე რომ, ჩვენ შეგვიძლია ადვილად გაირკვეს, თუ რამდენი უნიკალური სახის ფონი, ჩვენ გვაქვს:
SELECT რაოდენობა (მკაფიო Oboi.type) FROM oboi |
და მიიღეთ შედეგად 5 - ჩვეულებრივი ქაღალდი და ორმაგი ფენის ვინილის და არასამთავრობო ნაქსოვი ქსოვილისაგან. რა თქმა უნდა, ყველა ჩანს რეკლამას, როგორიცაა: "მხოლოდ ჩვენ გვაქვს 20-ზე მეტი სხვადასხვა სახის ფონი," მიერ, რომელიც გულისხმობს, რომ ამ მაღაზიაში არ არის მხოლოდ რამდენიმე ათეული რულონები და სხვადასხვა სახის ფონი თანამედროვე ტიპის.
საინტერესოა, რომ იმავე შეკითხვაზე, თქვენ შეგიძლიათ მიუთითოთ მრავალი ფუნქციები, როგორიცაა Count ანიჭებენ მკაფიო, და მის გარეშე. ეს არის ერთადერთი სიტუაცია, სადაც მკაფიო Select'e შეიძლება იყოს წარმოდგენილი რამდენჯერმე.
როდესაც უარი თქვას გამოყენების არგუმენტი
გამოყენება SQL მკაფიო არგუმენტი უნდა იყოს მიტოვებული ერთ ორ შემთხვევაში:
- თქვენ შეასრულოს შერჩევა მაგიდები და დარწმუნებულნი ვართ, ამ უნიკალური ღირებულება თითოეული. ამ შემთხვევაში, გამოყენების არგუმენტი მიუღებელია, რადგან ეს არის დამატებით დატვირთვას სერვერზე, ან კლიენტს (დამოკიდებულია ტიპის DBMS).
- გეშინია დაკარგვის მონაცემები. მოდით ახსნას.
დავუშვათ, ბოსი მოგთხოვთ ჩამოვთვალოთ ფონი, რომ თქვენ გაქვთ, მითითებით მხოლოდ ორი სვეტი - ტიპის და ფერის. Out of ჩვევა, თქვენ არგუმენტი მკაფიო:
SELECT მკაფიო Oboi.type, Oboi.color FROM oboi ORDER BY Oboi.type |
და - დაკარგოს ზოგიერთი მონაცემები:
ტიპი | ფერი |
ქაღალდი | მრავალფერიანი |
ქაღალდის ორმაგი ფენიანი | beige |
ვინილის | brown |
ვინილის | Orange |
ქსოვილი | ვარდისფერი |
Fleece | beige |
Fleece | თეთრი |
ეს შეიძლება მისცეს შთაბეჭდილება, რომ ქაღალდის wallpaper (ჩვეულებრივი და ორმაგი ფენის) ჩვენ მხოლოდ ერთი გონება, ფაქტობრივად, თუნდაც ჩვენი პატარა მაგიდა ორი სტატია (შედეგად გარეშე მკაფიო):
ტიპი | ფერი |
ქაღალდი | მრავალფერიანი |
ქაღალდი | მრავალფერიანი |
ქაღალდის ორმაგი ფენიანი | beige |
ქაღალდის ორმაგი ფენიანი | beige |
ვინილის | brown |
ვინილის | Orange |
ქსოვილი | ვარდისფერი |
Fleece | თეთრი |
Fleece | beige |
ამიტომ, როგორც წერილობით ნებისმიერი მოთხოვნა არგუმენტი მკაფიო უნდა იყოს ფრთხილად და კომპეტენტური უნდა გადაწყვიტოს მისი გამოყენება, დამოკიდებულია ამოცანა.
ალტერნატიული მკაფიო
საპირისპიროდ არგუმენტი განსხვავებული - ყველა არგუმენტი. In მისი გამოყენების დუბლიკატი რიგები ინახება. მაგრამ, როგორც ნაგულისხმები ბაზაში და მიიჩნევს, რომ ეს არის აუცილებელი არაა ყველა ღირებულებებს, არგუმენტი ყველა - ეს არის საკმაოდ შესარჩევ ვიდრე ფაქტობრივი ფუნქცია არგუმენტი.
Similar articles
Trending Now