ე.ა. ბესონოვის წვდომა შეკითხვებზე SQL ენაზე. SQL მოთხოვნები sql-ის გამოყენება წვდომაში

SQL ენას არ აქვს სრულფასოვანი განვითარების ენის ფუნქციები, მაგრამ ორიენტირებულია მონაცემთა წვდომაზე, ამიტომ იგი შედის პროგრამის განვითარების ინსტრუმენტებში. ამ შემთხვევაში ე.წ ჩაშენებული SQL. SQL ენის სტანდარტს მხარს უჭერს შემდეგი პროგრამირების ენების თანამედროვე დანერგვები: PL/1, Ada, C, COBOL, Fortran, MUMPS და Pascal.

კლიენტ-სერვერის ტიპის აპლიკაციების განვითარების სპეციალიზებულ სისტემებში, პროგრამირების გარემო, გარდა ამისა, ჩვეულებრივ ავსებს საკომუნიკაციო ხელსაწყოებს (ბაზის სერვერებთან კავშირების დამყარება და გათიშვა, ქსელში წარმოქმნილი შეცდომების გამოვლენა და დამუშავება და ა.შ.), განვითარების ინსტრუმენტები. მომხმარებლის ინტერფეისები, დიზაინისა და გამართვის ხელსაწყოები.

ჩაშენებული SQL-ის გამოყენების ორი ძირითადი მეთოდი არსებობს: სტატიკური და დინამიური.

ზე სტატიკურიენის გამოყენება (სტატიკური SQL)პროგრამის ტექსტი შეიცავს ზარებს SQL ენის ფუნქციებზე, რომლებიც მყარად შედის შესრულებად მოდულში კომპილაციის შემდეგ. გამოძახებულ ფუნქციებში ცვლილებები შეიძლება იყოს ინდივიდუალური ზარის პარამეტრების დონეზე პროგრამირების ენის ცვლადების გამოყენებით.

ზე დინამიურიენის გამოყენება (დინამიური SQL)იგი ითვალისწინებს SQL ფუნქციის ზარების დინამიურ კონსტრუქციას და ამ ზარების ინტერპრეტაციას, მაგალითად, მონაცემთა წვდომას დისტანციური მონაცემთა ბაზიდან, პროგრამის შესრულების დროს. დინამიური მეთოდი ჩვეულებრივ გამოიყენება იმ შემთხვევებში, როდესაც აპლიკაციამ წინასწარ არ იცის SQL ზარის ტიპი და ის აგებულია მომხმარებელთან დიალოგში.

SQL ენის (ისევე, როგორც მონაცემთა ბაზებთან მუშაობის სხვა ენების) მთავარი მიზანია მოთხოვნების მომზადება და შესრულება. ერთი ან მეტი ცხრილიდან მონაცემების შერჩევის შედეგად შეიძლება მიღებულ იქნეს ჩანაწერების ნაკრები, ე.წ პრეზენტაცია.

შესრულებაარსებითად არის მოთხოვნის შესრულების შედეგად ჩამოყალიბებული ცხრილი. შეგვიძლია ვთქვათ, რომ ეს არის შენახული შეკითხვის ტიპი. თქვენ შეგიძლიათ შექმნათ მრავალი ხედვა იმავე ცხრილების გამოყენებით. თავად ხედი აღწერილია ხედის იდენტიფიკატორის მითითებით და მოთხოვნით, რომელიც უნდა გაკეთდეს მის მისაღებად.



ხედებთან მუშაობის გასაადვილებლად, SQL ენაში დაინერგა კურსორის კონცეფცია. კურსორიარის ერთგვარი მაჩვენებელი, რომელიც გამოიყენება ჩანაწერების ნაკრების გადასაადგილებლად მათი დამუშავებისას.

კურსორის აღწერა და გამოყენება SQL ენაშესრულებულია შემდეგნაირად. პროგრამის აღწერით ნაწილში ხდება დაკავშირება ცვლადი ტიპიკურსორი (CURSOR) SQL განაცხადით (ჩვეულებრივ SELECT განცხადება). პროგრამის შემსრულებელ ნაწილში იხსნება კურსორი (OPEN<имя курсора», перемещение курсора по записям (FETCI-1 <имя курсора>...), რასაც მოჰყვება შესაბამისი დამუშავება და ბოლოს კურსორის დახურვა (CLOSE<имя курсора>).

რელაციურ DBMS-ებში ურთიერთობებზე ოპერაციების შესასრულებლად გამოიყენება ენების ორი ჯგუფი, რომლებსაც მათემატიკური საფუძველი აქვთ E. Codd-ის მიერ შემოთავაზებული თეორიული შეკითხვის ენები:

რელატიური ალგებრა;

ურთიერთობითი გაანგარიშება.

მიმართებით ალგებრაშიყველა მოქმედების ოპერანდები და შედეგები არის ურთიერთობები. რელაციური ალგებრის ენები პროცედურულია, რადგან ურთიერთობის მონაცემთა ბაზაზე შეკითხვის შედეგად მიღებული ურთიერთობა ფასდება ურთიერთობებზე მიმართული რელაციური ოპერატორების თანმიმდევრობის შესრულებით. ოპერატორები შედგება ოპერანდებისგან, რომლებიც არის ურთიერთობები და მიმართებითი ოპერაციები.

Codd-ის მიმართებითი ალგებრა ოპერაციები შეიძლება დაიყოს ორ ჯგუფად: ძირითადი სიმრავლე-თეორიული და სპეციალური მიმართებითი. მოქმედებების პირველი ჯგუფი მოიცავს სიმრავლეების თეორიის კლასიკურ ოპერაციებს: გაერთიანება, განსხვავება, გადაკვეთა და პროდუქტი. მეორე ჯგუფი წარმოადგენს ჩვეულებრივი სიმრავლე-თეორიული ოპერაციების განვითარებას მონაცემთა მანიპულირების რეალური პრობლემების მიმართ, იგი მოიცავს ოპერაციებს: პროექცია, შერჩევა, დაყოფა და კავშირი.

გაანგარიშების ენებიარის არაპროცედურული (აღწერითი ან დეკლარაციული) და იძლევა თხოვნების გამოხატვის საშუალებას პირველი რიგის პრედიკატის (ფუნქციის განცხადებები) გამოყენებით, რომლებიც უნდა აკმაყოფილებდეს ტოპებს ან რელაციურ დომენებს. ასეთი ენის გამოყენებით შესრულებული მონაცემთა ბაზის მოთხოვნა შეიცავს მხოლოდ ინფორმაციას სასურველი შედეგის შესახებ. ამ ენებს ახასიათებთ მოთხოვნების დაწერის წესების არსებობით. კერძოდ, SQL ეკუთვნის ამ ჯგუფის ენებს.

განაცხადის მახასიათებლები SQL მოთხოვნები

SQL მოთხოვნა არის შეკითხვა, რომელიც შექმნილია SQL განცხადების გამოყენებით. SQL მოთხოვნების მაგალითებია შეერთების მოთხოვნები, სერვერის მოთხოვნები, საკონტროლო მოთხოვნები და დაქვემდებარებული მოთხოვნები.

შეერთების მოთხოვნა არის მოთხოვნა, რომელიც აერთიანებს ველებს (სვეტებს) ერთი ან მეტი ცხრილიდან ან მოთხოვნებიდან ერთ ველში ან სვეტში ჩანაწერების შედეგების ნაკრებიდან. მაგალითად, ექვსი გამყიდველი ყოველთვიურად აწვდის მენეჯმენტს თავისი ინვენტარის ინვენტარს. შეერთების მოთხოვნის შექმნით, თქვენ შეგიძლიათ დააკავშიროთ ეს ინვენტარი ჩანაწერების შედეგების ნაკრებში და შემდეგ განავითაროთ შეერთების მოთხოვნის საფუძველზე ცხრილის შექმნის მოთხოვნა.

სერვერზე მოთხოვნა გადასცემს SQL ბრძანებებს ODBC-ის საშუალებით სერვერზე, მაგალითად, Microsoft SQL Server-ზე. სერვერის მოთხოვნები საშუალებას გაძლევთ პირდაპირ იმუშაოთ სერვერზე ცხრილებთან, მათთან შეერთების ნაცვლად. სერვერზე მოთხოვნის შედეგი შეიძლება იყოს ჩანაწერების ჩატვირთვა ან მონაცემების შეცვლა.

საკონტროლო მოთხოვნა ქმნის ან ცვლის მონაცემთა ბაზის ობიექტებს, როგორიცაა Access ან SQL Server ცხრილები.

ქვემოთხოვნა შედგება SQL SELECT განაცხადისგან სხვა შერჩევის ან შეცვლის მოთხოვნის შიგნით. ეს ინსტრუქციები შეიტანება მოთხოვნის ფორმის „ველი“ სტრიქონში ახალი ველის დასადგენად ან „შერჩევის პირობის“ ხაზში ველის შერჩევის პირობის დასადგენად. ქვემოთხოვნები გამოიყენება შემდეგი მოქმედებების შესასრულებლად:

ქვემოთხოვნაში გარკვეული შედეგების არსებობის შემოწმება დაცული სიტყვების EXISTS ან NO EXISTS გამოყენებით;

ეძებს ძირითად მოთხოვნას ნებისმიერი მნიშვნელობისთვის, რომელიც უდრის, აღემატება ან ნაკლებია ქვემოთხოვნაში დაბრუნებულ მნიშვნელობებზე (ANY, IN ან ALL რეზერვირებული სიტყვების გამოყენებით);

ქვემოკითხვების შექმნა ქვემოკითხვებში (ჩასმული subqueries).

Access-ში SQL ენა შეიძლება გამოყენებულ იქნას ეკრანის ფორმების, მოხსენებების შესაქმნელად, ასევე მაკროებისა და VBA პროგრამების შესაქმნელად.

კავშირი QBE და SQL ენებს შორის

Access-ში მჭიდრო კავშირია QBE და SQL ენებს შორის. მომხმარებლის მიერ შევსებული QBE ენაზე შეკითხვის ცხრილები (ფორმები), დაუყოვნებლივ შესრულებამდე გარდაიქმნება SQL გამონათქვამებად. ანუ, SQL ენა არის შიდა სტანდარტი მოთხოვნების შესასრულებლად. ამ მექანიზმს აქვს უპირატესობა, რომ წვდომის სისტემას საშუალებას აძლევს გააერთიანოს მოთხოვნების მომზადება ადგილობრივ და დისტანციურ კომპიუტერებზე შესასრულებლად. ამ უკანასკნელ შემთხვევაში, SQL შეტყობინება რეალურად გადაეცემა კომპიუტერს - მოთხოვნის სერვერს.

Access-ში, შეკითხვა შეიძლება იყოს სამი რეჟიმიდან ერთ-ერთში (მდგომარეობით): დიზაინი, SQL და ცხრილი. დიზაინის რეჟიმი გამოიყენება ნულიდან ახალი მოთხოვნის შესაქმნელად (Wizards ან სხვა ხელსაწყოების გამოყენების გარეშე) ან არსებული მოთხოვნის განლაგების შესაცვლელად. SQL რეჟიმი გამოიყენება SQL განცხადებების შესაყვანად ან სანახავად. ცხრილის რეჟიმი გამოიყენება შეკითხვის შედეგებთან მუშაობისთვის.

SQL ფორმებსა და ანგარიშებში

ჩვენებებში და ანგარიშებში ჩანაწერების ძირითადი წყაროა ცხრილები და მოთხოვნები. მეორე შემთხვევაში, მოთხოვნა შეიძლება იყოს მზა მოთხოვნა მონაცემთა ბაზაში ან შექმნილი ფორმის ან ანგარიშის შემუშავებისას.

SQL მაკროებში

მაკრო ბრძანებები არის მაკროების ნაწილი, რომლებიც გამოიყენება მონაცემთა ბაზასთან მუშაობისას ხშირად განმეორებადი მოქმედებების შესრულების ავტომატიზაციისთვის. მაკრო არის ერთი ან მეტი მაკრო ბრძანება არგუმენტებით.

მაკროები გამოიძახება მონაცემთა ბაზის ფანჯრიდან ან ავტომატურად, როდესაც ხდება გარკვეული მოვლენები. მოვლენა, რომელზეც მაკრო გამოიძახება, შეიძლება იყოს, მაგალითად, ღილაკის დაწკაპუნება ფორმის ზონაში ან მონაცემთა ბაზის ფანჯრის გახსნა. მონაცემთა ბაზის ობიექტებზე გარკვეული მოქმედებების შესრულებასთან ერთად, მაკროებს შეუძლიათ გამოიძახონ სხვა მაკროები, Visual Basic პროგრამები და გარე აპლიკაციები.

მრავალი მაკრო ბრძანებიდან ორი მაკრო ბრძანება პირდაპირ კავშირშია SQL-თან: Run SQL Query (Run SQL) და Open Query (OpenQuery)

მაკრო ბრძანება გაუშვით SQL Queryაწარმოებს Access ცვლილების ან კონტროლის მოთხოვნას შესაბამისი SQL განცხადების გამოყენებით. ეს მაკრო შესაძლებელს ხდის მაკროში მოქმედებების შესრულებას პირველი მოთხოვნების შენახვის გარეშე. თქვენ ასევე შეგიძლიათ შეასრულოთ შენახული მოთხოვნები მაკროს გამოყენებით.

შეცვალეთ მოთხოვნებიარის SQL განცხადებები, რომლებიც ახორციელებენ შემდეგ ფუნქციებს: დამატება (INSERT INTO), წაშლა (DELETE), ცხრილის შექმნა (SELECT...INTO) და განახლება (UPDATE)

აკონტროლეთ მოთხოვნებიარის SQL განცხადებები, რომლებიც ასრულებენ შემდეგ ფუნქციებს: შექმენით ცხრილი (CREATE TABLE), შეცვალეთ ცხრილი (ALTER TABLE), ჩამოაგდეთ ცხრილი (DROP TABLE), შექმნათ ინდექსი (CREATE INDEX) და ჩამოაგდეთ ინდექსი (DROP INDEX)

მაკრო ბრძანების ერთადერთი და აუცილებელი არგუმენტი SQL შეკითხვის გაშვებაარის SQL განცხადება. მაკრო არგუმენტი, როგორც SQL ტექსტი - ინსტრუქციები შეიტანება ხელით მაკრო შეყვანის ფანჯარაში ან კოპირებულია SQL ფანჯრიდან, რაც ხშირად უფრო მოსახერხებელია.

მაკრო ბრძანება OpenRequestსაშუალებას გაძლევთ გახსნათ სელექციური ან ჯვარედინი მოთხოვნა (ცხრილის, დიზაინის და გადახედვის რეჟიმებში), განახორციელოთ მოთხოვნა მონაცემების შესაცვლელად ან შესაყვანად.

მაკრო განსაზღვრავს სამ არგუმენტს: მოთხოვნის სახელი, რეჟიმი და მონაცემთა რეჟიმი. პირველი არგუმენტი განსაზღვრავს გახსნის მოთხოვნის სახელს და აუცილებელია. მეორე არგუმენტი განსაზღვრავს მოთხოვნის გახსნის რეჟიმს (ცხრილი, დიზაინი და ხედი). მესამე არგუმენტი აღწერს მოთხოვნაში მონაცემთა შეყვანის რეჟიმს ("დამატება", "შეცვლა" და "მხოლოდ წაკითხვა")

SQL VBA პროგრამებში

VBA, მაკროების მსგავსად, შექმნილია Access-ის მონაცემთა ბაზის ობიექტებზე განმეორებადი ოპერაციების ავტომატიზაციისთვის.

Access-ში არის VBA პროგრამების გაშვების შემდეგი გზები:

ღონისძიების დამუშავების პროცედურაში პროგრამის ჩართვა;

ფუნქციის გამოძახება გამოსახულებაში;

Sub პროცედურის გამოძახება სხვა პროცედურაში ან გამართვის ფანჯარაში;

მაკრო ბრძანების RunCode (RunCode) შესრულება მაკროში.

ფუნქციები გამოიყენება გამონათქვამებში, რომლებიც განსაზღვრავენ გამოთვლილ ველებს ფორმებში, ანგარიშებში ან მოთხოვნებში. გამონათქვამები გამოიყენება მოთხოვნებისა და ფილტრების პირობების დასაზუსტებლად, ასევე მაკროებში, VBA განცხადებებსა და მეთოდებში და SQL განცხადებებში. ქვე პროცედურა შეიძლება შეიცავდეს საჯარო VBA ქვეპროგრამებს, რომლებიც გამოიძახება სხვა პროცედურებიდან.

მოდით შევხედოთ მონაცემთა ბაზის შეკითხვის გაშვებას SQL განცხადებების გამოყენებით Visual Basic for Applications პროგრამაში.

მოთხოვნა ირჩევს მონაცემთა ბაზიდან ჩანაწერებს, რომლებიც აკმაყოფილებენ გარკვეულ პირობებს (შერჩევის მოთხოვნა), ან გასცემს ინსტრუქციებს განსაზღვრული მოქმედებების შესასრულებლად ჩანაწერებთან, რომლებიც აკმაყოფილებენ გარკვეულ პირობებს (მოთხოვნის შეცვლა).

არსებობს მოთხოვნების შესრულების შემდეგი გზები:

Execute მეთოდის გამოძახება (ცვლილებებისთვის SQL მოთხოვნების შესასრულებლად);

სპეციალური QueryDef ობიექტის შექმნა და შესრულება;

SQL განცხადების გამოყენება OpenRecordset მეთოდის არგუმენტად;

შეასრულეთ OpenRecordset მეთოდი არსებულ QueryDef ობიექტზე;

RunSQL და OpenQuery მეთოდების გამოძახება.

შესრულების მეთოდიგამოიყენება თუ საჭიროა მონაცემთა ბაზაში ცვლილების შეტანა, რომელიც არ აბრუნებს ჩანაწერებს. მაგალითად, ჩანაწერების ჩასმის ან წაშლის ოპერაციები.

QueryDef ობიექტიწარმოადგენს მონაცემთა ბაზაში შენახულ შეკითხვის განმარტებას. ის შეიძლება ჩაითვალოს როგორც შედგენილი SQL განცხადება.

OpenRecordset მეთოდიგამოიყენება Recordset ტიპის ობიექტის გასახსნელად მასზე შემდგომი ოპერაციების შესასრულებლად.

RunSQL მეთოდიახორციელებს მაკროს SQL შეკითხვის გაშვება VBA პროგრამაში

OpenQuery მეთოდიასრულებს OpenQuery მაკრო ბრძანებას VBA პროგრამაში. მასთან ერთად შეგიძლიათ გახსნათ მოთხოვნა მონაცემთა ცხრილის, დიზაინის ან ნახვის რეჟიმში. ეს ადგენს მონაცემებთან მუშაობის ერთ-ერთ შემდეგ რეჟიმს: მხოლოდ დამატება, შეცვლა ან კითხვა.

შეკითხვის შესრულების ვარიანტის არჩევანს განსაზღვრავს პროგრამისტი, მოგვარებული პრობლემის მახასიათებლების გათვალისწინებით.

შეკითხვები Access-ში არის ძირითადი ინსტრუმენტი მონაცემთა ბაზის ცხრილებში მონაცემების შერჩევის, განახლებისა და დამუშავებისთვის. Access, რელაციური მონაცემთა ბაზების კონცეფციის შესაბამისად, იყენებს SQL-ს (Structured Query Language) მოთხოვნების შესასრულებლად. SQL ენის ინსტრუქციების გამოყენებით, ნებისმიერი მოთხოვნა Access-ში განხორციელდება.

მოთხოვნის ძირითადი ტიპი არის შერჩევის მოთხოვნა. ამ მოთხოვნის შედეგი არის ახალი ცხრილი, რომელიც არსებობს მოთხოვნის დახურვამდე. ჩანაწერები იქმნება ცხრილების ჩანაწერების გაერთიანებით, რომლებზეც დაფუძნებულია მოთხოვნა. ცხრილის ჩანაწერების გაერთიანების მეთოდი მითითებულია მონაცემთა სქემაში მათი ურთიერთობის განსაზღვრისას ან მოთხოვნის შექმნისას. მოთხოვნაში ჩამოყალიბებული შერჩევის პირობები საშუალებას გაძლევთ გაფილტროთ ჩანაწერები, რომლებიც ქმნიან ცხრილების შეერთების შედეგს.

Access-ში შეიძლება შეიქმნას რამდენიმე ტიპის მოთხოვნა:

  • ნიმუშის მოთხოვნა- ირჩევს მონაცემებს ერთი ცხრილიდან ან მოთხოვნიდან ან რამდენიმე ურთიერთდაკავშირებული ცხრილიდან და სხვა მოთხოვნებიდან. შედეგი არის ცხრილი, რომელიც არსებობს მოთხოვნის დახურვამდე. შედეგების ცხრილის ჩანაწერები იქმნება მითითებული შერჩევის პირობების შესაბამისად და რამდენიმე ცხრილის გამოყენებისას მათი ჩანაწერების გაერთიანებით;
  • ცხრილის შექმნის მოთხოვნა- ირჩევს მონაცემებს ურთიერთდაკავშირებული ცხრილებიდან და სხვა მოთხოვნებიდან, მაგრამ, შერჩეული მოთხოვნისგან განსხვავებით, ინახავს შედეგს ახალ მუდმივ ცხრილში;
  • განახლების, დამატების, წაშლის მოთხოვნა- არის სამოქმედო მოთხოვნები, რის შედეგადაც იცვლება ცხრილების მონაცემები.

მოთხოვნები წვდომაში დიზაინის რეჟიმში შეიცავს მონაცემთა სქემას, რომელიც აჩვენებს გამოყენებულ ცხრილებს და შეკითხვის ფორმას, რომელშიც შემუშავებულია მოთხოვნის ცხრილის სტრუქტურა და ჩანაწერების შერჩევის პირობები (ნახ. 4.1).

შეკითხვის გამოყენებით შეგიძლიათ განახორციელოთ მონაცემთა დამუშავების შემდეგი ტიპები:

  • მომხმარებლის მიერ შერჩეული ცხრილის ველების ჩართვა შეკითხვის ცხრილში;
  • განახორციელოს გამოთვლები თითოეულ მიღებულ ჩანაწერში;
  • შეარჩიეთ ჩანაწერები, რომლებიც აკმაყოფილებს შერჩევის პირობებს;
  • ახალი ვირტუალური ცხრილის შექმნა ურთიერთდაკავშირებული ცხრილების ჩანაწერების გაერთიანების საფუძველზე;
  • ჯგუფური ჩანაწერები, რომლებსაც აქვთ იგივე მნიშვნელობა ერთ ან მეტ ველში, ერთდროულად ასრულებენ სტატისტიკურ ფუნქციებს ჯგუფის სხვა ველებზე და, შედეგად, მოიცავს თითო ჩანაწერს თითოეული ჯგუფისთვის;
  • მონაცემთა ბაზის ახალი ცხრილის შექმნა არსებული ცხრილების მონაცემების გამოყენებით;
  • ველების განახლება ჩანაწერების არჩეულ ქვეჯგუფში;
  • მონაცემთა ბაზის ცხრილიდან არჩეული ჩანაწერების ქვეჯგუფის წაშლა;
  • დაამატეთ ჩანაწერების არჩეული ქვეჯგუფი სხვა ცხრილში.

შეკითხვები Access-ში ემსახურება ჩანაწერის წყაროს სხვა მოთხოვნების, ფორმებისა და ანგარიშებისთვის. შეკითხვის გამოყენებით, შეგიძლიათ შეაგროვოთ სრული ინფორმაცია, რომ შექმნათ გარკვეული საგნობრივი დოკუმენტი რამდენიმე ცხრილიდან, შემდეგ გამოიყენოთ იგი ფორმის შესაქმნელად - ამ დოკუმენტის ელექტრონული წარმოდგენა. თუ ფორმა ან მოხსენება შექმნილია ოსტატის მიერ რამდენიმე ურთიერთდაკავშირებულ ცხრილზე დაყრდნობით, მაშინ მათთვის ავტომატურად გენერირდება მოთხოვნა, როგორც ჩანაწერების წყარო.
ამის გასაძლიერებლად, უყურეთ ვიდეო გაკვეთილს.

Access DBMS იყენებს ორი ტიპის შეკითხვებს: QBE – შეკითხვა ნიმუშის მიხედვით და SQL(Structured Query Language) - სტრუქტურირებული შეკითხვის ენა. ნიმუში მოთხოვნა გენერირებულია სპეციალური მოთხოვნის ფორმის შევსებით "Query Builder" ფანჯარაში. SQL - მოთხოვნები შექმნილია პროგრამისტების მიერ SQL-ის თანმიმდევრობიდან - ინსტრუქციები. SQL გენერირდება, როგორც წესი, პროგრამისტების მიერ შეკითხვის ფორმაზე, რომელიც იხსნება "Query Builder" ბრძანებით "Creation" ჩანართზე და "SQL Mode" შეირჩევა View მენიუდან. SQL ენა შექმნილია იმისთვის, რომ იმუშაოს მონაცემებთან, ე.ი. რელაციურ მონაცემთა ბაზებში მონაცემების შექმნის, მოდიფიკაციისა და მართვისთვის.

უნდა აღინიშნოს, რომ არსებობს SQL შეკითხვის რამდენიმე რეჟიმი (ANSI-89 SQL და ANSI-92 SQL რეჟიმის მოთხოვნები), რომლებიც შეესაბამება ANSI-89 SQL და ANSI-92 SQL სტანდარტებს.

ინსტრუქციები შეიცავს SQL-ში მონაცემთა ნაკრების აღწერას. SQL განცხადებებიშედგება პუნქტებისგან (SELECT, FROM, WHERE და ა.შ.). შეთავაზებები SQL ენაში შედგება ტერმინებისგან (ოპერატორები ან ბრძანებები, იდენტიფიკატორები, მუდმივები და ა.შ.). განცხადება იწყება წინადადებით (ერთ-ერთი ბრძანება SELECT, CREATE, INSERT, UPDATE, DELETE და ა.შ.) და მთავრდება მძიმით. ძირითადი SQL განცხადებები: SELECT, FROM და WHERE.

მაგალითად, SQL განცხადება:
SELECT Students.StudentCode
სტუდენტებისგან;
შედგება პუნქტი "SELECT Students.StudentCode" და პუნქტი "FROM Students".

SELECT პუნქტი შეიცავს ოპერატორიაირჩიეთ და იდენტიფიკატორი„სტუდენტები.სტუდენტური კოდექსი“. აქ „StudentCode“ ველის სრულ სახელს წინ უძღვის მონაცემთა ბაზის „Students“ ცხრილის სახელი. SELECT - განსაზღვრავს ველს, რომელიც შეიცავს საჭირო მონაცემებს. FROM პუნქტი შედგება FROM პუნქტისა და იდენტიფიკატორისგან "Students". FROM - განსაზღვრავს ცხრილს, რომელიც შეიცავს SELECT პუნქტში მითითებულ ველებს.

უნდა აღინიშნოს, რომ SQL-ში შეკითხვის შექმნისას უნდა გაითვალისწინოთ მისი სინტაქსი. იმისდა მიუხედავად, რომ SQL ენის სინტაქსი ეფუძნება ინგლისური ენის სინტაქსს, SQL ენის ვერსიების სინტაქსი შეიძლება განსხვავდებოდეს სხვადასხვა DBMS-ისთვის.

არსებობს რამდენიმე სახის მოთხოვნა: შერჩევა, განახლება, ჩანაწერების დამატება და წაშლა, ჯვარედინი შეკითხვა, ცხრილების შექმნა და წაშლა, ცხრილების შეერთება და ა.შ. ყველაზე გავრცელებული არის ნიმუშის მოთხოვნა. შერჩევის მოთხოვნები გამოიყენება ცხრილებში შემავალი ინფორმაციის შესარჩევად, რომელიც მომხმარებელს სჭირდება. ისინი იქმნება მხოლოდ დაკავშირებული ცხრილებისთვის.

SQL შეკითხვის მოთხოვნების სანახავად Access 2003 ან 2007 DBMS-ში, თქვენ უნდა შეასრულოთ SQL View/Mode ბრძანება აქტიურ ფანჯარაში ნიმუშის შეკითხვის დიზაინისთვის (ნახ. 1).


ბრინჯი. 1.

მოდით მივიღოთ SQL განცხადება (SELECT) Access 2003 მონაცემთა ბაზიდან მოსწავლის შესრულების კრიტერიუმის მიხედვით „Grade=5“ (ნახ. 2).



ბრინჯი. 2.

როგორც SELECT განაცხადიდან ჩანს (ნახ. 1), ის აღწერს მონაცემთა ნაკრების SQL ენაზე: SELECT - განსაზღვრავს ველების სახელებს, რომლებსაც წინ უძღვის ცხრილების სახელები, რომლებიც შეიცავს მონაცემებს; FROM - განსაზღვრავს ცხრილებს და მათ კავშირებს ცხრილების ძირითადი ველების მეშვეობით (ამისთვის გამოიყენება კონსტრუქცია INNER JOIN ... ON), რის საფუძველზეც ხდება მონაცემების შერჩევა; WHREME - განსაზღვრავს ველების შერჩევის პირობებს; ORDER BY - განსაზღვრავს, თუ როგორ უნდა დაალაგოთ ზრდადი თანმიმდევრობით (ნაგულისხმევად, შესრულებულია აღმავალი თანმიმდევრობა) "სტუდენტების" ცხრილის "გვარი" ველის მნიშვნელობები.

როგორც ირკვევა მონაცემთა ბაზიდან მონაცემების მოპოვების ინსტრუქციებიდან, SQL ენა აღწერს რა უნდა იქნას მიღებული მონაცემთა ბაზიდან, ხოლო შესრულება ევალება DBMS-ს, რადგან SQL ენას არ აქვს პროგრამის შესრულების კონტროლის საკუთარი საშუალება.

რუსეთის ფედერაციის განათლების სამინისტრო

კუზბასის სახელმწიფო ტექნიკური უნივერსიტეტი

კომპიუტერული მეცნიერების დეპარტამენტი

და საინფორმაციო ტექნოლოგიები

მოთხოვნები SQL ენაზე

„ეკონომიკა და მენეჯმენტი საწარმოებში“ სპეციალობის სტუდენტებისთვის ლაბორატორიული მუშაობის სახელმძღვანელო კურსში „ეკონომიკური გამოთვლების ავტომატიზაცია“

შედგენილია ე.ა. ბესონოვი

დამტკიცდა დეპარტამენტის სხდომაზე 2000 წლის 23 ივნისის ოქმი No11.

ელექტრონული ასლი ინახება KuzSTU-ს მთავარი შენობის ბიბლიოთეკაში

კემეროვო 2001 წ

SQL (Structured Query Language - სტრუქტურირებული შეკითხვის ენა

ბუები) 1986 წლიდან არის სტანდარტული რელაციური მონაცემთა ბაზის ენა. კერძოდ, ის გამოიყენება Access და Excel აპლიკაციებში. SQL ენის სტანდარტი ჩამოყალიბებულია .

MS Access-ში მოთხოვნები ინახება და დანერგილია SQL ენის გამოყენებით. მიუხედავად იმისა, რომ მოთხოვნების უმეტესობა შეიძლება შეიქმნას გრაფიკულად (თარგების მოთხოვნები), ისინი ინახება როგორც SQL განცხადებები. ზოგიერთ შემთხვევაში (მაგალითად, ქვემოთხოვნებში), შეგიძლიათ გამოიყენოთ მხოლოდ SQL ენა. ამ ენის დიალექტი გამოიყენება MS Access-ში და აღწერილია ქვემოთ. SQL-ში შეკითხვის მრავალი მაგალითი შეგიძლიათ იხილოთ Northwind მონაცემთა ბაზაში (ფაილი I:\Access\Sampapps\Nwind.mdb).

SQL შესამჩნევად განსხვავდება სხვა მაღალი დონის პროგრამირების ენებისგან.

1. SQL არის არაპროცედურული ენა. ის უბრალოდ აცხადებს, რა უნდა გაკეთდეს და შესრულება რჩება DBMS-ზე (მონაცემთა ბაზის მართვის სისტემა).

2. SQL იყენებს სამ ღირებულებიან ლოგიკას. ტრადიციულ ლოგიკურ მნიშვნელობებთან TRUE და FALSE გამოიყენება NULL (უცნობი ან NO DATA).

3. ოპერაციები შესრულებულია მონაცემთა მთელ კომპლექტზე და არა ცალკეულ ელემენტებზე, როგორც სხვა პროგრამირების ენებში.

SQL მოთხოვნა შედგება განცხადებებისგან. თითოეული ინსტრუქცია შეიძლება შეიცავდეს რამდენიმე წინადადებას.

თითქმის არცერთი მოთხოვნა არ არის დასრულებული FROM პუნქტის გარეშე, რომელიც აღწერს გამოყენებულ ცხრილებს ან შეკითხვებს და აქვს სინტაქსი

მაგიდებიდან

ცხრილები - გამოყენებული ცხრილები/შეკითხვები და მათი ურთიერთობა.

თუ FROM პუნქტი შეიცავს IN პუნქტს (კვადრატული ფრჩხილები მიუთითებს, რომ პუნქტის ეს ნაწილი არასავალდებულოა), მაშინ რეზერვებულ სიტყვას IN უნდა მოჰყვეს იმ მონაცემთა ბაზის სახელს, რომელშიც მდებარეობს ცხრილები (თუ ვივარაუდებთ, რომ ისინი არ იყენებენ ცხრილებს. მიმდინარე მონაცემთა ბაზიდან).

მასწავლებლებისგან

თუ შეკითხვა დაფუძნებულია ორ ცხრილზე, მაშინ აუცილებელია მიუთითოთ მათი გაერთიანების მეთოდი - ერთ-ერთი შემდეგი (ვარაუდობენ, რომ მკითხველი იცნობს მათ):

დეკარტის პროდუქტი; INNER JOIN შიდა შეერთება; LEFT JOIN მარცხენა გარე შეერთება; RIGHT JOIN მარჯვენა გარე შეერთება.

შეერთების მეთოდის შემდეგ დაუყოვნებლივ უნდა მოათავსოთ ფრაზა ON Table1.Key = Table2.ForeignKey

Key - გასაღების ველის სახელი 1 მხარეს. ForeignKey - დამაკავშირებელი ველის სახელი N მხარეს.

მონაცემთა სქემა

სურათზე ნაჩვენებია ცხრილის შეერთების დიაგრამა (მონაცემთა სქემა), რომელიც გამოყენებული იქნება ქვემოთ მოცემული მაგალითების უმეტესობისთვის. ნახატიდან, მაგალითად, ხედავთ, რომ „გამომცდელები“ ​​ცხრილისთვის ველი „სათაური“ არის საკვანძო ველი (მამატური სახით), ხოლო ველი „მასწავლებელი“ არის უცხო გასაღები „მასწავლებელთა“ ცხრილისთვის. მითითებულ ცხრილებს შორის შეერთება შიდაა და უზრუნველყოფს მონაცემთა მთლიანობას. ამას მოწმობს ნიშნები 1 და ∞ დამაკავშირებელი ხაზის ბოლოებზე ("მასწავლებლები" არის მთავარი ცხრილი, ხოლო "გამომცდელები" არის დაქვემდებარებული ცხრილი). გარე შეერთებით, შეგიძლიათ იხილოთ ისარი მაგიდის შეერთების ხაზზე, რომელიც მიმართულია დაქვემდებარებული ცხრილისკენ. ეს ნიშნავს, რომ ყველა ჩანაწერი ნაჩვენები იქნება მთავარ ცხრილში, მაშინაც კი, თუ არ არის შესაბამისი ჩანაწერები დაქვემდებარებულ ცხრილში. მაგალითად, შეგიძლიათ მიიღოთ მასწავლებლების სია და საგნების სახელები. თუ

ზოგიერთი მასწავლებელი არ არის „Examiners“ ცხრილში, მაშინ ამ მასწავლებლის საგნის სახელის ველი ცარიელი იქნება, თუ გამოყენებული იქნება LEFT JOIN.

FROM Examiners INNER JOIN Exams ON Examiners.Subject = Exams.Subject

FROM პუნქტში, რეზერვირებული სიტყვების INNER JOIN-მდე, მითითებულია ცხრილის სახელი 1 მხარეს (ჩვენს შემთხვევაში, ცხრილი "Examiners"). თუ FROM პუნქტში ორზე მეტი ცხრილია, მაშინ ორი ცხრილის შეერთება შეიძლება ჩაერთოს ფრჩხილებში და განიხილებოდეს როგორც ერთი ცხრილი სხვა ცხრილებთან ან შეერთებისას. თქვენ შეგიძლიათ აღწეროთ ნებისმიერი რაოდენობის ცხრილის შეერთება ამ გზით.

FROM Teachers INNER JOIN (გამომცდელები

Inner Join გამოცდები

ON Examiners.Subject = Exams.Subject)

ON Teachers.Teacher = Examiners.Teacher მონაცემების მთელი სქემა აღწერილია (იხ. სურათი).

SELECT განცხადება ირჩევს საჭირო ველებს ცხრილებიდან ან მოთხოვნებიდან. მინიმალური ფორმატი:

ცხრილიდან;

ველები - გამონათქვამებისა და ველების სახელების ნაკრები, გამოყოფილი მძიმეებით. მაგალითი

SELECT Group, Student, Assessment FROM Exams;

თუ სახელი მეორდება FROM პუნქტში ჩამოთვლილ რამდენიმე ცხრილში, მაშინ სახელს წინ უნდა უსწრებდეს ცხრილის სახელი და წერტილი, მაგალითად: [Examiners].Teacher ან [Exams]. [საქონელი]

თუ ცხრილის ან ველის სახელი შეიცავს ინტერვალს ან სხვა სპეციალურ სიმბოლოს, მაშინ ეს სახელი უნდა იყოს ჩასმული კვადრატულ ფრჩხილებში. სხვა შემთხვევებში, ფრჩხილები არჩევითია.

IN ცხრილის რეჟიმში მოცემულ მაგალითში მოთხოვნა აწარმოებს ცხრილს

თან სვეტის სათაურები „ჯგუფი“, „სტუდენტი“, „კლასი“ (ამ თანმიმდევრობით). ზოგჯერ სასურველია სათაური განსხვავებული იყოს

ველის სახელი. ამ შემთხვევაში, ველის სახელის შემდეგ თქვენ უნდა მოათავსოთ რეზერვირებული სიტყვა AS და სათაური (სხვა სახელი), მაგალითად:

SELECT ჯგუფი, სტუდენტი AS სრული სახელი, კლასი

IN ამ შემთხვევაში სათაურის „სტუდენტის“ ნაცვლად გამოჩნდება „სრული სახელი“. თუ

სათაურში არის ერთზე მეტი სიტყვა, ის უნდა იყოს ჩასმული კვადრატულ ფრჩხილებში.

თუ საჭიროა ცხრილის ყველა ველის ჩვენება, მაშინ ველის არგუმენტი უნდა იყოს მითითებული ვარსკვლავით ან სახით „ცხრილი.*“.

SELECT Teachers.* FROM Teachers;

"მასწავლებლების" ცხრილიდან 5-ვე ველი დაბრუნდა.

ზოგჯერ თქვენ უნდა გამოიყვანოთ არა ველის მნიშვნელობა, არამედ ველის მნიშვნელობებზე გამოთვლების შედეგი. ამ შემთხვევაში, ველის სახელის ნაცვლად, თქვენ უნდა მიუთითოთ გამოხატულება. გამონათქვამების წერის წესები არაფრით განსხვავდება შეკითხვის დიზაინერში გამოყენებული წესებისგან.

SELECT საშუალო ([Grade]) როგორც [Grade Average] FROM Exams;

მოთხოვნა აბრუნებს ერთ რიცხვს სვეტში სახელწოდებით „GPA“

- ყველა სტუდენტის კლასის საშუალო არითმეტიკული. მაგალითი

SELECT Count([Teacher]) როგორც [მასწავლებელთა რაოდენობა] FROM Teachers;

სათაურით „მასწავლებელთა რაოდენობა“ განთავსდება ცხრილის „მასწავლებელთა“ სტრიქონების რაოდენობა, რომლებშიც ველი „მასწავლებელი“ ცარიელი არ არის (და ის ყოველთვის არ არის ცარიელი, რადგან ის არის მთავარი). ეს არის მასწავლებელთა რაოდენობა, ვინაიდან თითოეულ ჩანაწერს აქვს მასწავლებლის ნომერი, რომელიც განსხვავდება სხვა მასწავლებლების რიცხვისგან.

IN SELECT განცხადებები დაუყოვნებლივ სიტყვის SELECT შეიძლება იყოს

იწერება პრედიკატი - ერთ-ერთი სიტყვა ALL, DISTINCT, DISTINCTROW, TOP N.

ALL პრედიკატი იწვევს ყველა ჩანაწერის დაბრუნებას, თუნდაც ისინი შეიცავდეს დუბლიკატებს.

DISTINCT კრძალავს არჩეულ ველებში დუბლიკატების შემცველი ჩანაწერების ჩვენებას. DISTINCT პრედიკატის გამოყენება უდრის Query Builder თვისებების ფურცელში Unique Values ​​საკუთრების დაყენებას Yes-ზე.

DISTINCTROW გავლენას ახდენს შედეგზე მხოლოდ იმ შემთხვევაში, თუ გაანალიზებული ცხრილების ყველა ველი არ არის ჩართული მოთხოვნაში. პრედიკატი იგნორირებულია, თუ მოთხოვნა შეიცავს მხოლოდ ერთ ცხრილს. DISTINCTROW პრედიკატი გამორიცხავს ჩანაწერებს, რომლებიც მეორდება მთლიანად. DISTINCTROW პრედიკატის გამოყენება უტოლდება Query Builder თვისებების ფურცელში Unique Records თვისების Yes-ზე დაყენებას.

Top N პრედიკატი გამოიყენება N ჩანაწერების დასაბრუნებლად, რომლებიც არის ნაკრების დასაწყისში ან ბოლოს, დალაგებულია ამ ველის აღმავალი ან დაღმავალი მნიშვნელობებით. დახარისხება განისაზღვრება ORDER BY პუნქტის გამოყენებით, რომელიც განთავსებულია ხელსაწყოს FROM პუნქტის შემდეგ.

აირჩიეთ ინსტრუქციები.

სიტყვების ORDER BY-ის შემდეგ თქვენ უნდა მოათავსოთ ველის სახელი და სიტყვა ASC (აღმავალი, სურვილისამებრ) ან DESC (კლებადობა). შემდეგი SQL განცხადება საშუალებას გაძლევთ მიიღოთ საუკეთესო 5 სტუდენტის სია.

აკადემიური შესრულება

ცხრილი 1

საშუალო ქულა

მედვედევი

ვორობიევი

აირჩიეთ TOP 5 სტუდენტი, [GPA] აკადემიური მოსწრებიდან

ORDER BY [საშუალო ქულა] DESC;

SELECT DISTINCT [სტუდენტი] გამოცდებიდან

შეკვეთა [სტუდენტის] მიერ;

შეკითხვა აბრუნებს სტუდენტების სიას, დალაგებულია ზრდადი გვარის მიხედვით.

FROM პუნქტის შემდეგ შეიძლება დაიწეროს SELECT განცხადება

WHERE პუნქტი ფორმის WHERE პირობით

პირობა არის ლოგიკური გამოხატულება, რომელიც ფასდება წყაროს ცხრილის თითოეული ჩანაწერისთვის.

თუ პირობა არის true, მაშინ ჩანაწერი (ველების ნაკრები SELECT პუნქტის ველების სიაში) შედის შედეგის კომპლექტში, თუ false, ის არ შედის.

SELECT DISTINCT ჯგუფი, სტუდენტი

გამოცდებიდან

WHERE ქულა = 2;

იქმნება წარუმატებელი სტუდენტების სია. მაგალითი

WHERE [პოზიცია]=”ასოცირებული პროფესორი” ან [დიპლომი]=”დოქტორი” შეკვეთა [სრული სახელით];

გაიცემა ასოცირებული პროფესორის აკადემიური წოდების ან ტექნიკურ მეცნიერებათა კანდიდატის აკადემიური ხარისხის მქონე მასწავლებელთა სია. ამ მაგალითში არ არის საჭირო პრედიკატის გამოყენება, რადგან ჩანაწერები ეკუთვნის სხვადასხვა მასწავლებელს და გამეორება შეუძლებელია.

სიმებიანი გამონათქვამების არჩევისას შეგიძლიათ გამოიყენოთ Expression Like ნიმუშის ოპერატორი, რომელიც ამოწმებს გაანგარიშების შედეგის თანმიმდევრულობას. შაბლონის გამონათქვამები.შაბლონმა შეიძლება გამოიყენოს რამდენიმე სიმბოლო, რომელსაც აქვს სპეციალური დანიშნულება:

* ნებისმიერი სიმბოლოების ნებისმიერი რაოდენობა;

ნებისმიერი პერსონაჟი.

IN კვადრატულ ფრჩხილებში შეიძლება მიუთითებდეს დიაპაზონი, რომელშიც არის ან არ არის სიმბოლო.

პერსონაჟი, რომელიც მერყეობს A-დან F-მდე. [!A-F] სიმბოლო არ არის A-F დიაპაზონში.

აირჩიეთ [სახელი] მასწავლებლებისგან

WHERE [სრული სახელი] LIKE „B*“ ან [სრული სახელი] LIKE „Ш*“;

IN მიღებული ნაკრები მოიცავს მასწავლებლების გვარებს D ან Ш ასოებით დაწყებული.

X LIKE "P###"

წერილობითი პირობა აკმაყოფილებს 5 სიმბოლოსგან შემდგარ ხაზებს, რომლებიც იწყება ასო P-ით. მას უნდა მოჰყვეს ასო A-F დიაპაზონიდან. ხაზი უნდა დასრულდეს 3 ციფრით.

თუ მოთხოვნის ყოველი შესრულებამდე აუცილებელია შერჩევის პირობების შეცვლა, მოსახერხებელია გამოიყენოთ ფორმის წინადადება:

PARAMETERS ტექსტები;

ტექსტები - მძიმით გამოყოფილი ტექსტების სია.

ყოველი ტექსტის შემდეგ, მონაცემთა ტიპი მითითებულია ინტერვალით გამოყოფილი. პარამეტრებით შეკითხვის გაშვებისას, თქვენ არ გჭირდებათ შეკითხვის დიზაინერის ფანჯრის გახსნა და შერჩევის პირობებში ცვლილებების შეტანა. ამის ნაცვლად, მომხმარებელს სთხოვენ შეიყვანოს სასურველი მდგომარეობა, სანამ მოთხოვნა გაშვებულია. PARAMETERS წინადადების თითოეული ტექსტისთვის ეკრანზე ჩნდება დიალოგური ფანჯარა, სადაც აღწერილობიდან თითოეული ტექსტი ასრულებს მინიშნების როლს - კონკრეტულად რა უნდა შეიყვანოთ. დიალოგურ ფანჯარაში უნდა შეიყვანოთ მითითებული ტიპის მონაცემები.

თუ გამოიყენება PARAMETERS პუნქტი, ის უნდა გამოჩნდეს ყველა სხვა განცხადების წინ, მათ შორის SELECT და მთავრდება მძიმით.

PARAMETERS [მიუთითეთ დაწყების თარიღი] DATETIME, [მიუთითეთ დასრულების თარიღი] DATETIME;

WHERE და HAVING პუნქტების შერჩევის პირობებში, შეგიძლიათ გამოიყენოთ ტექსტი მონაცემთა ტიპების მითითების გარეშე. როდესაც მოთხოვნა შესრულებულია, ტექსტი იცვლება შეყვანილი მნიშვნელობით.

PARAMETERS [ჯგუფის მითითება] TEXT; აირჩიეთ სტუდენტი, კლასი

გამოცდებიდან

WHERE [Group]=[ჯგუფის მითითება] და [Item]=1;

მოთხოვნა აბრუნებს საგანში მითითებული ჯგუფის მოსწავლეთა ქულებს 1 კოდით.

ველის GROUP BY პუნქტი აერთიანებს ჩანაწერების ჯგუფს ველების მითითებულ სიაში ერთ ჩანაწერად. თუ SELECT განცხადება შეიცავს ჯგუფის ფუნქციას (მაგალითად, საშუალო ან ჯამი), მაშინ გამოითვლება ჩანაწერის მნიშვნელობა შედეგების კომპლექტში - ჩანაწერების ჯგუფის ჯამი. მაგალითად, თუ "გამოცდების" ცხრილში აჯგუფებთ ჩანაწერებს საგნის მიხედვით, მაშინ საშუალო ფუნქციის გამოყენებით შეგიძლიათ მიიღოთ საგნის საშუალო ქულა. საგნისა და ჯგუფის მიხედვით დაჯგუფება საშუალებას მოგცემთ მიიღოთ მოსწავლეთა ჯგუფების საშუალო ქულები მითითებულ საგანში.

GROUP BY არ არის აუცილებელი პუნქტი. თუ ის იმყოფება SELECT პუნქტში, ის გამოჩნდება FROM პუნქტის შემდეგ.

GROUP BY პუნქტის გამოყენებისას, SELECT პუნქტის ველის სიის ყველა ველი ან უნდა იყოს შეტანილი GROUP BY პუნქტის ველების სიაში ან გამოყენებული იქნას ჯგუფის არგუმენტებად. SQL ფუნქციები.

თუ ჯგუფის ფუნქციები გამოიყენება და GROUP BY პუნქტი არ არის, მაშინ ჯგუფის როლს ასრულებს წყაროს ჩანაწერების მთელი ნაკრები მოთხოვნაში.

SELECT ჯგუფი, სტუდენტი, საშუალო ([კლასი]) AS [საშუალო ქულა] გამოცდებიდან

GROUP BY [ჯგუფი], [სტუდენტი];

თითოეული მოსწავლისთვის გამოითვლება მისი ქულების საშუალო არითმეტიკული.

არასავალდებულო HAVING პუნქტი უნდა გამოჩნდეს GROUP BY-ის შემდეგ. ის განსაზღვრავს დაჯგუფებული ჩანაწერებიდან რომელი მოხვდება შედეგების კომპლექტში. მდგომარეობა HAVING-ში არის რეგულარული ლოგიკური გამოხატულება, ისევე როგორც WHERE-ში. WHERE და HAVING შეიძლება ერთდროულად იყოს წარმოდგენილი SELECT განცხადებაში. ამ შემთხვევაში WHERE ფილტრავს ჩანაწერებს დაჯგუფებამდე, ხოლო HAVING ფილტრავს დაჯგუფებულ ჩანაწერებს (ჯგუფებს).

PARAMETERS [შეიყვანეთ ელემენტის სახელი] TEXT; SELECT ჯგუფი, საგანი, საშუალო ([კლასი]) AS [საშუალო ქულა] FROM Examiners INNER JOIN გამოცდები

ON Examiners.Subject=Exams.Subject

WHERE [Subject Name]=[Enter Subject Name] ჯგუფი ჯგუფის მიხედვით, სტუდენტი

HAVING საშუალო([რეიტინგი])>=4.5 და მინ([რეიტინგი])>2;

შეკითხვა აბრუნებს სტუდენტების სიას მათი საშუალო ქულით. სიაში შედის სტუდენტები, რომლებსაც არ აქვთ წარუმატებელი ქულები და აქვთ მინიმუმ 4,5 ქულა.

TRANSFORM განცხადება გამოიყენება ჯვარედინი შეკითხვის შესაქმნელად. ჯვარედინი შეკითხვით წარმოდგენილი მონაცემები ნაჩვენებია უფრო კომპაქტური ფორმით, ვიდრე შერჩეული მოთხოვნით. სინტაქსი:

TRANSFORM ფუნქცია SELECT ...;

ფუნქცია - ჯგუფური SQL ფუნქცია, რომელიც ამუშავებს ცხრილის უჯრედის მონაცემებს - ველი ან გამოხატულება, საიდანაც მნიშვნელობები ხდება სათაური.

კამის სვეტები.

ცხრილის რეჟიმში მოთხოვნას აქვს იმდენი სვეტი, რამდენსაც ველი იღებს სხვადასხვა მნიშვნელობების რაოდენობას. მაგალითად, თუ ველში გამოსახულია თვეების სახელები, მაშინ იქნება 12-მდე სვეტი, რომელთა სათაურები დალაგებულია ზრდის მიხედვით (აგვისტო, აპრილი...იანვარი). ველის არგუმენტის შემდეგ შეგიძლიათ განათავსოთ IN(value_list) პუნქტი. ფიქსირებული მნიშვნელობები value_list-ში გამოყოფილია მძიმეებით. როდესაც არსებობს IN პუნქტი, თითოეული ველის მნიშვნელობა შედარებულია value_list-ის მნიშვნელობებთან. თუ არის დამთხვევა, ფუნქციის გამოთვლის შედეგი ნაჩვენებია შესაბამის სვეტში. ფიქსირებული სათაურები, რომლებიც არ შეესაბამება რეალურ მონაცემებს, შეიძლება გამოყენებულ იქნას დამატებითი სვეტების შესაქმნელად.

PIVOT პუნქტის გამოყენება უდრის Query Builder თვისებების ფურცელში Column Headers თვისების განსაზღვრას.


Microsoft Access SQL-ისა და ANSI SQL-ის შედარება Microsoft Access SQL არის ძირითადად ANSI-89 (დონე 1) ზოგიერთი ANSI SQL ფუნქცია არ გამოიყენება Microsoft Access SQL-ში Microsoft Access SQL იყენებს რეზერვებულ სიტყვებს და ფუნქციებს, რომლებიც არ არის მხარდაჭერილი ANSI SQL-ის მიერ Access 2000-ში (MS Jet 4.0) დაინერგა გაფართოებები, რომლებიც ენას უახლოვდება ANSI SQL-92 სტანდარტთან - რეჟიმი ხელმისაწვდომია მხოლოდ Jet-ისთვის MS OLE DB პროვაიდერის გამოყენებისას.


SELECT ბრძანების სინტაქსი (Microsoft Access) SELECT [ პრედიკატი ] ( * | ცხრილი.* | [ table.] field_1 [, [ table.] field_2 [,...]]) FROM გამოხატულება [,...] პუნქტი FROM SELECT სიიდან ველები FROM გამონათქვამიდან Expression არის გამოხატულება, რომელიც განსაზღვრავს ერთ ან მეტ ცხრილს, საიდანაც ხდება მონაცემების მოძიება. ეს გამოთქმა შეიძლება იყოს ერთი ცხრილის სახელი, შენახული მოთხოვნის სახელი ან შიდა შეერთების, LEFT JOIN ან RIGHT JOIN ოპერაციების შედეგი. შიდა შეერთება, მარცხნივ შეერთება მარჯვნივ.


SELECT განცხადების არგუმენტები პრედიკატი (ALL, DISTINCT, DISTINCTROW ან TOP) არის შერჩევის ერთ-ერთი პირობა. პრედიკატები გამოიყენება დაბრუნებული ჩანაწერების რაოდენობის შესაზღუდად. თუ ისინი აკლია, ნაგულისხმევი პრედიკატი არის ALL (ირჩევს ყველა ჩანაწერს, რომელიც ემთხვევა SQL განცხადებებში მითითებულ პირობებს - გამორიცხავს ჩანაწერებს, რომლებიც შეიცავს დუბლიკატულ მნიშვნელობებს არჩეულ ველებში). DISTINCTROW - გამოტოვებს მონაცემებს, რომლებიც დაფუძნებულია მთლიან დუბლიკატზე და არა ცალკეულ დუბლიკატ ველებზე. DISTINCTROW პრედიკატი იგნორირებულია, თუ მოთხოვნა შეიცავს მხოლოდ ერთ ცხრილს ან ყველა ცხრილის ყველა ველს. TOP n - აბრუნებს ჩანაწერების მითითებულ რაოდენობას, რომლებიც არის აღწერილი დიაპაზონის დასაწყისში ან ბოლოს ORDER BY პუნქტის გამოყენებით. SELECT ]] 5 ყველაზე მრავალრიცხოვანი დეპარტამენტის ცხრილიდან: SELECT TOP 5 თანამშრომელი.[დეპარტამენტის კოდი], Count(employee.სრული სახელი) AS number_of_employees FROM თანამშრომელი GROUP BY თანამშრომელი.[განყოფილების კოდი] ORDER BY Count(Employee.სრული სახელი) DESC;


SELECT განცხადების არგუმენტები Table - ცხრილის სახელი, საიდანაც უნდა შეირჩეს ჩანაწერები. OWNERACCESS OPTION-ით - გამოიყენება მრავალ მომხმარებლის გარემოში უსაფრთხო სამუშაო ჯგუფი, მომხმარებლის მოთხოვნით მომუშავე მომხმარებლისთვის მიანიჭოს ნებართვები, რომლებიც შეესაბამება მოთხოვნის მფლობელის ნებართვებს. field_1, field_2 - ველების სახელები, საიდანაც უნდა შეირჩეს მონაცემები. თუ თქვენ ჩართავთ რამდენიმე ველს, ისინი მოიძებნება მითითებული თანმიმდევრობით. Alias_1, Alias_2 - სახელები, რომლებიც გახდება სვეტების სათაურები ცხრილის ორიგინალური სვეტების სახელების ნაცვლად. გამოხატულება - ერთი ან რამდენიმე ცხრილის სახელები, რომლებიც შეიცავს შერჩეულ მონაცემებს - მონაცემთა ბაზის სახელი, რომელიც შეიცავს გამოხატვის არგუმენტით მითითებულ ცხრილებს, თუ ისინი არ არის მიმდინარე მონაცემთა ბაზაში. SELECT თანამშრომელი.სრული სახელი, [ხელფასი]*0.5 AS ბონუსი თანამშრომლისგან; SELECT საშუალო(employee.salary) AS Average_salary FROM თანამშრომელი;


რამდენიმე ცხრილის ერთობლივი დამუშავება SELECT თანამშრომელი.სახელი, საგანი.[სუბიექტის მოკლე სახელი] FROM თანამშრომელი INNER JOIN (subject INNER JOIN [ობიექტების საკუთრება] ON სუბიექტზე.[სუბის კოდი] = [ობიექტების საკუთრება].[დისციპლინის კოდი] ) ON თანამშრომელი.კოდი = [საქონლის საკუთრება].[თანამშრომლის კოდი];




შორის...და გამოხატვა 1 BETWEEN გამოსახულებას 2 AND გამოსახულებაში 3 (Microsoft Access SQL-ში, გამოხატულება 2 შეიძლება იყოს 3-ზე მეტი, მაგრამ არა ANSI SQL-ში). SELECT თანამშრომელი.სრული სახელი, თანამშრომელი.ხელფასი FROM თანამშრომელი WHERE (((მუშაკი.ხელფასი) 1000 და 2000 წლამდე)); შეკითხვა: აირჩიეთ თანამშრომელი.სრული სახელი, თანამშრომელი.ხელფასი FROM თანამშრომელი WHERE (((მუშაკი.ხელფასი) 2000 და 1000-ს შორის)); არ წარმოქმნის შეცდომას და იგივე პასუხს იძლევა SELECT თანამშრომელი.სრული სახელი, თანამშრომელი.ხელფასი FROM თანამშრომელი WHERE (((მუშაკი.ხელფასი) 15000)); აირჩიეთ თანამშრომელი.სრული სახელი, თანამშრომელი.ხელფასი FROM თანამშრომელი WHERE (((მუშაკი.ხელფასი) Not Between 1000 And 2000));


ნიმუშის სიმბოლოები Like პრედიკატით გამოიყენება სხვადასხვა ნიმუშის სიმბოლოები. MS Access SQL ANSI SQL ნიმუში სიმბოლო ერთი სიმბოლო? _ (ხაზგასმული) სიმბოლოთა ჯგუფი * % ერთი სიმბოლო შედის სიმბოლოთა_სიაში [სიმბოლოების_სიაში] აკლია ერთი სიმბოლო, რომელიც არ შედის პერსონაჟების_სიაში [! character_list] აკლია ბოლო ორი ვარიანტია Access 2000 ANSI SQL-92 რეჟიმში. თქვენ არ შეგიძლიათ სიმბოლოების შერევა ერთ მოთხოვნაში SELECT staff.full name FROM staff WHERE (((employee.full name) Like "D*"));


პუნქტი GROUP BY SELECT ველების სია ცხრილიდან WHERE შერჩევის პირობა, სადაც დაჯგუფებული ველები არის ველების სახელები (10-მდე), რომლებიც გამოიყენება ჩანაწერების დასაჯგუფებლად. დაჯგუფებული ველების არგუმენტში ველების სახელების თანმიმდევრობა განსაზღვრავს თითოეული ამ ველის დაჯგუფების დონეს. გამოიყენეთ WHERE პუნქტი ჩანაწერების დაჯგუფებიდან გამოსარიცხად და HAVING პუნქტი დაჯგუფების შემდეგ ჩანაწერებზე ფილტრის გამოსაყენებლად. HAVING GROUP BY პუნქტის გამოყენებისას, SELECT განცხადების ველის სიის ყველა ველი უნდა იყოს შეტანილი GROUP BY პუნქტში ან გამოყენებული იქნას როგორც არგუმენტები SQL აგრეგაციის ფუნქციისთვის. განყოფილებები 5-ზე მეტი თანამშრომელი: SELECT co-workers[Department code], Count(co-workers' full name) AS [Number_of_Employees] FROM co-workers GROUP BY co-workers[განყოფილების კოდი] HAVING (((Count(co- მუშათა სრული სახელი))>5 )); 5));">




ჩადგმული შეკითხვა. პრედიკატი არსებობს. SELECT თანამშრომელი კომპანია, Count(Employee თანამშრომელი) AS number_certificate_employee FROM თანამშრომელი WHERE ((არსებობს (SELECT DISTINCT თანამშრომელი კომპანია, თანამშრომელი თანამშრომელი FROM თანამშრომელი INNER JOIN მაგალითი ON თანამშრომელი თანამშრომელი = ინდივიდუალური თანამშრომელი)) False)) GROUP BY co-working company; False)) GROUP BY თანამფლობელი კომპანიის;"> False)) GROUP BY თანამფლობელი კომპანიის;"> False)) GROUP BY თანამფლობელი კომპანიის;" title="Nested query. Predicate Exists. SELECT co -საკუთრებული კომპანია, Count(collaborator) AS ნომერი_certificate_collaborator FROM collaborator WHERE ((არსებობს (SELECT DISTINCT collaborator, collaborator FROM collaborator INNER JOIN instance ON collaborator = instance collaborator)) False)) collaborator BROUPY;"> title="ჩადგმული შეკითხვა. პრედიკატი არსებობს. SELECT თანამშრომელი კომპანია, Count(Employee თანამშრომელი) AS number_certificate_employee FROM თანამშრომელი WHERE ((არსებობს (SELECT DISTINCT თანამშრომელი კომპანია, თანამშრომელი თანამშრომელი FROM თანამშრომელი INNER JOIN მაგალითი ON თანამშრომელი თანამშრომელი = თანამშრომელი თანამშრომელი)) False)) GROUP BY co-working company;"> !}








ქვემოთხოვნის შექმნა QBE Query Builder-ის გამოყენებით თუ თქვენ იყენებთ ქვემოთხოვნას ველის პირობების დასადგენად, შეიყვანეთ SELECT განცხადება ამ ველის სვეტის Selection Condition რიგის უჯრედში. SELECT განცხადება უნდა იყოს ჩასმული ფრჩხილებში.








ჩანაწერების წაშლა. SQL მოთხოვნა (გენერირებული) DELETE DISTINCTROW student.full name FROM student WHERE (((student.full name)="Burlak G. N."));


DELETE განცხადება წაშლის მოთხოვნა წაშლის მთელ ჩანაწერებს და არა მხოლოდ მითითებული ველების შინაარსს. კონკრეტული ველის მონაცემების წასაშლელად, შექმენით ჩანაწერის განახლების მოთხოვნა, რომელიც ჩაანაცვლებს არსებულ მნიშვნელობებს Null მნიშვნელობებით. წაშლის მოთხოვნა მითითებული საძიებო პირობების გარეშე წაშლის ყველა ჩანაწერს ცხრილიდან. DROP ბრძანებისგან განსხვავებით, ცხრილის სტრუქტურა და ყველა თვისება შენარჩუნებულია


ჩანაწერების წაშლა. SQL მოთხოვნა შეკითხვა: DELETE * FROM student WHERE student.Full name="Burlak G. N."; ანალოგიურ შედეგს იძლევა.



















35





41