მონაცემთა ნიმუშის აღება Access მონაცემთა ბაზაში sql მოთხოვნების გამოყენებით. Microsoft Office Access-ის მონაცემთა ბაზის გადატანა Microsoft SQL Server-ზე დაწერეთ sql მოთხოვნები წვდომაში

06.04.2023

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

მაგრამ, მიუხედავად მონაცემთა ბაზების მუდმივი გამოყენებისა, მრავალი დეველოპერისთვისაც კი პროგრამული სისტემებიერთი და იგივე ტერმინების განსხვავებული ინტერპრეტაციების გამო ბევრი „ცარიელი ლაქაა“. ჩვენ მივცემთ მონაცემთა ბაზის ძირითადი ტერმინების მოკლე განმარტებას SQL ენის განხილვამდე. Ისე.

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

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

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

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

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

რა არის SQL?

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

1992 წლიდან არსებობს საყოველთაოდ მიღებული სტანდარტი სახელწოდებით ANSI SQL. ის განსაზღვრავს ოპერატორების ძირითად სინტაქსს და ფუნქციებს და მხარს უჭერს DBMS ბაზრის ყველა ლიდერს, როგორიცაა ORACLE. შეუძლებელია ენის ყველა შესაძლებლობის დაფარვა ერთ პატარა სტატიაში, ამიტომ მოკლედ განვიხილავთ მხოლოდ ძირითად SQL შეკითხვებს. მაგალითები ნათლად აჩვენებს ენის სიმარტივეს და შესაძლებლობებს:

  • მონაცემთა ბაზებისა და ცხრილების შექმნა;
  • მონაცემთა შერჩევა;
  • ჩანაწერების დამატება;
  • ინფორმაციის შეცვლა და წაშლა.

SQL მონაცემთა ტიპები

მონაცემთა ბაზის ცხრილის ყველა სვეტი ინახავს იმავე ტიპის მონაცემებს. მონაცემთა ტიპები SQL-ში იგივეა, რაც სხვა პროგრამირების ენებში.

ცხრილების და მონაცემთა ბაზების შექმნა

SQL-ში ახალი მონაცემთა ბაზების, ცხრილების და სხვა მოთხოვნების შესაქმნელად ორი გზა არსებობს:

  • DBMS კონსოლის მეშვეობით
  • მონაცემთა ბაზის სერვერთან დართული ინტერაქტიული ადმინისტრირების ინსტრუმენტების გამოყენებით.

ოპერატორის მიერ იქმნება ახალი მონაცემთა ბაზა მონაცემთა ბაზის შექმნა<наименование базы данных>; . როგორც ხედავთ, სინტაქსი მარტივი და ლაკონურია.

ჩვენ ვქმნით ცხრილებს მონაცემთა ბაზაში CREATE TABLE განაცხადის გამოყენებით შემდეგი პარამეტრებით:

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

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

ჩვენ ვქმნით ცხრილს:

შექმენით მაგიდა საქონელი

(commodity_id CHAR(15) NOT NULL,

vendor_id CHAR(15) NOT NULL,

commodity_name CHAR(254) NULL,

საქონლის_ფასი DECIMAL(8,2) NULL,

commodity_desc VARCHAR(1000) NULL);

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

მონაცემების შერჩევა ცხრილიდან

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

SELECT commodity_name FROM Commodity-დან

SELECT განცხადების შემდეგ ჩვენ ვაზუსტებთ სვეტის სახელს ინფორმაციის მისაღებად და FROM განსაზღვრავს ცხრილს.

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

მრავალ ველზე შეკითხვისთვის, ჩამოთვალეთ ისინი გამოყოფილი მძიმეებით, როგორც შემდეგ მაგალითში:

SELECT commodity_id, commodity_name, commodity_price FROM Commodity

შეკითხვის შედეგად შესაძლებელია მწკრივის ყველა სვეტის მნიშვნელობის მიღება. ამისათვის გამოიყენება "*" ნიშანი:

აირჩიეთ * საქონლისგან

  • დამატებით SELECT მხარს უჭერს:
  • მონაცემთა დახარისხება (ORDER BY განცხადების მიხედვით)
  • აირჩიეთ პირობების მიხედვით (WHERE)
  • დაჯგუფების ვადა (GROUP BY)

ხაზის დამატება

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

  • დაამატეთ ახალი მთელი ხაზი;
  • სტრიქონის ნაწილი;
  • შეკითხვის შედეგები.

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

ჩადეთ საქონლის ღირებულებებში ("106", "50", "კოკა-კოლა", "1.68", "ალკოჰოლის გარეშე ,)

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

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

ჩასმა საქონელში (საქონლის_ID, გამყიდველის_იდენტიფიკატორი, საქონლის_სახელი)

VALUES ("106", "50", "კოკა კოლა")

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

შეკითხვის შედეგების დამატება

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

შეცვალეთ მონაცემები

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

  • ცხრილის ყველა მწკრივი განახლებულია.
  • მხოლოდ გარკვეული ხაზისთვის.

UPDATE შედგება სამი ძირითადი ელემენტისგან:

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

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

განაახლეთ საქონლის ნაკრები commodity_price = "3.2" WHERE commodity_id = "106"

ჩვენ დავაზუსტეთ ცხრილის სახელი, ჩვენს შემთხვევაში Commodity, სადაც განხორციელდება განახლება, შემდეგ SET-ის შემდეგ - სვეტის ახალი მნიშვნელობა და ვიპოვეთ სასურველი ჩანაწერი WHERE-ში სასურველი ID მნიშვნელობის მითითებით.

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

განაახლეთ საქონლის ნაკრები commodity_name='Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

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

განაახლეთ საქონლის ნაკრები commodity_desc = NULL WHERE commodity_id = "106"

რიგების ამოღება

SQL მოთხოვნები ცხრილის რიგების წასაშლელად შესრულებულია DELETE განაცხადით. გამოყენების ორი შემთხვევაა:

  • ცხრილის გარკვეული რიგები წაშლილია;
  • ცხრილის ყველა სტრიქონი წაშლილია.

ცხრილიდან ერთი მწკრივის წაშლის მაგალითი:

DELETE FROM Commodity WHERE commodity_id = "106"

DELETE FROM-ის შემდეგ ვაზუსტებთ ცხრილის სახელს, რომელშიც სტრიქონები წაიშლება. WHERE პუნქტი შეიცავს პირობას, რომლითაც რიგები შეირჩევა წასაშლელად. მაგალითში ჩვენ ვშლით პროდუქტის ხაზს ID=106-ით. WHERE-ის დაზუსტება ძალიან მნიშვნელოვანია. ამ განცხადების გამოტოვება წაშლის ცხრილის ყველა მწკრივს. ეს ასევე ეხება ველების მნიშვნელობის შეცვლას.

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

SQL-ის გამოყენება Microsoft Access-ში

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

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

SQL გაფართოებები

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

ენის ყველაზე გავრცელებული დიალექტები:

  • Oracle მონაცემთა ბაზა - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQLსერვერი - Transact-SQL
  • PostgreSQL - PL/pgSQL.

SQL ინტერნეტში

MySQL DBMS განაწილებულია GNU ზოგადი საჯარო ლიცენზიით. არსებობს კომერციული ლიცენზია საბაჟო მოდულების შემუშავების შესაძლებლობით. როგორც განუყოფელი ნაწილი, ის შედის ინტერნეტ სერვერების ყველაზე პოპულარულ ასამბლეებში, როგორიცაა XAMPP, WAMP და LAMP და არის ყველაზე პოპულარული DBMS ინტერნეტში აპლიკაციების შემუშავებისთვის.

ის შეიქმნა Sun Microsystems-ის მიერ და ამჟამად იმართება Oracle Corporation-ის მიერ. მხარს უჭერს მონაცემთა ბაზებს 64 ტერაბაიტამდე, SQL:2003 სინტაქსის სტანდარტს, მონაცემთა ბაზების რეპლიკაციას და ღრუბლოვან სერვისებს.

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

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

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

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

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

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

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

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

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

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

ეს სტატია არის SQL for Access სტატიების სერიის ნაწილი. იგი აღწერს SQL-ის გამოყენების საფუძვლებს მონაცემების მისაღებად და გთავაზობთ SQL სინტაქსის მაგალითებს.

ამ სტატიაში

რა არის SQL?

SQL არის პროგრამირების ენა, რომელიც შექმნილია ფაქტების კომპლექტებთან და მათ შორის ურთიერთობებთან მუშაობისთვის. რელატიური მონაცემთა ბაზის პროგრამები, როგორიცაა Microsoft Office Access, იყენებს SQL-ს მონაცემების მანიპულირებისთვის. ბევრი პროგრამირების ენისგან განსხვავებით, SQL ადვილად წასაკითხი და გასაგებია დამწყებთათვისაც კი. პროგრამირების მრავალი ენის მსგავსად, SQL არის საერთაშორისო სტანდარტი, რომელიც აღიარებულია სტანდარტების კომიტეტების მიერ, როგორიცაა ISO და ANSI.

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

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

აირჩიეთ გვარი
კონტაქტებიდან
WHERE First_Name = "მარიამი";

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

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

SELECT განცხადება გამოიყენება SQL-ში მონაცემთა ნაკრების აღსაწერად. ის შეიცავს მონაცემთა ბაზიდან ამოსაღები მონაცემთა ნაკრების სრულ აღწერას, მათ შორის:

    ცხრილები, რომლებიც შეიცავს მონაცემებს;

    კავშირები სხვადასხვა წყაროს მონაცემებს შორის;

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

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

    საჭიროება და დახარისხების მეთოდი.

SQL განცხადებები

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

SQL პუნქტი

აღწერა

Სავალდებულო

განსაზღვრავს ველებს, რომლებიც შეიცავს სასურველ მონაცემებს.

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

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

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

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

მხოლოდ თუ არის ასეთი ველები

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

SQL პირობები

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

SQL ტერმინი

მეტყველების შესადარებელი ნაწილი

განმარტება

მაგალითი

იდენტიფიკატორი

არსებითი სახელი

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

კლიენტები.[PhoneNumber]

ოპერატორი

ზმნა ან ზმნიზედა

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

მუდმივი

არსებითი სახელი

მნიშვნელობა, რომელიც არ იცვლება, როგორიცაა რიცხვი ან NULL.

გამოხატულება

ზედსართავი სახელი

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

>> საქონელი.[ფასი]

ძირითადი SQL პუნქტები: SELECT, FROM და WHERE

SQL განცხადებების ზოგადი ფორმატია:

აირჩიეთ ველი_1
ცხრილიდან_1
WHERE კრიტერიუმი_1
;

შენიშვნები:

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

    თითოეული SELECT განცხადება მთავრდება მძიმით (;). მძიმით შეიძლება იყოს ბოლო წინადადება ან ცალკე ხაზი SQL განცხადების ბოლოს.

მაგალითი Access-ში

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

1. SELECT პუნქტი

2. პუნქტი FROM

3. WHERE პუნქტი

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

SELECT პუნქტი

SELECT, კომპანია

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

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

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

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

პუნქტი FROM

კონტაქტებიდან

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

FROM პუნქტი არ აკონკრეტებს ველებს ასარჩევად.

WHERE პუნქტი

WHERE City = სიეტლი

ეს არის WHERE პუნქტი. ის შეიცავს (WHERE) ოპერატორს, რასაც მოჰყვება გამოთქმა (City="Rostov").

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

შედეგების დალაგება: ORDER BY

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

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

დავუშვათ, რომ, მაგალითად, გსურთ დაალაგოთ შედეგები ჯერ „კომპანიის“ ველის მიხედვით კლებადობით, შემდეგ კი, თუ არის იგივე მნიშვნელობის ჩანაწერები „კომპანია“ ველში, დაალაგეთ ისინი „ელ.ფოსტის მისამართის“ მიხედვით. " ველი ზრდადი თანმიმდევრობით. ORDER BY პუნქტი ასე გამოიყურება:

შეკვეთა კომპანიის მიერ DESC,

Შენიშვნა:ნაგულისხმევად, Access ახარისხებს მნიშვნელობებს აღმავალი თანმიმდევრობით (A-დან Z-მდე, ყველაზე პატარადან დიდამდე). მნიშვნელობების კლებადობით დასალაგებლად, თქვენ უნდა მიუთითოთ საკვანძო სიტყვა DESC.

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

შემაჯამებელ მონაცემებთან მუშაობა: GROUP BY და HAVING პუნქტები

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

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

ველების მითითება, რომლებიც არ გამოიყენება აგრეგატულ ფუნქციაში: GROUP BY პუნქტი

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

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

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

ჯგუფი კომპანიის მიხედვით

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

აგრეგირებული მნიშვნელობების შეზღუდვა დაჯგუფების პირობებით: HAVING პუნქტი

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

დავუშვათ, რომ AVG ფუნქცია (რომელიც ითვლის საშუალო მნიშვნელობას) გამოიყენება SELECT პუნქტის პირველ ველზე:

SELECT COUNT(), კომპანია

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

HAVING COUNT()>1

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

დამატებითი ინფორმაციისთვის HAVING პუნქტის შესახებ იხილეთ HAVING პუნქტი.

შეკითხვის შედეგების შერწყმა: UNION ოპერატორი

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

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

Შენიშვნა:კავშირის შეკითხვებში რიცხვითი და ტექსტური მონაცემთა ტიპები თავსებადია.

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

ორი SELECT განცხადების შეერთების მოთხოვნას აქვს შემდეგი ძირითადი სინტაქსი:

აირჩიეთ ველი_1
ცხრილიდან_1
გაერთიანება
SELECT ველი_a
ცხრილიდან_ა
;

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

აირჩიეთ სახელი, ფასი, გარანტია_ხელმისაწვდომი, ექსკლუზიური_შემოთავაზება
პროდუქტებიდან
UNION ALL
აირჩიეთ სახელი, ფასი, გარანტია_ხელმისაწვდომი, ექსკლუზიური_შემოთავაზება
სერვისებიდან
;

დამატებითი ინფორმაციისთვის SELECT განცხადებების გაერთიანების შესახებ UNION ოპერატორის გამოყენებით, იხილეთ სტატია

საგანმანათლებლო პროექტის "მაღაზია" აღწერა

ცხრილის ბმული სქემა

ცხრილების აღწერა

m_category - პროდუქტის კატეგორიები

მ_შემოსავალი - საქონლის მიღება

m_შედეგი - საქონლის მოხმარება

m_product - დირექტორია, პროდუქტის აღწერა

m_supplier - დირექტორია; მიმწოდებლის ინფორმაცია

m_unit - დირექტორია; ერთეულები

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

Microsoft Access 2003 ან უფრო ახალი.

SQL მოთხოვნა MS Access-ში. დაწყება

ცხრილის შინაარსის სანახავად, ორჯერ დააწკაპუნეთ ცხრილის სახელზე მარცხენა პანელში:

ცხრილის ველის რედაქტირების რეჟიმში გადასასვლელად აირჩიეთ დიზაინის რეჟიმი ზედა პანელზე:

SQL მოთხოვნის შედეგის საჩვენებლად, ორჯერ დააწკაპუნეთ მოთხოვნის სახელზე მარცხენა პანელში:

SQL შეკითხვის რედაქტირების რეჟიმში გადასასვლელად აირჩიეთ SQL რეჟიმი ზედა პანელზე:

SQL შეკითხვა. მაგალითები MS Access-ში. SELECT: 1-10

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

SQL შეკითხვა Q001. SQL მოთხოვნის მაგალითი, რომ მიიღოთ მხოლოდ საჭირო ველები სასურველი თანმიმდევრობით:

SELECT dt, product_id, თანხა


მ_ შემოსავალი;

SQL შეკითხვა Q002.ამ SQL შეკითხვის მაგალითში, ვარსკვლავის სიმბოლო (*) გამოიყენება m_product ცხრილის ყველა სვეტის საჩვენებლად, სხვა სიტყვებით რომ ვთქვათ, m_product კავშირის ყველა ველის მისაღებად:

აირჩიეთ *
FROM m_პროდუქტი;

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

აირჩიეთ DISTINCT product_id


მ_ შემოსავალი;

SQL შეკითხვა Q004. ORDER BY განცხადება გამოიყენება ჩანაწერების დასალაგებლად (შეკვეთა) კონკრეტული ველის მნიშვნელობებით. ველის სახელი მიჰყვება ORDER BY პუნქტს:

აირჩიეთ *
მ_შემოსავლიდან


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

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

აირჩიეთ *
მ_შემოსავლიდან


შეკვეთა dt DESC-ით, ფასი;

SQL შეკითხვა Q006.ცხრილიდან საჭირო ჩანაწერების შესარჩევად გამოიყენება სხვადასხვა ლოგიკური გამონათქვამები, რომლებიც გამოხატავს შერჩევის მდგომარეობას. ლოგიკური გამოხატულება მოდის WHERE პუნქტის შემდეგ. m_income ცხრილიდან ყველა ჩანაწერის მიღების მაგალითი, რომლის თანხის მნიშვნელობა 200-ზე მეტია:

აირჩიეთ *
მ_შემოსავლიდან


WHERE თანხა>200;

SQL შეკითხვა Q007.რთული პირობების გამოსახატავად გამოიყენეთ ლოგიკური ოპერაციები AND (კავშირი), OR (განშორება) და NOT (ლოგიკური უარყოფა). m_outcome ცხრილიდან ყველა ჩანაწერის მიღების მაგალითი, რომლის თანხის მნიშვნელობა არის 20 და ფასის მნიშვნელობა 10-ზე მეტი ან ტოლია:

ფასი


FROM m_შედეგი
WHERE თანხა=20 და ფასი>=10;

SQL შეკითხვა Q008.ორი ან მეტი ცხრილის მონაცემების შესაერთებლად გამოიყენეთ INNER JOIN, LEFT JOIN, RIGHT JOIN განცხადებები. შემდეგი მაგალითი ამოიღებს dt, product_id, თანხა, ფასის ველებს m_income ცხრილიდან და სათაურის ველს m_product ცხრილიდან. m_income ცხრილის ჩანაწერი დაკავშირებულია m_product ცხრილის ჩანაწერთან, როდესაც m_income.product_id მნიშვნელობა უდრის m_product.id მნიშვნელობას:



ON m_income.product_id=m_product.id;

SQL შეკითხვა Q009.არის ორი რამ, რასაც ყურადღება უნდა მიაქციოთ ამ SQL მოთხოვნაში: 1) საძიებო ტექსტი ჩასმულია ერთ ბრჭყალებში ("); 2) თარიღი არის #Month/Day/Year# ფორმატში, რაც სწორია MS-ისთვის. წვდომა. სხვა სისტემებში თარიღის ფორმატი შეიძლება განსხვავებული იყოს. რძის მიღების შესახებ ინფორმაციის ჩვენების მაგალითი 2011 წლის 12 ივნისს. ყურადღება მიაქციეთ თარიღის ფორმატს #6/12/2011#:

SELECT dt, product_id, სათაური, თანხა, ფასი


FROM m_income INNER JOIN m_product

WHERE title="რძე" And dt=#6/12/2011#; !}

SQL შეკითხვა Q010. BETWEEN ინსტრუქცია გამოიყენება შესამოწმებლად, ეკუთვნის თუ არა მას მნიშვნელობების დიაპაზონი. SQL მოთხოვნის მაგალითი, რომელიც აჩვენებს ინფორმაციას 2011 წლის 1 ივნისიდან 30 ივნისამდე მიღებულ საქონელზე:

აირჩიეთ *
FROM m_income INNER JOIN m_product


ON m_income.product_id=m_product.id
WHERE dt შორის #6/1/2011# და #6/30/2011#;

SQL შეკითხვა. მაგალითები MS Access-ში. SELECT: 11-20

ერთი 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 აგრეგატის ფუნქციის გამოყენებით:

SELECT SUM(თანხა*ფასი) AS Total_Sum


მ_ შემოსავალი;

მოთხოვნა Q019.მრავალი აგრეგატის ფუნქციის გამოყენების მაგალითი:

SELECT Sum(amount) AS Amount_Sum, AVG(amount) AS Amount_AVG,


MAX(ოდენობა) AS Amount_Max, Min(amount) AS Amount_Min,
Count(*) AS Total_Number
მ_ შემოსავალი;

მოითხოვეთ Q020.ამ მაგალითში გამოითვლება 2011 წლის ივნისში მიღებული 1 კოდის მქონე ყველა ელემენტის ჯამი:

აირჩიეთ თანხა(თანხა*ფასი) AS შემოსავალი_ჯამად


მ_შემოსავლიდან
WHERE product_id=1 და dt #6/1/2011# და #6/30/2011# შორის#;.

მოითხოვეთ Q021.შემდეგი SQL მოთხოვნა ითვლის, თუ რა ფასად გაიყიდა 4 ან 6 კოდის მქონე საქონელი:

აირჩიეთ თანხა (თანხა*ფასი) როგორც შედეგი_ჯამად


FROM m_შედეგი
WHERE product_id=4 ან product_id=6;

მოითხოვეთ Q022.გამოითვლება რა ოდენობით გაიყიდა 2011 წლის 12 ივნისს საქონელი 4 ან 6 კოდით:

აირჩიეთ თანხა (თანხა*ფასი) როგორც outcome_sum


FROM m_შედეგი
WHERE (product_id=4 OR product_id=6) AND dt=#6/12/2011#;

მოითხოვეთ Q023.ამოცანა ეს არის. გამოთვალეთ ჯამური თანხა, რისთვისაც ჩაირიცხა კატეგორიის „ცომეული პროდუქტები“ საქონელი.

ამ პრობლემის გადასაჭრელად, თქვენ უნდა იმუშაოთ სამ ცხრილზე: m_income, m_product და m_category, რადგან:


- დაკრედიტებული საქონლის რაოდენობა და ფასი ინახება m_შემოსავლების ცხრილში;
- თითოეული პროდუქტის კატეგორიის კოდი ინახება m_product ცხრილში;
- კატეგორიის სათაურის სახელი ინახება m_category ცხრილში.

ამ პრობლემის გადასაჭრელად ვიყენებთ შემდეგ ალგორითმს:


- კატეგორიის კოდის "ცომეული პროდუქტები" განსაზღვრა ცხრილიდან m_კატეგორიიდან ქვეშეკითხვის საშუალებით;
- m_income და m_product ცხრილების შეერთება თითოეული დაკრედიტებული პროდუქტის კატეგორიის დასადგენად;
- ქვითრის ოდენობის (= რაოდენობა * ფასი) გამოთვლა საქონელზე, რომლის კატეგორიის კოდი უდრის ზემოაღნიშნული ქვემოთხოვნით განსაზღვრულ კოდს.
აირჩიეთ
FROM m_product AS INNER JOIN m_income AS b ON a.id=b.product_id
WHERE ctgry_id = (SELECT id FROM m_category WHERE title="ცომეული"); !}

მოითხოვეთ Q024.კატეგორიის „ცომეული პროდუქტების“ დაკრედიტებული საქონლის ჯამური ოდენობის გამოთვლის პრობლემა მოგვარდება შემდეგი ალგორითმით:
- m_income ცხრილის თითოეული ჩანაწერი, მისი პროდუქტის_id მნიშვნელობიდან გამომდინარე, m_category ცხრილიდან ემთხვევა კატეგორიის სახელს;
- შეარჩიეთ ჩანაწერები, რომლებისთვისაც კატეგორია უდრის „ცომეულ პროდუქტებს“;
- გამოთვალეთ შემოსავლის ოდენობა = რაოდენობა * ფასი.

FROM (m_პროდუქტი, როგორც შიდა JOIN m_შემოსავალი AS b ON a.id=b.product_id)

WHERE c.title="ცომეული"; !}

მოითხოვეთ Q025.ეს მაგალითი ითვლის რამდენი ელემენტი იქნა მოხმარებული:

აირჩიეთ COUNT(product_id) როგორც product_cnt


FROM (აირჩიეთ DISTINCT product_id FROM m_outcome) AS t;

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

აირჩიეთ სათაური, SUM(თანხა*ფასი) როგორც outcome_sum


FROM m_product AS INNER JOIN m_შედეგი AS b
ON a.id=b.product_id
ჯგუფი სათაურის მიხედვით;

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

SELECT c.title, SUM(amount*price) AS outcome_sum,


ROUND(AVG(თანხა*ფასი),2) AS outcome_sum_avg
FROM (m_პროდუქტი როგორც შიდა შეერთება m_შედეგი AS b ON a.id=b.product_id)
INNER JOIN m_category AS c ON a.ctgry_id=c.id
GROUP BY c.title;

მოითხოვეთ Q028.თითოეული პროდუქტისთვის გამოითვლება მისი ქვითრების მთლიანი და საშუალო რაოდენობა და აჩვენებს ინფორმაციას საქონლის შესახებ, რომლის ქვითრების საერთო რაოდენობა არის მინიმუმ 500:

SELECT product_id, SUM(amount) AS თანხა_sum,


მრგვალი(საშ.(ოდენობა),2) AS თანხა_საშ
მ_შემოსავლიდან
GROUP BY product_id
HAVING თანხა(თანხა)>=500;

მოითხოვეთ Q029.ეს მოთხოვნა ითვლის თითოეული პუნქტისთვის 2011 წლის მეორე კვარტალში მიღებული მისი შემოსულობების ჯამს და საშუალოს. თუ საქონლის მიღების მთლიანი რაოდენობა არ არის 1000-ზე ნაკლები, მაშინ ნაჩვენებია ინფორმაცია ამ პროდუქტის შესახებ:

აირჩიეთ სათაური, SUM(თანხა*ფასი) AS შემოსავალი_ჯამად


FROM m_income a INNER JOIN m_product b ON a.product_id=b.id
სად dt #4/1/2011# და #6/30/2011# შორის
ჯგუფი სათაურის მიხედვით
თანხის მქონე (თანხა*ფასი)>=1000;

მოითხოვეთ Q030.ზოგიერთ შემთხვევაში აუცილებელია რომელიმე ცხრილის თითოეული ჩანაწერის შედარება სხვა ცხრილის თითოეულ ჩანაწერთან; რასაც დეკარტის პროდუქტს უწოდებენ. ასეთი შეერთების შედეგად მიღებულ ცხრილს დეკარტის ცხრილი ეწოდება. მაგალითად, თუ ზოგიერთ A ცხრილს აქვს 100 ჩანაწერი, ხოლო B ცხრილში 15, მაშინ მათი დეკარტისეული ცხრილი შედგება 100*15=150 ჩანაწერისგან. შემდეგი მოთხოვნა უერთდება m_income ცხრილის თითოეულ ჩანაწერს m_outcome ცხრილში:
FROM m_ შემოსავალი, m_შედეგი;

მოითხოვეთ Q031.ჩანაწერების ორი ველის მიხედვით დაჯგუფების მაგალითი. შემდეგი SQL მოთხოვნა ითვლის თითოეული მიმწოდებლისთვის მისგან მიღებული საქონლის რაოდენობას და რაოდენობას:


SUM(თანხა*ფასი) AS შემოსავალი_ჯამ

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

აირჩიეთ მომწოდებლის_იდენტიფიკატორი, პროდუქტის_იდენტიფიკატორი, ჯამი (თანხა) AS თანხა_ჯამობა,




GROUP BY მიმწოდებლის_ID, პროდუქტის_ID;

მოთხოვნა Q033.ამ მაგალითში, ზემოთ მოცემული ორი მოთხოვნა (q031 და q032) გამოიყენება როგორც ქვემოთხოვნები. ამ მოთხოვნების შედეგები გაერთიანებულია ერთ ანგარიშში LEFT JOIN მეთოდის გამოყენებით. შემდეგი მოთხოვნა აჩვენებს ანგარიშს თითოეული მიმწოდებლისთვის მიღებული და გაყიდული პროდუქციის რაოდენობისა და რაოდენობის შესახებ. ყურადღება უნდა მიაქციოთ იმ ფაქტს, რომ თუ რომელიმე პროდუქტი უკვე ჩამოვიდა, მაგრამ ჯერ არ გაყიდულა, მაშინ ამ ჩანაწერის შედეგის_ჯამის უჯრედი ცარიელი იქნება. რომ ეს შეკითხვა მხოლოდ გამოყენების მაგალითია რთული კითხვებიროგორც ქვემოთხოვნა. Შესრულება მოცემული მოთხოვნა SQL დიდი რაოდენობით მონაცემებით საეჭვოა:

აირჩიეთ *
FROM



SUM(თანხა*ფასი) AS შემოსავალი_ჯამ

ON a.product_id=b.id GROUP BY მიმწოდებლის_id, product_id) AS a
LEFT შეერთება
(SELECT მიმწოდებლის_იდენტიფიკატორი, პროდუქტის_იდენტიფიკატორი, ჯამი (თანხა) AS თანხა_ჯამობა,
SUM(თანხა*ფასი) AS outcome_sum
FROM m_outcome AS INNER JOIN m_product AS b
ON a.product_id=b.id GROUP BY მიმწოდებლის_id, product_id) AS b
ON (a.product_id=b.product_id) AND (a.supplier_id=b.supplier_id);

მოითხოვეთ Q034.ამ მაგალითში, ზემოთ მოცემული ორი მოთხოვნა (q031 და q032) გამოიყენება როგორც ქვემოთხოვნები. ამ მოთხოვნების შედეგები გაერთიანებულია ერთ ანგარიშში RIGTH JOIN მეთოდის გამოყენებით. შემდეგი მოთხოვნა ბეჭდავს ანგარიშს თითოეული მომხმარებლის მიერ გადახდილი გადახდების ოდენობის შესახებ მათ მიერ გამოყენებული გადახდის სისტემებზე და მათ მიერ განხორციელებული ინვესტიციების ოდენობაზე. შემდეგი მოთხოვნა აჩვენებს ანგარიშს თითოეული მიმწოდებლისთვის მიღებული და გაყიდული პროდუქციის რაოდენობისა და რაოდენობის შესახებ. გაითვალისწინეთ, რომ თუ პროდუქტი უკვე გაიყიდა, მაგრამ ჯერ არ მიუღია, მაშინ ამ ჩანაწერის შემოსავალი_ჯამის უჯრედი ცარიელი იქნება. ასეთი ცარიელი უჯრედების არსებობა არის გაყიდვების აღრიცხვის შეცდომის მაჩვენებელი, რადგან გაყიდვამდე, პირველ რიგში, აუცილებელია, რომ შესაბამისი პროდუქტი მოვიდეს:

აირჩიეთ *
FROM


(SELECT მიმწოდებლის_იდენტიფიკატორი, პროდუქტის_იდენტიფიკატორი, ჯამი (თანხა) AS თანხა_ჯამობა,
SUM(თანხა*ფასი) AS შემოსავალი_ჯამ
FROM m_income AS INNER JOIN m_product AS b ON a.product_id=b.id
GROUP BY მიმწოდებლის_ID, product_id) AS a
მარჯვენა შეერთება
(SELECT მიმწოდებლის_იდენტიფიკატორი, პროდუქტის_იდენტიფიკატორი, ჯამი (თანხა) AS თანხა_ჯამობა,
SUM(თანხა*ფასი) AS outcome_sum
FROM m_outcome AS INNER JOIN m_product AS b ON a.product_id=b.id
GROUP BY მიმწოდებლის_ID, product_id) AS b
ON (a.supplier_id=b.supplier_id) AND (a.product_id=b.product_id);

მოითხოვეთ Q035.ნაჩვენებია ანგარიში პროდუქტის მიხედვით შემოსავლებისა და ხარჯების ოდენობის შესახებ. ამისათვის იქმნება პროდუქტების სია m_income და m_outcome ცხრილების მიხედვით, შემდეგ ამ სიიდან თითოეულ პროდუქტზე გამოითვლება მისი შემოსულობების ჯამი m_income ცხრილის მიხედვით და მისი ხარჯების ჯამი m_outcome ცხრილის მიხედვით:

SELECT product_id, SUM(in_mount) AS შემოსავალი_ოდენობა,


SUM(out_mount) AS outcome_amount
FROM
(SELECT product_id, თანხა AS in_mount, 0 AS out_amount
მ_შემოსავლიდან
UNION ALL
SELECT product_id, 0 AS in_mount, თანხა AS out_amount
FROM m_შედეგი) AS t
GROUP BY product_id;

მოითხოვეთ Q036. EXISTS ფუნქცია უბრუნებს TRUE-ს, თუ მასზე გადაცემული ნაკრები შეიცავს ელემენტებს. EXISTS ფუნქცია უბრუნებს FALSE-ს, თუ მასზე გადაცემული ნაკრები ცარიელია, ანუ მას არ აქვს ელემენტები. შემდეგი მოთხოვნა აბრუნებს პროდუქტის კოდებს, რომლებიც შეიცავს როგორც m_income ცხრილში, ასევე m_outcome ცხრილში:

აირჩიეთ DISTINCT product_id


FROM m_income AS ა
WHERE EXISTS( აირჩიეთ product_id FROM m_outcome AS b

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

აირჩიეთ DISTINCT product_id


FROM m_income AS ა
WHERE product_id IN (SELECT product_id FROM m_outcome)

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

აირჩიეთ DISTINCT product_id


FROM m_income AS ა
WHERE NOT EXISTS(SELECT product_id FROM m_outcome AS b
WHERE b.product_id=a.product_id);

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

SELECT product_id, SUM (თანხა*ფასი) AS თანხა_ჯამად


FROM m_შედეგი
GROUP BY product_id
თანხის ქონა (თანხა*ფასი) = (აირჩიეთ MAX(s_amount)
FROM (SELECT SUM(ოდენობა*ფასი) AS s_amount FROM m_outcome GROUP BY product_id));

მოითხოვეთ Q040.რეზერვირებული სიტყვა IIF (პირობითი ოპერატორი) გამოიყენება ლოგიკური გამოხატვის შესაფასებლად და შედეგის მიხედვით (TRUE ან FALSE) მოქმედების შესასრულებლად. შემდეგ მაგალითში ნივთის მიწოდება ითვლება „პატარად“, თუ რაოდენობა 500-ზე ნაკლებია. წინააღმდეგ შემთხვევაში, ანუ ქვითრის რაოდენობა 500-ზე მეტი ან ტოლია, მიწოდება ითვლება „დიდი“:

SELECT dt, product_id, თანხა,


IIF(თანხა მ_შემოსავალი;

SQL შეკითხვა Q041.იმ შემთხვევაში, როდესაც IIF განცხადება გამოიყენება არაერთხელ, უფრო მოსახერხებელია მისი შეცვლა SWITCH განაცხადით. SWITCH ოპერატორი (მრავალჯერადი არჩევანის ოპერატორი) გამოიყენება ლოგიკური გამოხატვის შესაფასებლად და შედეგის მიხედვით მოქმედების შესასრულებლად. შემდეგ მაგალითში, მიწოდებული ლოტი ითვლება "პატარად", თუ ლოტში საქონლის რაოდენობა 500-ზე ნაკლებია. წინააღმდეგ შემთხვევაში, თუ საქონლის რაოდენობა 500-ზე მეტი ან ტოლია, ლოტი ჩაითვლება "დიდი". ":

SELECT dt, product_id, თანხა,


SWITCH (თანხა =500"დიდი") AS ნიშანი
მ_ შემოსავალი;

მოთხოვნა Q042.შემდეგ შეკითხვაში, თუ შემოსულ პარტიაში საქონლის რაოდენობა 300-ზე ნაკლებია, მაშინ პარტია ითვლება „პატარა“. წინააღმდეგ შემთხვევაში, ანუ თუ პირობის ოდენობა SELECT dt, product_id, თანხა,
IIF(ოდენობა IIF(თანხა FROM მ_შემოსავალი;

SQL შეკითხვა Q043.შემდეგ შეკითხვაში, თუ შემოსულ პარტიაში საქონლის რაოდენობა 300-ზე ნაკლებია, მაშინ პარტია ითვლება „პატარა“. წინააღმდეგ შემთხვევაში, ანუ თუ პირობის ოდენობა SELECT dt, product_id, თანხა,
SWITCH (თანხის ოდენობა>=1000"დიდი") AS მარკა
მ_ შემოსავალი;

SQL შეკითხვა Q044.შემდეგ მოთხოვნაში გაყიდვები იყოფა სამ ჯგუფად: მცირე (150-მდე), საშუალო (150-დან 300-მდე), დიდი (300 და მეტი). შემდეგი, თითოეული ჯგუფისთვის, მთლიანი თანხა გამოითვლება:

აირჩიეთ კატეგორია, SUM(outcome_sum) AS Ctgry_Total


FROM (აირჩიეთ თანხა*ფასი როგორც outcome_sum,
IIf(რაოდენობა*ფასი IIf(თანხა*ფასი FROM m_outcome) AS t
ჯგუფი კატეგორიის მიხედვით;

SQL შეკითხვა Q045. DateAdd ფუნქცია გამოიყენება მოცემულ თარიღს დღეების, თვეების ან წლების დასამატებლად და ახალი თარიღის მისაღებად. შემდეგი მოთხოვნა:
1) დაამატეთ თარიღს 30 დღე dt ველიდან და ჩვენება ახალი თარიღიველში dt_plus_30d;
2) დაამატეთ თარიღს 1 თვე dt ველიდან და აჩვენეთ ახალი თარიღი dt_plus_1m ველში:

SELECT dt, dateadd("d",30,dt) AS dt_plus_30d, dateadd("m",1,dt) AS dt_plus_1m


მ_ შემოსავალი;

SQL შეკითხვა Q046. DateDiff ფუნქცია შექმნილია ორ თარიღს შორის განსხვავების გამოსათვლელად სხვადასხვა ერთეულებში (დღეები, თვეები ან წლები). შემდეგი მოთხოვნა ითვლის სხვაობას dt ველში თარიღსა და მიმდინარე თარიღს შორის დღეებში, თვეებში და წლებში:

SELECT dt, DateDiff("d",dt,Date()) AS last_day,


DateDiff("m",dt,Date()) როგორც ბოლო_თვეები,
DateDiff("yyyy",dt,Date()) AS last_years
მ_ შემოსავალი;

SQL შეკითხვა Q047.დღეების რაოდენობა საქონლის მიღებიდან (m_შემოსავლის ცხრილი) მიმდინარე თარიღამდე გამოითვლება DateDiff ფუნქციის გამოყენებით და ვადის გასვლის თარიღი შედარებულია (m_პროდუქტის ცხრილი):


DateDiff("d",dt,Date()) AS last_days
FROM m_income AS INNER JOIN m_product AS b
ON a.product_id=b.id;

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

აირჩიეთ a.id, product_id, dt, lifedays,


DateDiff("d",dt,თარიღი()) AS ბოლო_დღეები, IIf(ბოლო_დღეები>სიცოცხლის დღეები,"დიახ","არა") AS date_expire
FROM m_შემოსავლიდან INNER JOIN m_product b
ON a.product_id=b.id;

SQL შეკითხვა Q049.გამოითვლება თვეების რაოდენობა საქონლის მიღებიდან მიმდინარე თარიღამდე. სვეტი month_last1 ითვლის თვეების აბსოლუტურ რაოდენობას, სვეტი month_last2 ითვლის სრული თვეების რაოდენობას:

SELECT dt, DateDiff("m",dt,Date()) AS month_last1,


DateDiff("m",dt,თარიღი())-iif(დღე(dt)>დღე(თარიღი()),1,0) როგორც თვე_ბოლო2
მ_ შემოსავალი;

SQL შეკითხვა Q050.ნაჩვენებია კვარტალური ანგარიში 2011 წელს მიღებული საქონლის რაოდენობისა და რაოდენობის შესახებ:

SELECT kvartal, SUM(outcome_sum) AS სულ


FROM (აირჩიეთ თანხა*ფასი AS outcome_sum, თვე(dt) AS m,
SWITCH(m =10.4) AS კვართალი
FROM m_income WHERE წელი(dt)=2011) როგორც t
GROUP BY ბლოკი;

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

SELECT product_id, SUM(in_sum) AS შემოსავალი_sum, SUM(out_sum) AS outcome_sum


FROM (SELECT product_id, თანხა*ფასი in_sum, 0 out_sum
m_შემოსავლიდან
UNION ALL
SELECT product_id, 0 როგორც in_sum, თანხა*ფასი როგორც out_sum
m_შედეგიდან) AS ტ
GROUP BY product_id
HAVING SUM (in_sum)
მოთხოვნა Q052.შეკითხვით დაბრუნებული ხაზების ნუმერაცია ხორციელდება სხვადასხვა გზით. მაგალითად, შეგიძლიათ ხელახლა დანომროთ MS Access-ში მომზადებული მოხსენების სტრიქონები თავად MS Access-ის გამოყენებით. თქვენ ასევე შეგიძლიათ გადანომრვა პროგრამირების ენების გამოყენებით, მაგალითად, VBA ან PHP. თუმცა, ზოგჯერ ეს უნდა გაკეთდეს თავად SQL შეკითხვაში. ასე რომ, შემდეგი მოთხოვნა დანომრავს m_income ცხრილის რიგებს ID ველის მნიშვნელობების ზრდადი თანმიმდევრობის შესაბამისად:

აირჩიეთ COUNT(*) როგორც N, b.id, b.product_id, b.amount, b.price


FROM m_income a INNER JOIN m_income b ON a.id GROUP BY b.id, b.product_id, b.mount, b.price;

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

აირჩიეთ TOP 5, product_id, ჯამი (თანხა*ფასი) როგორც ჯამი


FROM m_შედეგი
GROUP BY product_id
შეკვეთა თანხის მიხედვით (თანხა*ფასი) DESC;

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

SELECT COUNT(*) AS N, b.product_id, b.summa


FROM


FROM m_შედეგი GROUP BY product_id) AS a
შიდა შეერთება
(SELECT product_id, ჯამი(თანხა*ფასი) როგორც ჯამი,
summa*10000000+product_id AS id
FROM m_შედეგი GROUP BY product_id) AS b
ON a.id>=b.id
ჯგუფი b.product_id, b.summa
HAVING COUNT(*)ORDER BY COUNT(*);

მოთხოვნა Q055.შემდეგი SQL მოთხოვნა აჩვენებს მათემატიკური ფუნქციების COS, SIN, TAN, SQRT, ^ და ABS გამოყენებას MS Access SQL-ში:

SELECT (აირჩიეთ რაოდენობა(*) m_income-დან) როგორც N, 3.1415926 როგორც pi, k,


2*pi*(k-1)/N როგორც x, COS(x) როგორც COS_, SIN(x) როგორც SIN_, TAN(x) როგორც TAN_,
SQR(x) როგორც SQRT_, x^3 როგორც "x^3", ABS(x) როგორც ABS_
FROM (SELECT COUNT(*) AS k
FROM m_income AS INNER JOIN m_income AS b ON a.idGROUP BY b.id) t;

SQL შეკითხვა. მაგალითები MS Access-ში. განახლება: 1-10

მოთხოვნა U001.შემდეგი SQL ცვლილების მოთხოვნა ზრდის m_income ცხრილში 3 კოდის მქონე ნივთების ფასებს 10%-ით:

განაახლეთ m_income SET ფასი = ფასი*1.1


WHERE product_id=3;

მოთხოვნა U002.შემდეგი SQL განახლების მოთხოვნა ზრდის m_income ცხრილში ყველა პროდუქტის რაოდენობას 22 ერთეულით, რომელთა სახელები იწყება სიტყვით "კარაქი":

განაახლეთ m_income SET თანხა = თანხა+22


WHERE product_id IN (SELECT id FROM m_product WHERE სათაური LIKE "Oil*");

მოთხოვნა U003.შემდეგი SQL ცვლილების მოთხოვნა m_outcome ცხრილში ამცირებს ყველა საქონლის ფასებს OOO Sladkoe-ს მიერ 2 პროცენტით:

განაახლეთ m_outcome SET ფასი = ფასი*0.98


WHERE product_id IN
(აირჩიეთ a.id FROM m_product a INNER JOIN m_supplier b
ON a.supplier_id=b.id WHERE b.title="OOO"Сладкое"");. !}

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

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

მოთხოვნის ტიპი კონსტრუქტორში:

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

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

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

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

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

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

საბოლოო მოთხოვნა იქმნება რეჟიმის გამოყენებით - Summary query.

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

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

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

ჯამური ფუნქციები: ველში, რომლისთვისაც გვინდა გამოვთვალოთ ჯამები, აირჩიეთ სიიდან "ჯამ" ფუნქცია არჩეული ველების ყველა მნიშვნელობის შესაჯამებლად. Count ფუნქცია დათვლის ველის მნიშვნელობების რაოდენობას. ინფორმაციის რედაქტირება microsoft

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

მოთხოვნისას შეგიძლიათ:

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

მოთხოვნის ტიპები:

  • - სინჯის აღება;
  • - მაგიდის შექმნა;
  • - განახლება (მონაცემთა ცვლილება);
  • - ჩანაწერების დამატება;
  • - ჩანაწერების წაშლა.

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

Microsoft Access-ში არსებობს რამდენიმე სახის მოთხოვნა.