მონაცემთა ბაზაში ჩანაწერების ჩასმა, წაშლა, განახლება. SQL განცხადებების შესავალი; უმარტივესი SQL მოთხოვნების შექმნა Access-ში SELECT ბრძანების გამოყენებით IN, BETWEEN, LIKE ოპერატორების GROUP BY პუნქტის გამოყენებით

06.04.2023

წესების კვადრატული ფრჩხილები ნიშნავს კონსტრუქციის [არასავალდებულო ნაწილს]. ვერტიკალური ზოლი მიუთითებს არჩევანს შორის (var1|var2). ელიფსისი ნიშნავს შესაძლო გამეორებას რამდენჯერმე - ჯერ 1, ჯერ 2 [, ...]

აირჩიეთ განცხადება

ავალებს მონაცემთა ბაზის ძრავას Microsoft Accessდააბრუნეთ ინფორმაცია მონაცემთა ბაზიდან, როგორც ჩანაწერების ნაკრები.

Სინტაქსი

აირჩიეთ[ პრედიკატი] { * | მაგიდა.* | [მაგიდა.]ველი 1

[, [მაგიდა.]ველი2 [, ...]]}
FROM ცხრილი_გამოთქმა [, ...]




SELECT განცხადება მოიცავს შემდეგ ელემენტებს.

ელემენტი

აღწერა

პრედიკატი

ერთ-ერთი შემდეგი პრედიკატი: ALL, DISTINCT, DISTINCTROW ან TOP. პრედიკატები გამოიყენება დაბრუნებული ჩანაწერების რაოდენობის შესაზღუდად. თუ პრედიკატი არ არის მითითებული, ნაგულისხმევი არის ALL.

განსაზღვრავს, რომ ყველა ველი არჩეულია მოცემული ცხრილიდან ან ცხრილებიდან

მაგიდა

ცხრილის სახელი, რომლის ველებიდანაც არჩეულია ჩანაწერები

ველი 1, ველი2

მოძიებული მონაცემების შემცველი ველების სახელები. თუ მითითებულია რამდენიმე ველი, მონაცემები იქნება აღებული იმ თანმიმდევრობით, რომლითაც მათი სახელებია ჩამოთვლილი.

მეტსახელი 1, მეტსახელი 2

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

ცხრილი_გამოთქმა

ერთი ან მეტი ცხრილის სახელები, რომლებიც შეიცავს ამოსაღებ მონაცემებს.

გარე_მონაცემთა ბაზა

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

შენიშვნები

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

SELECT განცხადებები არ ცვლის მონაცემთა ბაზის მონაცემებს.

SELECT განაცხადი, როგორც წესი, არის SQL განცხადების პირველი სიტყვა (SQL განცხადება (სტრიქონი). გამოთქმა, რომელიც განსაზღვრავს SQL ბრძანებას, როგორიცაა SELECT, UPDATE ან DELETE და მოიცავს პუნქტებს, როგორიცაა WHERE ან ORDER BY. SQL განცხადებები/ სტრიქონები ჩვეულებრივ გამოიყენება შეკითხვებში და აგრეგატულ ფუნქციებში.). SQL განცხადებების უმეტესობა არის SELECT ან SELECT...INTO განცხადებები.

SELECT განცხადების მინიმალური სინტაქსი ასეთია:

აირჩიეთ ველები FROM მაგიდა

თქვენ შეგიძლიათ გამოიყენოთ ვარსკვლავი (*) ცხრილის ყველა ველის შესარჩევად. შემდეგი მაგალითი ირჩევს ყველა ველს Employees ცხრილში.

SELECT * FROM Employees;

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

აირჩიეთ თანამშრომლები. დეპარტამენტი, ხელმძღვანელები. Executive Name FROM Employees INNER JOIN Executives WHERE Employees. დეპარტამენტი = ხელმძღვანელები. დეპარტამენტი;

RecordSet ობიექტის შექმნისას, ცხრილის ველის სახელს იყენებს Microsoft Access მონაცემთა ბაზის ძრავა, როგორც ობიექტის "Field" ობიექტის სახელი. რეკორდული ნაკრები. თუ ველის სახელი უნდა შეიცვალოს ან არ არის მოწოდებული გამონათქვამით, რომელიც ქმნის ველს, გამოიყენეთ რეზერვირებული სიტყვა (Reserved word. A სიტყვა, რომელიც არის ენის ელემენტი, როგორიცაა Visual Basic ენა. ოპერატორები და ობიექტები.) AS. შემდეგი მაგალითი გვიჩვენებს, თუ როგორ გამოიყენება "Day" სათაური დაბრუნებული ობიექტის დასასახელებლად ველიმიღებულ ობიექტში რეკორდული ნაკრები.

SELECT დაბადების დღე AS Day FROM თანამშრომლებისგან;

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

SELECT COUNT(EmployeeCode) AS Census FROM Employees;

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

პუნქტი FROM

განსაზღვრავს ცხრილებს და შეკითხვებს, რომლებიც შეიცავს SELECT განცხადებაში ჩამოთვლილ ველებს.

Სინტაქსი

აირჩიეთ ველი_სიტი
FROM ცხრილი_გამოთქმა

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

ელემენტი

აღწერა

ველი_სიტი

ცხრილი_გამოთქმა

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

გარე_მონაცემთა ბაზა

სრული გზა გარე მონაცემთა ბაზაში, რომელიც შეიცავს ყველა ცხრილს მითითებულ ცხრილი_გამოთქმა

შენიშვნები


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

ცხრილების განლაგება ცხრილი_გამოთქმაარ აქვს მნიშვნელობა.

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

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

აირჩიეთ გვარი, სახელი

თანამშრომლებისგან;

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

Სინტაქსი

აირჩიეთ ]]
FROM მაგიდა

SELECT განცხადება, რომელიც შეიცავს ამ პრედიკატებს, მოიცავს შემდეგ კომპონენტებს:

Კომპონენტი

აღწერა

იგულისხმება, თუ არცერთი პრედიკატი არ არის ჩართული. Microsoft Access მონაცემთა ბაზის ძრავა ირჩევს ყველა ჩანაწერს, რომელიც ემთხვევა SQL განცხადების პირობებს (SQL განცხადება (სტრიქონი). გამოხატულება, რომელიც განსაზღვრავს SQL ბრძანებას, როგორიცაა SELECT, UPDATE ან DELETE და მოიცავს პუნქტებს, როგორიცაა WHERE ან ORDER BY. SQL განცხადებები/სტრიქონები ჩვეულებრივ გამოიყენება შეკითხვებში და აგრეგატულ ფუნქციებში.). შემდეგი ორი იდენტური მაგალითი გვიჩვენებს, თუ როგორ უნდა დააბრუნოთ ყველა ჩანაწერი თანამშრომლების ცხრილში.

თანამშრომლებისგან

შეკვეთა EmployeeCode-ით;

თანამშრომლებისგან

შეკვეთა EmployeeCode-ით;

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

აირჩიეთ განსხვავებული

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

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

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

გამორიცხავს ჩანაწერის მონაცემებს, რომლებიც მთლიანად მეორდება და არ შეიცავს ცალკეულ ველებს იგივე მონაცემებით. დავუშვათ, რომ შეიქმნა მოთხოვნა, რომელიც უერთდება "მომხმარებლების" და "შეკვეთების" ცხრილებს "CustomerCode" ველში. კლიენტების ცხრილი არ შეიცავს კლიენტის ID-ის დუბლიკატ ველებს, მაგრამ ისინი არსებობენ შეკვეთების ცხრილში, რადგან თითოეულ მომხმარებელს შეიძლება ჰქონდეს რამდენიმე შეკვეთა. შემდეგი SQL განცხადება გვიჩვენებს, თუ როგორ გამოვიყენოთ DISTINCTROW კომპონენტი იმ ორგანიზაციების სიაში, რომლებმაც განათავსეს მინიმუმ ერთი შეკვეთა ამ შეკვეთების დეტალების ხსენების გარეშე.

აირჩიეთ განმასხვავებელი სახელი მომხმარებელთა INNER JOIN შეკვეთებიდან

კლიენტებზე. კლიენტის კოდი = შეკვეთები. კლიენტის კოდი

შეკვეთა სათაურის მიხედვით;

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

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

TOP

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

Სახელი გვარი

WHERE გამოსაშვები წელი = 2003

ORDER BY GradePointAverage DESC;

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

TOP პრედიკატი არ საჭიროებს არჩევანს თანაბარ მნიშვნელობებს შორის. თუ წინა მაგალითის 25-ე და 26-ე ჩანაწერებს აქვთ იგივე GPA, მოთხოვნა დააბრუნებს 26 ჩანაწერს.

თქვენ ასევე შეგიძლიათ გამოიყენოთ PERCENT დაჯავშნილი სიტყვა პირველი ან ბოლო შენატანების გარკვეული პროცენტის დასაბრუნებლად ORDER BY პუნქტით მითითებულ დიაპაზონში. დავუშვათ, რომ ტოპ 25-ის ნაცვლად, გსურთ გამოაჩინოთ სტუდენტების ქვედა 10% დამთავრებისას.

აირჩიეთ ტოპ 10 პროცენტი

Სახელი გვარი

WHERE გამოსაშვები წელი = 2003

ORDER BY GradePointAverage ASC;

ASC პრედიკატი განსაზღვრავს მნიშვნელობების გამომავალს დიაპაზონის ქვედა ნაწილიდან. მნიშვნელობა, რომელიც მოჰყვება TOP პრედიკატს, უნდა იყოს მთელი რიცხვის ტიპის მნიშვნელობა (მთლიანი მონაცემთა ტიპი. მონაცემთა ძირითადი ტიპი, რომელიც გამოიყენება მთელი რიცხვების შესანახად. მთელი რიცხვი ცვლადი ინახება 64-ბიტიანი (8-ბაიტი) რიცხვის სახით -32768 დიაპაზონში. 32767-მდე. ) ხელმოუწერელი.

TOP პრედიკატი გავლენას არ ახდენს მოთხოვნის განახლების უნარზე.

მაგიდა

ცხრილის სახელი, საიდანაც აღებულია ჩანაწერები.

იხილეთ ასევე

აირჩიეთ განცხადება

პუნქტი FROM

WHERE პუნქტი

განსაზღვრავს, თუ რომელი ჩანაწერები მუშავდება FROM პუნქტში ჩამოთვლილი ცხრილებიდან SELECT, UPDATE ან DELETE განცხადებებით.

Სინტაქსი

აირჩიეთ ველი_სიტი
FROM ცხრილი_გამოთქმა
სად შერჩევის_პირობები

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

ნაწილი

აღწერა

ველი_სიტი

ველის ან ველების მოძიებული სახელი ნებისმიერ მეტსახელთან ერთად (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამოხატულებაში. ფსევდონიმები ჩვეულებრივ გამოიყენება როგორც ცხრილის ან ველების უფრო მოკლე სახელები პროგრამებში მოგვიანებით მითითების გასაადვილებლად, ორაზროვანი მითითებების თავიდან ასაცილებლად და უფრო აღწერილობითი სახელების მოთხოვნის შედეგების ჩვენებისას.), პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების ნებისმიერი სხვა ვარიანტით.

ცხრილი_გამოთქმა

ცხრილის ან ცხრილების სახელი, საიდანაც მიღებულია მონაცემები.

შერჩევის_პირობები

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

შენიშვნები

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

WHERE პუნქტი არ არის საჭირო, მაგრამ თუ ასეა, უნდა დაიცვას FROM პუნქტი. მაგალითად, შეგიძლიათ აირჩიოთ ყველა თანამშრომელი გაყიდვების განყოფილებიდან (WHERE დეპარტამენტი = "გაყიდვები") ან 18-დან 30 წლამდე ასაკის ყველა მომხმარებელი (WHERE ასაკი 18-დან 30 წლამდე).

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

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

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

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

SELECT გვარი, ხელფასი FROM Employees WHERE ხელფასი > 21000;

WHERE პუნქტი შეიძლება შეიცავდეს 40-მდე გამონათქვამს, რომლებიც დაკავშირებულია ლოგიკური ოპერატორებით (მაგალითად, დადა ან).

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

აირჩიეთ [მომხმარებლის საყვარელი რესტორანი]

არგუმენტის მიცემით შერჩევის_პირობები, თარიღის ლიტერალები (თარიღი ლიტერალი. მოქმედი ფორმატის სიმბოლოების ნებისმიერი თანმიმდევრობა ჩასმულია რიცხვების ნიშნებში (#). მოქმედი ფორმატებია ენისა და სტანდარტების პარამეტრებში მითითებული თარიღის ფორმატი და თარიღის უნივერსალური ფორმატი.) უნდა იყოს წარმოდგენილი აშშ-ს ფორმატში, თუნდაც თუ გამოიყენება არაამერიკული ფორმატი. Microsoft Access მონაცემთა ბაზის ძრავის ვერსია. მაგალითად, თარიღი "1996 წლის 10 მაისი" იწერება როგორც 10/5/96 დიდ ბრიტანეთში და როგორც 05/10/1996 რუსეთში. დაიმახსოვრეთ, რომ თარიღის ლიტერალი ჩაურთოთ რიცხვის ნიშნებში (#), როგორც ეს ნაჩვენებია ქვემოთ მოცემულ მაგალითებში.

გაერთიანებული სამეფოს მონაცემთა ბაზაში 1996 წლის 10 მაისის ჩანაწერების მოსაძებნად გამოიყენეთ შემდეგი SQL განცხადება:

SELECT * FROM Orders WHERE ShipDate = #10.05.1996#;

თქვენ ასევე შეგიძლიათ გამოიყენოთ ფუნქცია DateValue, მიერ დადგენილი საერთაშორისო პარამეტრების ამოცნობა Microsoft Windows®. მაგალითად, რუსეთისთვის გამოიყენეთ შემდეგი კოდი:

SELECT * FROM Orders WHERE მიწოდების თარიღი = DateValue("05/10/1996");

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

SELECT * FROM Orders WHERE ShippingDate = DateValue("10/5/96");

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

WHERE ReplicaID=(GUID(AB-CDEF0ABCDEF))

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

წყაროს გვერდი: http://office. /en-us/access/HA.aspx? pid=CH

GROUP BY შეთავაზება

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

Სინტაქსი

აირჩიეთ ველი_სიტი
FROM მაგიდა
სად შერჩევა_მდგომარეობა

SELECT განცხადება, რომელიც შეიცავს GROUP BY პუნქტს, მოიცავს შემდეგ ელემენტებს:

ელემენტი

აღწერა

ველი_სიტი

მოძიებული ველების სახელები ნებისმიერ მეტსახელთან ერთად (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამონათქვამში. ფსევდონიმები ჩვეულებრივ გამოიყენება როგორც უფრო მოკლე ცხრილი ან ველების სახელები პროგრამებში შემდგომი მითითების გასაადვილებლად, ორაზროვანი მითითებების თავიდან ასაცილებლად, და უფრო ინფორმაციული სახელების მოპოვება შეკითხვის შედეგების ჩვენებისას.) და სტატისტიკური SQL ფუნქციები, პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების სხვა ვარიანტები

მაგიდა

შერჩევის_პირობები

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

ჯგუფი_ველის_სიტი

ჯგუფი_ველის_სიტი

შენიშვნები

GROUP BY პუნქტი არჩევითია.

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

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

WHERE პუნქტი გამოიყენება რიგების გამოსარიცხად, რომლებიც არ საჭიროებს დაჯგუფებას. HAVING პუნქტი გამოიყენება დაჯგუფების შემდეგ ჩანაწერების გასაფილტრად.

ველები GROUP BY ველების სიიდან, რომლებიც არ შეიცავს Memo ტიპის მონაცემებს (მონაცემთა ტიპი "MEMO Field". ველის მონაცემთა ტიპი Microsoft Access მონაცემთა ბაზაში. Memo ველი შეიძლება შეიცავდეს 65535 სიმბოლომდე.) ან OLE Object ( მონაცემთა ტიპი "OLE Object Field". ველის მონაცემთა ტიპი, რომელიც გამოიყენება სხვა აპლიკაციების ობიექტების შესანახად, რომლებიც დაკავშირებულია ან ჩართულია Microsoft Access მონაცემთა ბაზაში.) შეიძლება მიუთითებდეს ნებისმიერ ველზე FROM პუნქტში მითითებულ ნებისმიერ ცხრილში, მაშინაც კი, თუ ველი არ არის შედის SELECT განცხადებაში. ამისათვის საკმარისია გქონდეთ მინიმუმ ერთი SQL აგრეგატული ფუნქცია SELECT განცხადებაში. Microsoft Access მონაცემთა ბაზის ძრავა არ იძლევა დაჯგუფებას ველების მიხედვით, რომლებიც შეიცავს "MEMO ველის" ან "OLE ობიექტის" ტიპის მონაცემებს.

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

იხილეთ ასევე

აირჩიეთ განცხადება

SELECT...INTO განცხადება

პრედიკატები ALL, DISTINCT, DISTINCTROW, TOP

პუნქტი FROM

შეთავაზება

შეუკვეთეთ შეთავაზებით

WHERE პუნქტი

SQL სტატისტიკური ფუნქციები

წყაროს გვერდი: http://office. /en-us/access/HA.aspx? pid=CH

შეთავაზება

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

Სინტაქსი

აირჩიეთ ველი_სიტი
FROM მაგიდა
სად არჩევანი_პირობები
ᲘᲗ ᲓᲐᲯᲒᲣᲤᲔᲑᲐ ჯგუფი_ველის_სიტი

SELECT განცხადება, რომელიც შეიცავს HAVING პუნქტს, მოიცავს შემდეგ ელემენტებს:

ელემენტი

აღწერა

ველი_სიტი

ნებისმიერი მეტსახელით დატვირთული ველების სახელები (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამოხატულებაში. მეტსახელები ჩვეულებრივ გამოიყენება როგორც უფრო მოკლე ცხრილი ან ველების სახელები პროგრამებში შემდგომი მითითების გასაადვილებლად, ორაზროვანი მითითებების თავიდან ასაცილებლად, და უფრო მნიშვნელოვანი სახელების მისაღებად შეკითხვის შედეგების ჩვენებისას.) და SQL აგრეგატები, პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების სხვა ვარიანტები.

მაგიდა

ცხრილის სახელი, საიდანაც იტვირთება ჩანაწერები

შერჩევა_მდგომარეობა

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

ჯგუფი_ველის_სიტი

ველების სახელები (მაქსიმუმ 10) გამოიყენება ჩანაწერების დასაჯგუფებლად. სახელის თანმიმდევრობა ჯგუფი_ველის_სიტიგანსაზღვრავს დაჯგუფების დონეს - უმაღლესიდან ყველაზე დაბალამდე

ჯგუფი_მდგომარეობა

გამოთქმა, რომელიც განსაზღვრავს რომელი ჩანაწერების ჩვენებას

შენიშვნები

HAVING პუნქტი არჩევითია.

HAVING პუნქტი ჰგავს WHERE პუნქტს, რომელიც განსაზღვრავს ჩანაწერების შერჩევას. ჩანაწერების დაჯგუფების შემდეგ GROUP BY პუნქტით, HAVING პუნქტი განსაზღვრავს რომელი ჩანაწერების ჩვენებას.

SELECTTypeCode,

ჯამი (საწყობში)

პროდუქტებიდან

ჯგუფი TypeCode-ის მიხედვით

HAVING Sum(InStock) > 100 და Like "TEL*";

HAVING პუნქტი შეიძლება შეიცავდეს 40-მდე გამონათქვამს, რომლებიც დაკავშირებულია ლოგიკური ოპერატორებით, როგორიცაა დადა ან.

წყაროს გვერდი: http://office. /en-us/access/HA.aspx? pid=CH

შეუკვეთეთ შეთავაზებით

ახარისხებს მოთხოვნის მიერ დაბრუნებულ ჩანაწერებს ზრდადობით ან კლებადობით მითითებული ველ(ებ)ის მნიშვნელობებით.

Სინტაქსი

აირჩიეთ ველი_სიტი
FROM მაგიდა
სად შერჩევა_მდგომარეობა
[, ველი2 ][, ...]]]

SELECT განცხადება, რომელიც შეიცავს ORDER BY პუნქტს მოიცავს შემდეგ ელემენტებს.

ელემენტი

აღწერა

ველი_სიტი

მოძიებული ველების სახელები ნებისმიერ მეტსახელთან ერთად (Alias ​​(SQL). ცხრილის ან ველის ალტერნატიული სახელი გამონათქვამში. ფსევდონიმები ჩვეულებრივ გამოიყენება როგორც უფრო მოკლე ცხრილი ან ველების სახელები პროგრამებში შემდგომი მითითების გასაადვილებლად, ორაზროვანი მითითებების თავიდან ასაცილებლად, და უფრო მნიშვნელოვანი სახელების მისაღებად შეკითხვის შედეგების ჩვენებისას.) და SQL აგრეგატები, პრედიკატები (ALL, DISTINCT, DISTINCTROW ან TOP) ან SELECT განცხადების სხვა ვარიანტები.

მაგიდა

ცხრილის სახელი, საიდანაც აღებულია ჩანაწერები

შერჩევის_პირობები

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

ველი 1, ველი2

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

შენიშვნები

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

ნაგულისხმევი დალაგების თანმიმდევრობა არის (დახარისხების თანმიმდევრობა. მონაცემთა შეკვეთის გზა მისი მნიშვნელობებისა და ტიპების მიხედვით. მონაცემები შეიძლება დალაგდეს ანბანურად, რიცხვითი მნიშვნელობებიან თარიღით. დალაგების თანმიმდევრობა შეიძლება იყოს აღმავალი (0-დან 100-მდე, A-დან Z-მდე) ან კლებადობით (100-დან 0-მდე, Z-მდე A.) აღმავალი (A-დან Z-მდე, 0-დან 9-მდე). ქვემოთ მოყვანილი მაგალითები აჩვენებს თანამშრომელთა სახელების დახარისხებას გვარის მიხედვით.

აირჩიეთ გვარი, სახელი

თანამშრომლებისგან

შეკვეთა გვარის მიხედვით;

აირჩიეთ გვარი, სახელი

თანამშრომლებისგან

შეკვეთა გვარის მიხედვით ASC;

ველების კლებადობით დასალაგებლად (Z-დან A-მდე, 9-დან 0-მდე), დაამატეთ დაცული სიტყვა DESC თითოეული ამ ველის სახელს. შემდეგი მაგალითი დალაგებულია კლებადობით, თანამშრომელთა ხელფასების მიხედვით.

აირჩიეთ გვარი, ხელფასი

თანამშრომლებისგან

შეკვეთა ხელფასის მიხედვით DESC, გვარი;

თუ ORDER BY პუნქტში მიუთითებთ ველებს, რომლებიც შეიცავს MEMO ველის ტიპის მონაცემებს (მონაცემთა ტიპი "MEMO Field". ველის მონაცემთა ტიპი Microsoft Access მონაცემთა ბაზაში. MEMO ველი შეიძლება შეიცავდეს 65535 სიმბოლომდე.) ან OLE ობიექტი. ველი (მონაცემთა ტიპი "OLE Object Field". ველის მონაცემთა ტიპი გამოიყენება სხვა აპლიკაციების ობიექტების შესანახად, რომლებიც დაკავშირებულია ან ჩართულია Microsoft Access მონაცემთა ბაზაში.), ეს გამოიწვევს შეცდომას. Microsoft Access მონაცემთა ბაზის ძრავას არ შეუძლია ამ ტიპის ველების დალაგება.

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

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

აირჩიეთ განცხადება

SELECT...INTO განცხადება

პრედიკატები ALL, DISTINCT, DISTINCTROW, TOP

პუნქტი FROM

GROUP BY შეთავაზება

შეთავაზება

WHERE პუნქტი

SQL სტატისტიკური ფუნქციები

წყაროს გვერდი: http://office. /en-us/access/HA.aspx? pid=CH

შიდა შეერთების ოპერაცია

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

Სინტაქსი

FROM ცხრილი 1შიდა შეერთება მაგიდა 2ჩართულია ცხრილი 1.ველი 1 შედარება_ოპერატორის ცხრილი2.ველი2

INNER JOIN ოპერაცია შედგება შემდეგი ელემენტებისაგან:

ელემენტი

აღწერა

ცხრილი 1, მაგიდა 2

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

ველი 1, ველი2

დაკავშირებული ველების სახელები. ველები, რომლებიც არ არის რიცხვითი, უნდა იყოს იგივე ტიპის მონაცემთა (მონაცემთა ტიპი. ველის მახასიათებელი, რომელიც განსაზღვრავს მონაცემთა ტიპს, რომელიც შეიძლება შეიცავდეს ამ ველს. ხელმისაწვდომია მონაცემთა შემდეგი ტიპები: Boolean, Integer, Long, Currency, Single, Double, თარიღი, სტრიქონი და ვარიანტი (ნაგულისხმევი).) და შეიცავს იმავე ტიპის მონაცემებს. თუმცა, ამ ველების სახელები შეიძლება განსხვავებული იყოს.

შედარება_ოპერატორი

ნებისმიერი შედარების ოპერატორი: (=,<, >, <=, >= ან<>)

SELECT განცხადება ავალებს Microsoft Access მონაცემთა ბაზის ძრავას დააბრუნოს ინფორმაცია მონაცემთა ბაზიდან, როგორც ჩანაწერების ნაკრები.

Სინტაქსი

აირჩიეთ[ პრედიკატი] { * | მაგიდა.* | [მაგიდა.]ველი 1 [, [მაგიდა.]ველი2 [, ...]]}
FROM ცხრილი_გამოთქმა [, ...]




SELECT განცხადება მოიცავს შემდეგ ელემენტებს.

ელემენტი

აღწერა

პრედიკატი

ერთ-ერთი შემდეგი პრედიკატი: ALL, DISTINCT, DISTINCTROW ან TOP. პრედიკატები გამოიყენება დაბრუნებული ჩანაწერების რაოდენობის შესაზღუდად. თუ პრედიკატი არ არის მითითებული, ნაგულისხმევი არის ALL.

განსაზღვრავს, რომ ყველა ველი არჩეულია მითითებული ცხრილიდან ან ცხრილებიდან.

მაგიდა

ცხრილის სახელი, რომელიც შეიცავს ველებს არჩეული ჩანაწერებით.

ველი 1, ველი2

მოძიებული მონაცემების შემცველი ველების სახელები. თუ მითითებულია რამდენიმე ველი, მონაცემები იქნება აღებული იმ თანმიმდევრობით, რომლითაც მათი სახელებია ჩამოთვლილი.

მეტსახელი 1, მეტსახელი 2

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

ცხრილი_გამოთქმა

ერთი ან მეტი ცხრილის სახელები, რომლებიც შეიცავს ამოსაღებ მონაცემებს.

გარე_მონაცემთა ბაზა

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

შენიშვნები.

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

SELECT განცხადებები არ ცვლის მონაცემებს მონაცემთა ბაზაში.

SELECT ჩვეულებრივ არის პირველი სიტყვა SQL განცხადებაში. SELECT და SELECT...INTO ყველაზე გავრცელებული SQL განცხადებებია.

SELECT განცხადების მინიმალური სინტაქსი ასეთია:

აირჩიეთ ველები FROM მაგიდა

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

SELECT * FROM Employees;

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

SELECT Employees.Department, Supervisors.SupvName FROM Employees INNER JOIN ზედამხედველები WHERE Employees.Department = Supervisors.Department;

RecordSet ობიექტის შექმნისას, ცხრილის ველის სახელს იყენებს Microsoft Access DBMS ძრავა, როგორც ობიექტის "Field" ობიექტის სახელი. ჩანაწერების ნაკრები. თუ ველის სახელი უნდა შეიცვალოს ან არ არის გათვალისწინებული გამონათქვამით, რომელიც ქმნის ველს, გამოიყენეთ AS რეზერვირებული სიტყვა. შემდეგი მაგალითი გვიჩვენებს, თუ როგორ გამოიყენება "დაბადების თარიღი" სათაური დაბრუნებული ობიექტის დასასახელებლად ველიმიღებულ ობიექტში ჩანაწერების ნაკრები.

SELECT დაბადების თარიღი, როგორც დაბადების თანამშრომლები;

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

SELECT COUNT(EmployeeID) AS HeadCount FROM Employees;

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

ლაბორატორია #1

SQL: RETRIEVE DATA - ბრძანებააირჩიეთ

სამუშაოს მიზანი:

  • გაეცანით SQL განცხადებებს
  • ისწავლეთ როგორ შექმნათ მარტივი SQL მოთხოვნები Access-ში SELECT ბრძანების გამოყენებით;

· ოპერატორების გამოყენება IN, BETWEEN, LIKE, IS NULL.

ვარჯიში№1. შექმენით მოთხოვნა SQL რეჟიმში შესარჩევად STUDENTS ცხრილიდან FIRST NAME და LAST NAME ველების ყველა მნიშვნელობის შესარჩევად.

აირჩიეთ სახელი, გვარი

სტუდენტებისგან;

ვარჯიში№2 . შექმენით შერჩეული მოთხოვნა SQL რეჟიმში STUDENTS ცხრილის ყველა სვეტისთვის.

აირჩიეთ *

სტუდენტებისგან;


დავალება ნომერი 3.შექმენით მოთხოვნა SQL რეჟიმში იმ ქალაქების სახელების შესარჩევად, სადაც სტუდენტები ცხოვრობენ, რომელთა შესახებ ინფორმაცია მოცემულია პერსონალური მონაცემების ცხრილში.

აირჩიეთ განსხვავებული ქალაქი

[პერსონალური მონაცემებიდან];

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

აირჩიეთ გვარი, სახელი

სტუდენტებისგან

WHERE გვარი = "ივანოვი";

დავალება ნომერი 5. შექმენით მოთხოვნა შერჩევისთვის SQL რეჟიმში, რათა მიიღოთ სტუდენტების სახელები და გვარები, რომლებიც სწავლობენ UIT-22 ჯგუფში განათლების ბიუჯეტით დაფინანსებულ ფორმაზე.

აირჩიეთ გვარი, სახელი

სტუდენტებისგან

WHERE GROUP="HIT-22" და BUDGET=true;

დავალება ნომერი 6. შექმენით მოთხოვნა SQL რეჟიმში. გამოცდის ჩაბარების ცხრილის ნიმუშისთვის, ინფორმაცია მხოლოდ 4 და 5 კლასების სტუდენტების შესახებ.

აირჩიეთ *

FROM[შეცვლაგამოცდები]

სადკლასიIN (4.5);

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

აირჩიეთ *

FROM[შეცვლაგამოცდები]

სადITEM=" ISSU"დაკლასიNot In (4.5);

დავალება ნომერი 8.შექმენით მოთხოვნა SQL რეჟიმში, რათა აირჩიოთ ჩანაწერები იმ ნივთებისთვის, რომელთა საათებია 100-დან 130-მდე.

აირჩიეთ *

FROMITEMS

სადᲣᲧᲣᲠᲔᲑᲡ100-დან 130-მდე;


დავალება ნომერი 9.შექმენით შეკითხვა SQL რეჟიმში, რათა აირჩიოთ STUDENTS ცხრილიდან ინფორმაცია სტუდენტების შესახებ, რომელთა გვარები იწყება, მაგალითად, ასო "C"-ით.

აირჩიეთ *

FROMსტუდენტები

სადგვარიმოწონება"თან*";

დასკვნა:დროს ლაბორატორიული სამუშაოგაეცნო SQL განცხადებებს, ისწავლა მარტივი SQL მოთხოვნების შექმნა Access-ში SELECT ბრძანების გამოყენებით IN, BETWEEN, LIKE ოპერატორების გამოყენებით.

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

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

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

აირჩიეთ *
FROM m_product
WHERE id IN (SELECT product_id FROM m_income);

მოთხოვნა Q012.ნაჩვენებია პროდუქტების სია m_product ცხრილიდან, რომელთა კოდები არ არის m_outcome ცხრილში:

აირჩიეთ *
FROM m_product
WHERE id NOT IN (SELECT product_id FROM m_outcome);

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

აირჩიეთ DISTINCT product_id, სათაური
FROM m_income INNER JOIN m_product
ON m_income.product_id=m_product.id
WHERE product_id NOT IN (SELECT product_id FROM m_outcome);

მოთხოვნა Q014. m_category ცხრილიდან ნაჩვენებია კატეგორიების უნიკალური სია, რომელთა სახელები იწყება ასო M-ით:

აირჩიეთ განსხვავებული სათაური
FROM m_product
WHERE სათაური LIKE "M*";

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


თანხა*ფასი/100*7 AS მოგება
FROM m_შედეგი;

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

SELECT dt, product_id, თანხა, ფასი, თანხა*ფასი AS outcome_sum,
შედეგი_ჯამ *0.07 AS მოგება
FROM m_შედეგი;

მოთხოვნა Q017. INNER JOIN განაცხადის გამოყენებით, შეგიძლიათ დააკავშიროთ მონაცემები მრავალი ცხრილიდან. შემდეგ მაგალითში, ctgry_id-ის მნიშვნელობიდან გამომდინარე, m_income ცხრილის თითოეული ჩანაწერი ემთხვევა იმ კატეგორიის სახელს m_category ცხრილიდან, რომელსაც ეკუთვნის პროდუქტი:

აირჩიეთ c.title, b.title, dt, თანხა, ფასი, თანხა*ფასი AS შემოსავალი_ჯამად
FROM (მ_შემოსავალი AS INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
ORDER BY c.title, b.title;

მოთხოვნა Q018.ისეთ ფუნქციებს, როგორიცაა SUM - ჯამი, COUNT - რაოდენობა, AVG - საშუალო არითმეტიკული, MAX - მაქსიმალური მნიშვნელობა, MIN - მინიმალური მნიშვნელობა ეწოდება აგრეგატის ფუნქციებს. ისინი იღებენ მრავალ მნიშვნელობას და დამუშავებისას აბრუნებენ ერთ მნიშვნელობას. ველების ოდენობისა და ფასის ნამრავლის ჯამის გამოთვლის მაგალითი SUM აგრეგატის ფუნქციის გამოყენებით.

ეს გაკვეთილი ეხება SQL შეკითხვავარმონაცემთა ბაზაში VBA წვდომა. ჩვენ შევხედავთ, თუ როგორ ხორციელდება VBA მოთხოვნები მონაცემთა ბაზაში INSERT, UPDATE, DELETE და ასევე ვისწავლით თუ როგორ მივიღოთ კონკრეტული მნიშვნელობა SELECT მოთხოვნიდან.

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

ჩვენ უკვე შევეხეთ SQL სერვერიდან მონაცემების მოპოვების თემას, სადაც დავწერეთ კოდი VBA-ში ამ მონაცემების მოსაპოვებლად, მაგალითად, სტატიაში MSSql 2008-დან ტექსტურ ფაილში მონაცემების ატვირთვის შესახებ, ან ცოტა შევეხეთ მასალას. მონაცემთა ატვირთვა წვდომიდან Word-სა და Excel-ის შაბლონიდან. მაგრამ ასე თუ ისე, ჩვენ ეს ზედაპირულად განვიხილეთ და დღეს მე ვთავაზობ ამაზე ცოტა უფრო დეტალურად ვისაუბროთ.

Შენიშვნა! ქვემოთ მოყვანილი ყველა მაგალითი განხილულია Access 2003 ADP პროექტის და MSSql 2008 მონაცემთა ბაზის გამოყენებით.

საწყისი მონაცემები მაგალითებისთვის

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

შექმენით მაგიდა .( NOT NULL, (50) NULL) GO

როგორც ვთქვი, ჩვენ გამოვიყენებთ ADP პროექტს, რომელიც არის კონფიგურირებული MS SQL 2008-თან მუშაობისთვის, რომელშიც შევქმენი ტესტის ფორმა და დავამატე დაწყების ღილაკი წარწერით. "გაიქცე", რომელიც დაგვჭირდება ჩვენი კოდის შესამოწმებლად, ე.ი. ჩვენ დავწერთ ყველა კოდს მოვლენის დამმუშავებელში " ღილაკის დაჭერა».

მონაცემთა ბაზის მოთხოვნები VBA-ში INSERT, Update, DELETE

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

Private Sub start_Click() "გამოაცხადეთ ცვლადი შეკითხვის სტრიქონის შესანახად Dim sql_query როგორც სტრიქონი "ჩაწერეთ მასში საჭირო მოთხოვნა sql_query = "INSERT INTO test_table (id, name_mon) VALUES ("6", "June")" "Execute ის DoCmd-ით RunSQL sql_query End Sub

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

როგორც ხედავთ, მონაცემები ჩასმულია.

ერთი ხაზის წასაშლელად, ჩვენ ვწერთ შემდეგ კოდს.

Private Sub start_Click() "გამოაცხადეთ ცვლადი შეკითხვის სტრიქონის შესანარჩუნებლად Dim sql_query როგორც სტრიქონი "ჩაწერეთ მასში წაშლის მოთხოვნა sql_query = "წაშალე test_table WHERE id = 6" "შეასრულე DoCmd.RunSQL sql_query End Sub

თუ შევამოწმებთ, ვნახავთ, რომ სასურველი ხაზი წაშლილია.

მონაცემების გასაახლებლად ჩაწერეთ sql_query ცვლადზე განახლების მოთხოვნაიმედი მაქვს, აზრი ნათელია.

აირჩიეთ მოთხოვნა მონაცემთა ბაზაში VBA-ში

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

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

Private Sub start_Click() "ცვლადების გამოცხადება" მონაცემთა ბაზიდან ჩანაწერების ნაკრებისთვის Dim RS As ADODB.Recordset "Query string Dim sql_query As String "სტრიქონი მთლიანი მონაცემების ჩვენებისთვის შეტყობინებაში Dim str As String "ახალი ობიექტის შექმნა ჩანაწერების ნაკრებისთვის RS = ახალი ADODB .ჩანაწერების ნაკრები "Query string sql_query = "SELECT id, name_mon FROM test_table" "შეასრულეთ მოთხოვნა პროექტის კავშირის მიმდინარე პარამეტრების გამოყენებით შეტყობინების str = str & RS.Fields("id") & "-" & RS. Fields("name_mon") & vbnewline "გადადით შემდეგ ჩანაწერზე RS.MoveNext Wend "გამომავალი შეტყობინების გაგზავნა msgbox str ბოლო ქვე

აქ ჩვენ უკვე ვიყენებთ VBA წვდომის მარყუჟებს ჩვენი ჩანაწერების ნაკრების ყველა მნიშვნელობის გადასატანად.

მაგრამ, საკმაოდ ხშირად საჭიროა არა ყველა მნიშვნელობის მიღება ჩანაწერების ნაკრებიდან, არამედ მხოლოდ ერთი, მაგალითად, თვის სახელი მისი კოდით. და ამისათვის, მარყუჟის გამოყენება გარკვეულწილად ძვირია, ასე რომ, ჩვენ შეგვიძლია უბრალოდ დავწეროთ მოთხოვნა, რომელიც დააბრუნებს მხოლოდ ერთ მნიშვნელობას და მივმართავთ მას, მაგალითად, ჩვენ მივიღებთ თვის სახელს 5 კოდით.

Private Sub start_Click() "ცვლადების გამოცხადება" მონაცემთა ბაზიდან ჩანაწერების ნაკრებისთვის Dim RS As ADODB.Recordset "Query string Dim sql_query As String "სტრიქონი საბოლოო მნიშვნელობის ჩვენებისთვის Dim str როგორც სტრიქონი "ახალი ობიექტის შექმნა ჩანაწერების ნაკრებისთვის RS = ახალი ADODB.Recordset "Query string sql_query = "SELECT name_mon FROM test_table WHERE id = 5" "შეასრულეთ მოთხოვნა პროექტის კავშირის მიმდინარე პარამეტრების გამოყენებით RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Get our valueF. ) msgbox str ბოლოს ქვე

უნივერსალურობისთვის აქ უკვე მივმართეთ არა უჯრედის სახელით, არამედ მისი ინდექსით, ე.ი. 0, რომელიც არის პირველი მნიშვნელობა ჩანაწერების ნაკრები, საბოლოოდ მივიღეთ ღირებულება "მაისი".

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

დღეისთვის სულ ესაა. Წარმატებები!