თითოეული ჩვენგანი რეგულარულად ხვდება და იყენებს სხვადასხვა მონაცემთა ბაზას. როდესაც ჩვენ ვირჩევთ ელ.ფოსტის მისამართს, ჩვენ ვმუშაობთ მონაცემთა ბაზასთან. მონაცემთა ბაზები იყენებენ საძიებო სერვისებს, ბანკებს კლიენტების მონაცემების შესანახად და ა.შ.
მაგრამ, მიუხედავად მონაცემთა ბაზების მუდმივი გამოყენებისა, პროგრამული სისტემების მრავალი დეველოპერისთვისაც კი არსებობს მრავალი „თეთრი ლაქა“ ერთი და იგივე ტერმინების განსხვავებული ინტერპრეტაციების გამო. ჩვენ მივცემთ მონაცემთა ბაზის ძირითადი ტერმინების მოკლე განმარტებას SQL ენის განხილვამდე. Ისე.
Მონაცემთა ბაზა - ფაილი ან ფაილების ნაკრები შეკვეთილი მონაცემთა სტრუქტურებისა და მათი ურთიერთობის შესანახად. ძალიან ხშირად, მონაცემთა ბაზას უწოდებენ მართვის სისტემას - ეს არის მხოლოდ ინფორმაციის საცავი გარკვეული ფორმატით და შეუძლია მუშაობა სხვადასხვა DBMS-თან.
მაგიდა - წარმოვიდგინოთ საქაღალდე, რომელიც ინახავს გარკვეული ატრიბუტის მიხედვით დაჯგუფებულ დოკუმენტებს, მაგალითად, ბოლო თვის შეკვეთების სიას. ეს არის ცხრილი კომპიუტერში ცალკე ცხრილს აქვს თავისი უნიკალური სახელი.
Მონაცემთა ტიპი - ინფორმაციის ტიპი, რომელიც დასაშვებია შესანახად კონკრეტულ სვეტში ან მწკრივში. ეს შეიძლება იყოს ნომრები ან გარკვეული ფორმატის ტექსტი.
სვეტი და მწკრივი- ჩვენ ყველანი ვიმუშავეთ ცხრილებთან, რომლებსაც ასევე აქვთ რიგები და სვეტები. ნებისმიერი რელაციური მონაცემთა ბაზა იგივენაირად მუშაობს ცხრილებთან. რიგებს ზოგჯერ ჩანაწერებს უწოდებენ.
მთავარი გასაღები- ცხრილის თითოეულ რიგს შეიძლება ჰქონდეს ერთი ან მეტი სვეტი მისი ცალსახად იდენტიფიცირებისთვის. პირველადი გასაღების გარეშე, ძალიან რთულია სასურველი რიგების განახლება, შეცვლა და წაშლა.
SQL(ინგლისური - სტრუქტურირებული შეკითხვის ენა) შეიქმნა მხოლოდ მონაცემთა ბაზებთან მუშაობისთვის და ამჟამად არის სტანდარტი ყველა პოპულარული DBMS-ისთვის. ენის სინტაქსი შედგება მცირე რაოდენობის ოპერატორებისგან და ადვილად შესასწავლია. მაგრამ, მიუხედავად გარეგანი სიმარტივისა, ეს საშუალებას იძლევა sql შექმნამოთხოვნები რთული ოპერაციებისთვის ნებისმიერი ზომის მონაცემთა ბაზით.
1992 წლიდან არსებობს საყოველთაოდ მიღებული სტანდარტი სახელწოდებით ANSI SQL. ის განსაზღვრავს ოპერატორების ძირითად სინტაქსს და ფუნქციებს და მხარს უჭერს DBMS ბაზრის ყველა ლიდერს, როგორიცაა ORACLE. შეუძლებელია ენის ყველა შესაძლებლობის დაფარვა ერთ პატარა სტატიაში, ამიტომ მოკლედ განვიხილავთ მხოლოდ ძირითად SQL შეკითხვებს. მაგალითები ნათლად აჩვენებს ენის სიმარტივეს და შესაძლებლობებს:
მონაცემთა ბაზის ცხრილის ყველა სვეტი ინახავს იმავე ტიპის მონაცემებს. მონაცემთა ტიპები SQL-ში იგივეა, რაც სხვა პროგრამირების ენებში.
SQL-ში ახალი მონაცემთა ბაზების, ცხრილების და სხვა მოთხოვნების შესაქმნელად ორი გზა არსებობს:
ოპერატორის მიერ იქმნება ახალი მონაცემთა ბაზა მონაცემთა ბაზის შექმნა<наименование базы данных>; . როგორც ხედავთ, სინტაქსი მარტივი და ლაკონურია.
ჩვენ ვქმნით ცხრილებს მონაცემთა ბაზაში 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
შეკითხვის შედეგად შესაძლებელია მწკრივის ყველა სვეტის მნიშვნელობის მიღება. ამისათვის გამოიყენება "*" ნიშანი:
აირჩიეთ * საქონლისგან
ცხრილის მწკრივის დასამატებლად გამოიყენება 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 Access მოთხოვნების განსახორციელებლად მოსახერხებელი ინტერაქტიული შეკითხვის დიზაინერის საშუალებით (Query Designer), რომლის გამოყენებითაც შეგიძლიათ შექმნათ და დაუყოვნებლივ შეასრულოთ ნებისმიერი სირთულის SQL განცხადებები.
სერვერზე წვდომის რეჟიმი ასევე მხარდაჭერილია, რომელშიც Access DBMS შეიძლება გამოყენებულ იქნას როგორც SQL მოთხოვნების გენერატორი ODBC მონაცემთა ნებისმიერი წყაროსთვის. ეს შესაძლებლობა საშუალებას აძლევს Access აპლიკაციებს ნებისმიერ ფორმატთან ურთიერთობისას.
ვინაიდან SQL მოთხოვნებს არ გააჩნიათ პროცედურული პროგრამირების ენების ყველა მახასიათებელი, როგორიცაა მარყუჟები, ფილიალები და ა.შ., DBMS მომწოდებლები ავითარებენ SQL-ის საკუთარ ვერსიას გაფართოებული ფუნქციებით. პირველ რიგში, ეს არის შენახული პროცედურების მხარდაჭერა და პროცედურული ენების სტანდარტული ოპერატორები.
ენის ყველაზე გავრცელებული დიალექტები:
MySQL DBMS განაწილებულია GNU ზოგადი საჯარო ლიცენზიით. არსებობს კომერციული ლიცენზია საბაჟო მოდულების შემუშავების შესაძლებლობით. როგორც განუყოფელი ნაწილი, ის შედის ინტერნეტ სერვერების ყველაზე პოპულარულ ასამბლეებში, როგორიცაა XAMPP, WAMP და LAMP და არის ყველაზე პოპულარული DBMS ინტერნეტში აპლიკაციების შემუშავებისთვის.
ის შეიქმნა Sun Microsystems-ის მიერ და ამჟამად იმართება Oracle Corporation-ის მიერ. მხარს უჭერს მონაცემთა ბაზებს 64 ტერაბაიტამდე, SQL:2003 სინტაქსის სტანდარტს, მონაცემთა ბაზების რეპლიკაციას და ღრუბლოვან სერვისებს.
SQL მოთხოვნა არის შეკითხვა, რომელიც შექმნილია SQL განცხადებების გამოყენებით. SQL (Structured Query Language) გამოიყენება მოთხოვნების შესაქმნელად და რელაციური მონაცემთა ბაზების განახლებისა და მართვისთვის, როგორიცაა Microsoft Access მონაცემთა ბაზები.
როდესაც მომხმარებელი ქმნის შეკითხვას შეკითხვის დიზაინის ხედში, Microsoft Access ავტომატურად ქმნის ექვივალენტურ SQL განცხადებას. არსებობს უამრავი მოთხოვნა, რომელიც შეიძლება გაკეთდეს მხოლოდ SQL რეჟიმში. გამოცდილ პროგრამისტებს ხშირად უადვილდებათ SQL-ში გამოხატვის დაუყოვნებლივ დაწერა, ვიდრე შეკითხვის ფორმირება.
მოთხოვნის ტიპი კონსტრუქტორში:
რთული გამოთვლებით, შედეგის მისაღებად თანმიმდევრულად უნდა გააკეთოთ რამდენიმე მოთხოვნა. ნათელია, რომ ეს მოქმედებები ავტომატურად უნდა განხორციელდეს მომხმარებლის ჩარევის გარეშე.
ამისათვის გამოიყენება მაკროები, რომლებიც შედგება რამდენიმე თანმიმდევრულად შესრულებული ბრძანებისგან.
გამოთვლები შეკითხვებში, ფორმულების შექმნისა და რედაქტირების შესაძლებლობა.
შეკითხვის სქემაში მითითებული ცხრილების ველებისთვის, შეგიძლიათ მიუთითოთ ნებისმიერი გაანგარიშება.
გამოთვლების შესასრულებლად, თქვენ უნდა დაამატოთ დამატებითი გამოთვლილი ველები მოთხოვნას, რომელთა მნიშვნელობები გამოითვლება სხვა მოთხოვნის ველების მნიშვნელობების საფუძველზე.
საბოლოო მოთხოვნები, დაჯგუფება, საბოლოო ფუნქციები.
საბოლოო მოთხოვნა იქმნება რეჟიმის გამოყენებით - Summary query.
შეიძლება გამოყენებულ იქნას სამი ცხრილი, მათ შორის ბმული ცხრილი.
ამ შემთხვევაში, თქვენ შეგიძლიათ გამოიძახოთ კონტექსტური მენიუ მოთხოვნის ნებისმიერი ადგილიდან (მაუსის მარჯვენა ღილაკი) და აირჩიოთ "ჯგუფური ოპერაციების" ფუნქცია.
მოთხოვნის ფორმა გამოჩნდება ახალი ხაზიდაჯგუფება.
ჯამური ფუნქციები: ველში, რომლისთვისაც გვინდა გამოვთვალოთ ჯამები, აირჩიეთ სიიდან "ჯამ" ფუნქცია არჩეული ველების ყველა მნიშვნელობის შესაჯამებლად. Count ფუნქცია დათვლის ველის მნიშვნელობების რაოდენობას. ინფორმაციის რედაქტირება microsoft
მოთხოვნა არის გამოძახება DBMS-ში მონაცემთა ნებისმიერი ოპერაციების შესასრულებლად: მონაცემთა ნაწილის არჩევა მთლიანი მოცულობიდან, გამოთვლილი ველების დამატება, მონაცემთა ნაყარი შეცვლა და ა.შ.
მოთხოვნისას შეგიძლიათ:
მოთხოვნის ტიპები:
მოთხოვნები გამოიყენება, როგორც ჩანაწერების წყაროები ფორმებისა და ანგარიშებისთვის. უმეტესწილად, როგორც ფორმებში, ასევე ანგარიშებში, გაცემამდე უნდა აირჩიოთ მონაცემების ნაწილი გარკვეული პირობების მიხედვით და დაალაგოთ მონაცემები. ეს კეთდება მოთხოვნით. მოთხოვნა შეიძლება შეინახოს ცალკე ან დაუკავშირდეს ფორმას ან ანგარიშს.
Microsoft Access-ში არსებობს რამდენიმე სახის მოთხოვნა.
Microsoft Access არის DBMS-ის რელაციური ტიპი, რომელიც გონივრულად აბალანსებს მონაცემთა ბაზის მართვის თანამედროვე სისტემებისთვის დამახასიათებელ ყველა ინსტრუმენტს და შესაძლებლობებს. რელაციური მონაცემთა ბაზა აადვილებს მონაცემთა პოვნას, ანალიზს, შენარჩუნებას და დაცვას, რადგან ისინი ინახება ერთ ადგილას. წვდომა ინგლისურიდან თარგმანში ნიშნავს "წვდომას". MS Access არის ერთ-ერთი ყველაზე ძლიერი, მოქნილი და ადვილად გამოსაყენებელი DBMS. თქვენ შეგიძლიათ მასში შექმნათ აპლიკაციების უმეტესობა პროგრამის ერთი ხაზის დაწერის გარეშე, მაგრამ თუ გჭირდებათ რაიმე ძალიან რთული შექმნა, მაშინ ამ შემთხვევაში MS Access გთავაზობთ პროგრამირების მძლავრ ენას - Visual Basic Application.
Microsoft Access DBMS-ის პოპულარობა განპირობებულია შემდეგი მიზეზებით:
შესწავლაში ხელმისაწვდომობა და გაგება საშუალებას აძლევს Access იყოს ერთ-ერთი საუკეთესო სისტემებიმონაცემთა ბაზის მართვის აპლიკაციების სწრაფი შექმნა;
OLE ტექნოლოგიის გამოყენების უნარი;
Microsoft Office პაკეტთან ინტეგრაცია;
ვებ ტექნოლოგიების სრული მხარდაჭერა;
ვიზუალური ტექნოლოგია საშუალებას გაძლევთ მუდმივად ნახოთ თქვენი ქმედებების შედეგები და გამოასწოროთ ისინი;
ობიექტების განვითარებისთვის "ოსტატების" დიდი ნაკრების არსებობა.
ობიექტების ძირითადი ტიპები, რომლებთანაც მუშაობს პროგრამა არის: ცხრილი, შეკითხვა, ფორმა, ანგარიში, გვერდი, მაკრო, მოდული.
ცხრილი არის ობიექტი, რომელიც გამოიყენება მონაცემების შესანახად. თითოეული ცხრილი შეიცავს ინფორმაციას ობიექტის შესახებ გარკვეული ტიპის. ცხრილი შეიცავს ველებს (სვეტებს), რომლებიც ინახავს სხვადასხვა სახის მონაცემებს და ჩანაწერებს (სტრიქონებს). თითოეული ცხრილისთვის უნდა განისაზღვროს პირველადი გასაღები (ერთი ველი, რომელიც შეიცავს თითოეულ ჩანაწერს უნიკალური ღირებულებაან რამდენიმე ველი, რომელთა კუმულაციური მნიშვნელობა უნიკალურია თითოეული ჩანაწერისთვის), რომელიც არის უნიკალური იდენტიფიკატორი ცხრილის თითოეული ჩანაწერისთვის.
მონაცემთა წვდომის სიჩქარის გასაზრდელად, ცხრილის ცალკეული ველები (ან მათი კომბინაცია) შეიძლება გამოცხადდეს ინდექსებად. ინდექსი არის ინსტრუმენტი, რომელიც აჩქარებს ცხრილის ძიებასა და დახარისხებას საკვანძო მნიშვნელობების გამოყენებით, რაც შესაძლებელს ხდის ცხრილის რიგების უნიკალურობის უზრუნველყოფას. ცხრილის პირველადი გასაღები ინდექსირებულია ავტომატურად. დაუშვებელია ინდექსების შექმნა ველებისთვის გარკვეული ტიპის მონაცემთა ტიპებით.
მოთხოვნა არის ობიექტი, რომელიც მომხმარებელს საშუალებას აძლევს მიიღოს სასურველი მონაცემები ერთი ან მეტი ცხრილიდან. თქვენ ასევე შეგიძლიათ გამოიყენოთ მოთხოვნები ახალი ცხრილების შესაქმნელად ერთი ან მეტი ცხრილის მონაცემების გამოყენებით, რომლებიც უკვე არსებობს. მოთხოვნის ყველაზე გავრცელებული ტიპი არის შერჩეული შეკითხვა. შერჩეული მოთხოვნა ირჩევს მონაცემებს ერთი ან მეტი ცხრილიდან მითითებული პირობების საფუძველზე და შემდეგ აჩვენებს მათ სასურველი თანმიმდევრობით.
ფორმა არის ობიექტი, უპირველეს ყოვლისა, მონაცემთა შეყვანისთვის, ეკრანზე გამოსატანად ან აპლიკაციის მუშაობის გასაკონტროლებლად.
ანგარიში - ობიექტი, რომელიც შექმნილია დოკუმენტის შესაქმნელად, რომელიც მოგვიანებით შეიძლება დაიბეჭდოს ან შეიტანოს სხვა განაცხადის დოკუმენტში.
ვიზუალური განვითარების პროგრამირების ბაზა
გვერდი - გამოიყენება მონაცემთა წვდომისათვის მიმდინარე Access მონაცემთა ბაზაში.
მაკრო არის ობიექტი, რომელიც წარმოადგენს ერთი ან რამდენიმე მოქმედების სტრუქტურირებულ აღწერას, რომელიც Access-მა უნდა შეასრულოს კონკრეტული მოვლენის საპასუხოდ.
მოდული არის ობიექტი, რომელიც შეიცავს Microsoft Visual Basic პროგრამებს, რომლებიც საშუალებას გაძლევთ დაშალოთ პროცესი მცირე ნაბიჯებად და აღმოაჩინოთ ის შეცდომები, რომლებიც ვერ მოიძებნა მაკროების გამოყენებით.
DBMS გაშვებულია Start - პროგრამები - Microsoft Access-ის მიერ. გაუშვით ბრძანება File - New.
მონაცემთა ბაზის ობიექტებთან მუშაობის ინტერფეისი ერთიანია. თითოეული მათგანისთვის არსებობს მუშაობის სტანდარტული რეჟიმები: შექმნა (ობიექტების სტრუქტურის შექმნა); კონსტრუქტორი (ობიექტების სტრუქტურის შეცვლა); Open (View, Run - შექმნილია მონაცემთა ბაზის ობიექტებთან მუშაობისთვის).
SQL (Structured Query Language - სტრუქტურირებული შეკითხვის ენა) 1986 წლიდან. არის სტანდარტული რელაციური მონაცემთა ბაზის ენა. კერძოდ, ის გამოიყენება Access და Excel აპლიკაციებში.
SQL არის საინფორმაციო-ლოგიკური ენა, რომელიც შექმნილია შენახული მონაცემების აღსაწერად, შენახული მონაცემების ამოღებისა და მონაცემების შესაცვლელად. თავდაპირველად, SQL იყო მომხმარებლის მონაცემთა ბაზასთან მუშაობის ძირითადი გზა და იყო ბრძანებების (ოპერატორების) მცირე ნაკრები, რომელიც იძლეოდა ცხრილების შექმნას, ცხრილებში ახალი ჩანაწერების დამატებას, ცხრილებიდან ჩანაწერების ამოღებას, ჩანაწერების წაშლას და ცხრილის სტრუქტურების შეცვლას. მზარდი სირთულის გამო, SQL ენა გახდა უფრო გამოყენებითი პროგრამირების ენა და მომხმარებლებმა შეძლეს გამოიყენონ ვიზუალური შეკითხვის შემქმნელები.
SQL ენა არის ოპერატორების ნაკრები:
მონაცემთა განსაზღვრის ოპერატორები (Data Definition Language, DDL);
მონაცემთა მანიპულირების ოპერატორები (Data Manipulation Language, DML);
მონაცემთა წვდომის განსაზღვრის ოპერატორები (Data Control Language, DCL);
ტრანზაქციის კონტროლის ენის (TCL) განცხადებები.
MS Access-ში მოთხოვნები ინახება და ხორციელდება SQL ენის გამოყენებით. მიუხედავად იმისა, რომ მოთხოვნების უმეტესობა შეიძლება შეიქმნას გრაფიკული ხელსაწყოების გამოყენებით (თარგების მოთხოვნები), ისინი ინახება როგორც SQL განცხადებები. ზოგიერთ შემთხვევაში (მაგალითად, ქვემოთხოვნებში), მხოლოდ SQL შეიძლება გამოყენებულ იქნას.
SQL არის არაპროცედურული ენა. ის უბრალოდ აცხადებს, რა უნდა გაკეთდეს და შესრულება დაევალა DBMS-ს (მონაცემთა ბაზის მართვის სისტემას).
SQL იყენებს სამ ღირებულებიან ლოგიკას. ტრადიციულ ლოგინებთან ერთად TRUE და FALSE გამოიყენება NULL (უცნობი ან NO DATA).
ოპერაციები შესრულებულია მთლიან მონაცემთა ნაკრებებზე და არა ცალკეულ ელემენტებზე, როგორც სხვა პროგრამირების ენებში.
SQL მოთხოვნა შედგება განცხადებებისგან. თითოეული ინსტრუქცია შეიძლება შეიცავდეს რამდენიმე პუნქტს.
დროთა განმავლობაში, პროცესმა შეიძლება მოითხოვოს Microsoft Office Access (Access) ფაილ-სერვერის მონაცემთა ბაზის მიგრაცია კლიენტ-სერვერის DBMS ფორმატში. ჩვეულებრივ ODBC გამოიყენება ამ მიზნით. თუმცა, Microsoft SQL Server-ზე (MS SQL) გადასატანად Access და MS SQL DBMS აქვს მოსახერხებელი სპეციალიზებული ხელსაწყოები.
მონაცემთა ბაზის Access-დან MS SQL-ზე გადატანის სამი გზა არსებობს. განვიხილოთ ისინი ყველა მარტივი მონაცემთა ბაზის მაგალითზე, რომელიც შედგება ორი ცხრილისა და ერთი შეკითხვისგან.
გადაცემის დასაწყებად, თქვენ უნდა დააჭიროთ ღილაკს "SQL Server" ჩანართში "მონაცემთა მოძრაობა" განყოფილებაში "მუშაობა მონაცემთა ბაზებთან".
ფანჯარაში, რომელიც იხსნება, თქვენ უნდა აირჩიოთ სად გადაეცემა მონაცემები.
არსებობს ორი ვარიანტი:
ჩვენ ვაყენებთ სერვერის სახელს, რომელზეც გადავიტანთ მონაცემთა ბაზას, მონაცემთა ბაზის სახელს, რომელიც იქმნება და მიუთითეთ მომხმარებლის სახელი და პაროლი დასაკავშირებლად.
ერთი ცხრილის ასარჩევად გამოიყენეთ ">" ღილაკი, ხოლო ყველა ცხრილის ასარჩევად გამოიყენეთ ღილაკი ">>". გადარიცხვაზე უარის თქმის მიზნით, ღილაკები "<» и «<<» соответственно.
ცხრილების არჩევის შემდეგ შეგიძლიათ დააყენოთ მათი გადაცემის დამატებითი ვარიანტები. კერძოდ, Access-ის თანამედროვე ვერსიებს შეუძლიათ არა მხოლოდ მონაცემთა ცხრილების ექსპორტი, არამედ მათ შორის ურთიერთობების ექსპორტიც. ეს მნიშვნელოვნად ამცირებს მონაცემთა ბაზის მიგრაციისთვის საჭირო დროს, რადგან მიგრაციის შემდეგ მათი ხელახალი შექმნა არ არის საჭირო.
როდესაც ყველა საჭირო ინფორმაცია შეგროვდება, შეგიძლიათ ან დაუბრუნდეთ ერთ-ერთ წინა ნაბიჯს გადამოწმებისთვის, ან დაიწყოთ გადაცემის პროცესი ღილაკზე „დასრულება“ დაწკაპუნებით.
გადაცემის პროცესის პროგრესი ნათლად არის ნაჩვენები სპეციალურ ფანჯარაში.
მიგრაციის დასრულების შემდეგ, შეგიძლიათ გახსნათ SQL Server Management Studio და ნახოთ შედეგი.
ეს მეთოდი ყველაზე მარტივი და მოსახერხებელია, მაგრამ, სამწუხაროდ, საშუალებას გაძლევთ გადაიტანოთ მხოლოდ ცხრილები და მათი თანმხლები ელემენტები (ინდექსები, ურთიერთობები და ა.შ.).
MS SQL-ს შეუძლია მონაცემთა იმპორტი სხვადასხვა წყაროდან. მაგრამ პირდაპირი იმპორტი Access-დან შესაძლებელია მხოლოდ ძველი ფორმატის მონაცემთა ბაზებისთვის (.mdb).
ასეთი მონაცემთა ბაზების იმპორტის დეტალური ინსტრუქციები შეგიძლიათ იხილოთ.
ახალი ფორმატების (2007 და ზემოთ) მონაცემთა ბაზების იმპორტი გაცილებით რთულია.
ამ პრობლემის მოგვარების ორი გზა არსებობს:
სამწუხაროდ, ODBC მიდგომა საკმაოდ რთულია Windows-ის 64-ბიტიან ვერსიებზე.
მიზეზი ის არის, რომ MS SQL-ის 64-ბიტიანი ვერსიები შეფუთულია SQL Server Management Studio-ის 32-ბიტიან ვერსიებთან. ეს გარემოება ნიშნავს, რომ Access მონაცემთა ბაზები, რომლებისთვისაც მონაცემთა წყაროები შეიქმნა 64-ბიტიან დრაივერებზე დაყრდნობით, არ შეიძლება იმპორტირებული იყოს ამ პროგრამის გამოყენებით.
ისევ არსებობს ორი გამოსავალი (იგულისხმება მხოლოდ გრაფიკული ინტერფეისის გამოყენებით მეთოდები):
თუმცა, მაშინაც კი, თუ თქვენ მაინც მოახერხებთ იმპორტის პროცესის დამკვიდრებას, ამის სარგებელი შეიძლება ბევრად ნაკლები იყოს, ვიდრე დახარჯული დრო და ძალისხმევა.
იმპორტის დროს გადადის მხოლოდ თავად ცხრილები და მათი შიგთავსი და სხვა არაფერი (შედარება წინა მეთოდის შესაძლებლობებთან).
აქვე უნდა აღინიშნოს, რომ Access-დან პირდაპირი იმპორტით ნაწილობრივ მოგვარებულია მოთხოვნების ექსპორტის პრობლემა (ODBC-ის საშუალებით შეკითხვებზე წვდომა არ არის). მაგრამ, ნაგულისხმევად, მოთხოვნები იმპორტირებულია MS SQL მონაცემთა ბაზაში ჩვეულებრივი ცხრილების სახით.
საბედნიეროდ, შესაძლებელია იმპორტის პარამეტრების დაზუსტება და შეგიძლიათ ხელით შეცვალოთ SQL მოთხოვნა, რათა შექმნათ ცხრილი მოთხოვნით ხედის შესაქმნელად.
ამისათვის, არჩეული წვდომის მოთხოვნის ზემოთ სკრინშოტის ფანჯარაში დააჭირეთ ღილაკს "შეცვლა".
ფანჯარაში, რომელიც იხსნება, დააჭირეთ ღილაკს "Change SQL ...".
გაიხსნება SQL შეკითხვის რედაქტირების ფანჯარა, რომელშიც, ფაქტობრივად, თქვენ უნდა შეცვალოთ ავტომატურად გენერირებული მოთხოვნა
საკუთართან ერთად.
შედეგად, მოთხოვნა Access-დან გადაეცემა MS SQL მონაცემთა ბაზაში სწორად, როგორც ხედი და არა ცხრილი.
რა თქმა უნდა, ასეთი პარამეტრები არის შრომატევადი ხელით შრომა, რომელიც ასევე მოითხოვს გარკვეულ ცოდნას და უნარებს, მაგრამ მაინც, როგორც ამბობენ, „არაფერზე უკეთესი“.
ამიტომ, Access მონაცემთა ბაზების MS SQL-ზე გადატანის ეს მეთოდი უფრო შესაფერისია ორივე DBMS-ის კვალიფიციური სპეციალისტებისთვის.
ქვემოთ მოცემულია Access მონაცემთა ბაზის იმპორტის მაგალითი ODBC-ის გამოყენებით Windows-ის 32-ბიტიან ვერსიაზე. Windows-ის 64-ბიტიან ვერსიაზე, Access-ის 32-ბიტიანი ვერსიის გამოყენებისას, იმპორტი მსგავსია, მაგრამ მონაცემთა წყარო იქმნება 32-ბიტიან ODBC მენეჯერში.
ჩვენ ვქმნით მონაცემთა წყაროს.
ფანჯარაში, რომელიც იხსნება, შეიყვანეთ მისი სახელი.
შემდეგ დააწკაპუნეთ ღილაკზე „აირჩიეთ“ და მიუთითეთ Access-ის რომელ მონაცემთა ბაზასთან გსურთ დაკავშირება.
როდესაც მითითებულია წყაროს სახელი და მონაცემთა ბაზის ფაილი, რჩება ღილაკზე "Ok" დაწკაპუნება და სასურველი Access მონაცემთა ბაზის მონაცემთა წყარო მზად არის.
ახლა თქვენ შეგიძლიათ პირდაპირ გააგრძელოთ მონაცემთა ბაზის იმპორტი MS SQL-ში.
ამისათვის, მონაცემთა ბაზის კონტექსტურ მენიუში, რომელშიც გსურთ იმპორტი, აირჩიეთ ელემენტი "დავალებები" -\u003e "მონაცემების იმპორტი".
გაიხსნება "მონაცემთა იმპორტისა და ექსპორტის ოსტატი".
ჩამოსაშლელ სიაში „მონაცემთა წყარო“ უნდა აირჩიოთ „.Net Framework Data Provider for Odbc“ (თუ ნაგულისხმევად არ არის არჩეული) და ცხრილის Dsn სტრიქონში მიუთითეთ წვდომისთვის ზემოთ შექმნილი მონაცემთა წყაროს სახელი. მონაცემთა ბაზა. კავშირის სტრიქონი ("დაკავშირების სტრიქონი") ავტომატურად გენერირებული იქნება.
შემდეგი, თქვენ უნდა მიუთითოთ რომელი მონაცემთა ბაზა, MS SQL იმპორტის რომელი მაგალითი. ამისათვის, ღილაკზე „შემდეგი“ დაწკაპუნების შემდეგ, ჩამოსაშლელ სიაში „დანიშნულების ადგილი“ აირჩიეთ „Microsoft SQL Server Native Client“ (როგორც ნაჩვენებია ქვემოთ მოცემულ ეკრანის სურათზე) ან „Microsoft OLE DB Provider SQL Server-ისთვის“, მიუთითეთ მონაცემთა ბაზის სასურველი მომხმარებლის სახელი და პაროლი კავშირებისთვის.
შემდეგ თქვენ უნდა აირჩიოთ იმპორტირებული ცხრილები. როგორც ზემოთ აღინიშნა, ODBC-ის გამოყენებისას Access მოთხოვნების იმპორტი მიუწვდომელია. ამიტომ, წინა სკრინშოტისგან განსხვავებით იმპორტირებული ობიექტების სიით, ეს სია შეიცავს მხოლოდ ცხრილებს.
საკონტროლო ველების დახმარებით შეგიძლიათ აირჩიოთ როგორც ყველა ცხრილი ერთდროულად (რაც კეთდება ამ მაგალითში), ასევე ზოგიერთი მათგანი ინდივიდუალურად.
შემდეგ გამოჩნდება ფანჯარა იმპორტის პროცესის საბოლოო პარამეტრებით. მოდით დავტოვოთ ყველა ნაგულისხმევი მნიშვნელობა.
ღილაკზე „დასრულება“ დაჭერის შემდეგ იმპორტის პროცესი დასრულდება. თუ ყველაფერი გაკეთდა სწორად და იმპორტი წარმატებულია, ფანჯარაში, სადაც ინფორმაციაა იმპორტის შესახებ, შეცდომებს არ შეიცავს (იხილეთ ეკრანის სურათი ქვემოთ).
ოსტატის დასასრულებლად, უბრალოდ დააჭირეთ ღილაკს "დახურვა".
შედეგის ნახვა შეგიძლიათ SQL Server Management Studio-ით.
ეს მეთოდი უნივერსალურია წვდომიდან მონაცემების ნებისმიერ სხვა DBMS-ზე ექსპორტისთვის. საკმარისია, რომ ის მხარს უჭერს ODBC-თან მუშაობას.
ასეთი ექსპორტის მაგალითი უკვე განვიხილეთ სტატიაში ""
ამისთვისᲥᲐᲚᲑᲐᲢᲝᲜᲘSQL-მ საშუალება მისცა მონაცემთა ბაზის მიგრაციასწვდომა არ არის საჭირო, ვინაიდან მხოლოდ მონაცემების მქონე ცხრილები ექსპორტირებულია, ხოლო მოთხოვნები მხოლოდ ჩვეულებრივი ცხრილების სახით.
თუმცა, ეს პორტაბელურობა ჯერ კიდევ ხელმისაწვდომია (გამონაკლისი არ იყო 2014 წლის ვერსია). ასე რომ, მოდით, ამასაც მივხედოთ.
პირველი, მოდით შევქმნათ მონაცემთა წყარო MS SQL-თან მუშაობისთვის (მოდით, ეს იყოს მორგებული DSN).
მიუთითეთ დრაივერი წყაროსთვის.
ამის შემდეგ დაიწყება მისი შექმნისა და კონფიგურაციის პროცესი.
დააყენეთ მონაცემთა წყაროს სახელი და მიუთითეთ MS SQL ინსტანციის სახელი, რომელთანაც გსურთ დაკავშირება.
ამის შემდეგ ვაზუსტებთ მონაცემთა ბაზას, რომელშიც ვგეგმავთ ცხრილის ან მოთხოვნის გადატანას. გადარიცხვა გამოყენებითODBC შეიძლება შესრულდეს მხოლოდ უკვე არსებულ მონაცემთა ბაზაზე. ამიტომ, თუ საჭიროა მონაცემთა ახალ მონაცემთა ბაზაში გადატანა, ის ჯერ უნდა შეიქმნას.
ღილაკზე "დასრულება" დაწკაპუნების შემდეგ გამოჩნდება ფანჯარა შემაჯამებელი ინფორმაციით შექმნილი მონაცემთა წყაროს შესახებ.
იმისათვის, რომ მონაცემთა წყარო საბოლოოდ შეიქმნას, უბრალოდ დააჭირეთ ღილაკს "OK". მაგრამ, უმჯობესია ჯერ შეამოწმოთ მისი შესრულება ღილაკზე "შეამოწმეთ მონაცემთა წყარო".
თუ ყველაფერი სწორად გაკეთდა, გამოჩნდება შეტყობინება წარმატებული გადამოწმების შესახებ.
ახლა, როდესაც არსებობს მონაცემთა წყარო, ჩვენ შეგვიძლია პირდაპირ გავაგრძელოთ მიგრაციის პროცესი. მაგალითად, ჩვენ გამოვიტანთ ერთ მოთხოვნას "კონტაქტების მოთხოვნა" მონაცემთა ბაზიდან.
ამისათვის აირჩიეთ ის მაუსით და დააჭირეთ ღილაკს "Advanced" ჩანართში "ექსპორტი" განყოფილებაში "გარე მონაცემები". ჩამოსაშლელ მენიუში აირჩიეთ "ODBC მონაცემთა ბაზა".
ამ შემთხვევაში, თავდაპირველი მნიშვნელობა რჩება.
"Ok" ღილაკზე დაჭერის შემდეგ, თქვენ უნდა აირჩიოთ შექმნილი მონაცემთა წყარო.
შემდეგ შეიყვანეთ მომხმარებლის სახელი და პაროლი სერვერთან დასაკავშირებლად.
"Ok" ღილაკზე დაჭერის შემდეგ განხორციელდება ექსპორტი.
თუმცა, როგორც ზემოთ აღინიშნა, საექსპორტო შედეგი შეკითხვის შემთხვევაში არ არის სწორი.
„კონტაქტების მოთხოვნის“ ხედის ნაცვლად, MS SQL მონაცემთა ბაზაში შეიქმნა ამავე სახელწოდების ცხრილი.
ასევე, მაშინაც კი, თუ თქვენ მხოლოდ ცხრილების ექსპორტს აკეთებთ, ექსპორტის შემდეგ ბევრი დამატებითი ნაბიჯია გადასადგმელი (ბმულების ხელახალი შექმნა და ა.შ.). აქედან გამომდინარე, მონაცემთა ბაზების გადაცემის აღწერილი მეთოდი Access-დან MS SQL-ზე პრაქტიკულად აღარ გამოიყენება.
საგანმანათლებლო პროექტის "მაღაზია" აღწერაცხრილის ბმული სქემა
ცხრილების აღწერა
m_category - პროდუქტის კატეგორიები
მ_შემოსავალი - საქონლის მიღება
m_შედეგი - საქონლის მოხმარება
m_product - დირექტორია, პროდუქტის აღწერა
m_supplier - დირექტორია; მიმწოდებლის ინფორმაცია
m_unit - დირექტორია; ერთეულები
ამ სახელმძღვანელოში მოცემული მაგალითების პრაქტიკულად შესამოწმებლად, თქვენ უნდა გქონდეთ ხელმისაწვდომი შემდეგი პროგრამული უზრუნველყოფა:
Microsoft Access 2003 ან უფრო ახალი.
ცხრილის ველის რედაქტირების რეჟიმში გადასასვლელად აირჩიეთ დიზაინის რეჟიმი ზედა პანელზე:
SQL მოთხოვნის შედეგის საჩვენებლად, ორჯერ დააწკაპუნეთ მოთხოვნის სახელზე მარცხენა პანელში:
SQL შეკითხვის რედაქტირების რეჟიმში გადასასვლელად აირჩიეთ SQL რეჟიმი ზედა პანელზე:
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-ის არსებობა (ნაგულისხმევი) ვარაუდობენ:
აირჩიეთ *
მ_შემოსავლიდან
SQL შეკითხვა Q006.ცხრილიდან საჭირო ჩანაწერების შესარჩევად გამოიყენება სხვადასხვა ლოგიკური გამონათქვამები, რომლებიც გამოხატავს შერჩევის მდგომარეობას. ლოგიკური გამოხატულება მოდის WHERE პუნქტის შემდეგ. m_income ცხრილიდან ყველა ჩანაწერის მიღების მაგალითი, რომლის თანხის მნიშვნელობა 200-ზე მეტია:
აირჩიეთ *
მ_შემოსავლიდან
SQL შეკითხვა Q007.რთული პირობების გამოსახატავად გამოიყენება ლოგიკური ოპერაციები AND (შეერთება), OR (დისიუნქცია) და NOT (ლოგიკური უარყოფა). m_outcome ცხრილიდან ყველა ჩანაწერის მიღების მაგალითი, რომლის თანხის მნიშვნელობა არის 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 მნიშვნელობას:
SQL შეკითხვა Q009.არის ორი რამ, რასაც ყურადღება უნდა მიაქციოთ ამ SQL მოთხოვნაში: 1) საძიებო ტექსტი ჩასმულია ერთ ბრჭყალებში ("); 2) თარიღი არის #Month/Day/Year# ფორმატში, რაც სწორია MS-ისთვის. წვდომა. სხვა სისტემებში თარიღის ფორმატი შეიძლება განსხვავებული იყოს. რძის მიღების შესახებ ინფორმაციის ჩვენების მაგალითი 2011 წლის 12 ივნისს. ყურადღება მიაქციეთ თარიღის ფორმატს #6/12/2011#:
SELECT dt, product_id, სათაური, თანხა, ფასი
SQL შეკითხვა Q010. BETWEEN ინსტრუქცია გამოიყენება შესამოწმებლად, ეკუთვნის თუ არა მას მნიშვნელობების დიაპაზონი. SQL მოთხოვნის მაგალითი, რომელიც აჩვენებს ინფორმაციას 2011 წლის 1 ივნისიდან 30 ივნისამდე მიღებულ საქონელზე:
აირჩიეთ *
FROM m_income INNER JOIN m_product
მოთხოვნა Q011.აჩვენებს ინფორმაციას პროდუქტების შესახებ m_product ცხრილიდან, რომლის კოდები ასევე მოცემულია m_income ცხრილში:
აირჩიეთ *
FROM m_product
მოთხოვნა Q012.ნაჩვენებია პროდუქტების სია m_product ცხრილიდან, რომელთა კოდები არ არის m_outcome ცხრილში:
აირჩიეთ *
FROM m_product
მოთხოვნა Q013.ეს SQL მოთხოვნა აბრუნებს კოდებისა და პროდუქტის სახელების უნიკალურ სიას, რომლებსაც აქვთ კოდები m_income ცხრილში, მაგრამ არა m_outcome ცხრილში:
აირჩიეთ DISTINCT product_id, სათაური
მოთხოვნა Q014. m_category ცხრილიდან ნაჩვენებია კატეგორიების უნიკალური სია, რომელთა სახელები იწყება ასო M-ით:
აირჩიეთ განსხვავებული სათაური
მოთხოვნა Q015.მოთხოვნის ველებზე არითმეტიკული მოქმედებების შესრულების მაგალითი და შეკითხვაში ველების სახელის გადარქმევა (სხვა სახელი). ეს მაგალითი ითვლის ხარჯს = რაოდენობას * ფასს და მოგებას თითოეული პროდუქტის მოხმარების ჩანაწერისთვის, თუ ვივარაუდებთ, რომ მოგება არის გაყიდვების 7 პროცენტი:
მოთხოვნა Q016.არითმეტიკული ოპერაციების ანალიზით და გამარტივებით, შეგიძლიათ გაზარდოთ შეკითხვის შესრულების სიჩქარე:
SELECT dt, product_id, თანხა, ფასი, თანხა*ფასი AS outcome_sum,
მოთხოვნა Q017. INNER JOIN განაცხადის გამოყენებით, შეგიძლიათ დააკავშიროთ მონაცემები მრავალი ცხრილიდან. შემდეგ მაგალითში, ctgry_id-ის მნიშვნელობიდან გამომდინარე, m_income ცხრილის თითოეული ჩანაწერი ემთხვევა იმ კატეგორიის სახელს m_category ცხრილიდან, რომელსაც ეკუთვნის პროდუქტი:
აირჩიეთ c.title, b.title, dt, თანხა, ფასი, თანხა*ფასი AS შემოსავალი_ჯამად
მოთხოვნა Q018.ისეთ ფუნქციებს, როგორიცაა SUM - ჯამი, COUNT - რაოდენობა, AVG - საშუალო არითმეტიკული, MAX - მაქსიმალური მნიშვნელობა, MIN - მინიმალური მნიშვნელობა ეწოდება აგრეგატის ფუნქციებს. ისინი იღებენ მრავალ მნიშვნელობას და დამუშავებისას აბრუნებენ ერთ მნიშვნელობას. ველების ოდენობისა და ფასის ნამრავლის ჯამის გამოთვლის მაგალითი აგრეგატის ფუნქციაჯამი:
SELECT SUM(თანხა*ფასი) AS Total_Sum
მოთხოვნა Q019.მრავალი აგრეგატის ფუნქციის გამოყენების მაგალითი:
SELECT Sum(amount) AS Amount_Sum, AVG(amount) AS Amount_AVG,
მოითხოვეთ Q020.ამ მაგალითში გამოითვლება 2011 წლის ივნისში მიღებული 1 კოდის მქონე ყველა ელემენტის ჯამი:
აირჩიეთ თანხა(თანხა*ფასი) AS შემოსავალი_ჯამად
მოითხოვეთ Q021.შემდეგი SQL მოთხოვნა ითვლის, თუ რა ფასად გაიყიდა 4 ან 6 კოდის მქონე საქონელი:
აირჩიეთ თანხა (თანხა*ფასი) როგორც შედეგი_ჯამად
მოითხოვეთ Q022.გამოითვლება რა ოდენობით გაიყიდა 2011 წლის 12 ივნისს საქონელი 4 ან 6 კოდით:
აირჩიეთ თანხა (თანხა*ფასი) როგორც outcome_sum
მოითხოვეთ Q023.ამოცანა ეს არის. გამოთვალეთ ჯამური თანხა, რისთვისაც ჩაირიცხა კატეგორიის „ცომეული პროდუქტები“ საქონელი.
ამ პრობლემის გადასაჭრელად, თქვენ უნდა იმუშაოთ სამ ცხრილზე: m_income, m_product და m_category, რადგან:
ამ პრობლემის გადასაჭრელად ვიყენებთ შემდეგ ალგორითმს:
მოითხოვეთ 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
მოითხოვეთ Q026. GROUP BY პუნქტი გამოიყენება ჩანაწერების დასაჯგუფებლად. როგორც წესი, ჩანაწერები ჯგუფდება ერთი ან მეტი ველის მნიშვნელობით და თითოეულ ჯგუფზე გამოიყენება აგრეგატული ოპერაცია. მაგალითად, შემდეგი მოთხოვნა ქმნის ანგარიშს საქონლის გაყიდვის შესახებ. ანუ, იქმნება ცხრილი, რომელიც შეიცავს საქონლის სახელს და ოდენობას, რომლითაც ისინი იყიდება:
აირჩიეთ სათაური, SUM(თანხა*ფასი) როგორც outcome_sum
მოითხოვეთ Q027.გაყიდვების ანგარიში კატეგორიის მიხედვით. ანუ იქმნება ცხრილი, რომელიც შეიცავს პროდუქციის კატეგორიების დასახელებებს, ჯამურ რაოდენობას, რომლითაც იყიდება ამ კატეგორიების საქონელი და გაყიდვების საშუალო რაოდენობა. ROUND ფუნქცია გამოიყენება საშუალო მნიშვნელობის დასამრგვალებლად უახლოეს მეასედამდე (მეორე ათობითი ადგილი ათწილადის გამყოფის შემდეგ):
SELECT c.title, SUM(amount*price) AS outcome_sum,
მოითხოვეთ Q028.თითოეული პროდუქტისთვის გამოითვლება მისი ქვითრების მთლიანი და საშუალო რაოდენობა და აჩვენებს ინფორმაციას საქონლის შესახებ, რომლის ქვითრების საერთო რაოდენობა არის მინიმუმ 500:
SELECT product_id, SUM(amount) AS თანხა_sum,
მოითხოვეთ Q029.ეს მოთხოვნა ითვლის თითოეული პუნქტისთვის 2011 წლის მეორე კვარტალში მიღებული მისი შემოსულობების ჯამს და საშუალოს. თუ საქონლის მიღების მთლიანი რაოდენობა არ არის 1000-ზე ნაკლები, მაშინ ნაჩვენებია ინფორმაცია ამ პროდუქტის შესახებ:
აირჩიეთ სათაური, SUM(თანხა*ფასი) AS შემოსავალი_ჯამად
მოითხოვეთ Q030.ზოგიერთ შემთხვევაში აუცილებელია რომელიმე ცხრილის თითოეული ჩანაწერის შედარება სხვა ცხრილის თითოეულ ჩანაწერთან; რასაც დეკარტის პროდუქტს უწოდებენ. ასეთი შეერთების შედეგად მიღებულ ცხრილს დეკარტის ცხრილი ეწოდება. მაგალითად, თუ ზოგიერთ A ცხრილს აქვს 100 ჩანაწერი, ხოლო B ცხრილში 15, მაშინ მათი დეკარტისეული ცხრილი შედგება 100*15=150 ჩანაწერისგან. შემდეგი მოთხოვნა უერთდება m_income ცხრილის თითოეულ ჩანაწერს m_outcome ცხრილში:
FROM m_ შემოსავალი, m_შედეგი;
მოითხოვეთ Q031.ჩანაწერების ორი ველის მიხედვით დაჯგუფების მაგალითი. შემდეგი SQL მოთხოვნა ითვლის თითოეული მიმწოდებლისთვის მისგან მიღებული საქონლის რაოდენობას და რაოდენობას:
მოთხოვნა Q032.ჩანაწერების ორი ველის მიხედვით დაჯგუფების მაგალითი. შემდეგი მოთხოვნა ითვლის თითოეული მიმწოდებლისთვის ჩვენს მიერ გაყიდული პროდუქციის რაოდენობას და რაოდენობას:
აირჩიეთ მომწოდებლის_იდენტიფიკატორი, პროდუქტის_იდენტიფიკატორი, ჯამი (თანხა) AS თანხა_ჯამობა,
მოთხოვნა Q033.ამ მაგალითში, ზემოთ მოცემული ორი მოთხოვნა (q031 და q032) გამოიყენება როგორც ქვემოთხოვნები. ამ მოთხოვნების შედეგები გაერთიანებულია ერთ ანგარიშში LEFT JOIN მეთოდის გამოყენებით. შემდეგი მოთხოვნა აჩვენებს ანგარიშს თითოეული მიმწოდებლისთვის მიღებული და გაყიდული პროდუქციის რაოდენობისა და რაოდენობის შესახებ. ყურადღება უნდა მიაქციოთ იმ ფაქტს, რომ თუ რომელიმე პროდუქტი უკვე ჩამოვიდა, მაგრამ ჯერ არ გაყიდულა, მაშინ ამ ჩანაწერის შედეგის_ჯამის უჯრედი ცარიელი იქნება. რომ ეს შეკითხვა მხოლოდ გამოყენების მაგალითია რთული კითხვებიროგორც ქვემოთხოვნა. ამ SQL მოთხოვნის შესრულება დიდი რაოდენობით მონაცემებით საეჭვოა:
აირჩიეთ *
FROM
მოითხოვეთ Q034.ამ მაგალითში, ზემოთ მოცემული ორი მოთხოვნა (q031 და q032) გამოიყენება როგორც ქვემოთხოვნები. ამ მოთხოვნების შედეგები გაერთიანებულია ერთ ანგარიშში RIGTH JOIN მეთოდის გამოყენებით. შემდეგი მოთხოვნა ბეჭდავს ანგარიშს თითოეული მომხმარებლის მიერ გადახდილი გადახდების ოდენობის შესახებ მათ მიერ გამოყენებული გადახდის სისტემებზე და მათ მიერ განხორციელებული ინვესტიციების ოდენობაზე. შემდეგი მოთხოვნა აჩვენებს ანგარიშს თითოეული მიმწოდებლისთვის მიღებული და გაყიდული პროდუქციის რაოდენობისა და რაოდენობის შესახებ. გაითვალისწინეთ, რომ თუ პროდუქტი უკვე გაიყიდა, მაგრამ ჯერ არ მიუღია, მაშინ ამ ჩანაწერის შემოსავალი_ჯამის უჯრედი ცარიელი იქნება. ასეთი ცარიელი უჯრედების არსებობა არის გაყიდვების აღრიცხვის შეცდომის მაჩვენებელი, რადგან გაყიდვამდე, პირველ რიგში, აუცილებელია, რომ შესაბამისი პროდუქტი მოვიდეს:
აირჩიეთ *
FROM
მოითხოვეთ Q035.ნაჩვენებია ანგარიში პროდუქტის მიხედვით შემოსავლებისა და ხარჯების ოდენობის შესახებ. ამისათვის იქმნება პროდუქტების სია m_income და m_outcome ცხრილების მიხედვით, შემდეგ ამ სიიდან თითოეულ პროდუქტზე გამოითვლება მისი შემოსულობების ჯამი m_income ცხრილის მიხედვით და მისი ხარჯების ჯამი m_outcome ცხრილის მიხედვით:
SELECT product_id, SUM(in_mount) AS შემოსავალი_ოდენობა,
მოითხოვეთ Q036. EXISTS ფუნქცია უბრუნებს TRUE-ს, თუ მასზე გადაცემული ნაკრები შეიცავს ელემენტებს. EXISTS ფუნქცია უბრუნებს FALSE-ს, თუ მასზე გადაცემული ნაკრები ცარიელია, ანუ მას არ აქვს ელემენტები. შემდეგი მოთხოვნა აბრუნებს პროდუქტის კოდებს, რომლებიც შეიცავს როგორც m_income ცხრილში, ასევე m_outcome ცხრილში:
აირჩიეთ DISTINCT product_id
მოთხოვნა Q037.ნაჩვენებია პროდუქტის კოდები, რომლებიც შეიცავს როგორც m_income ცხრილში, ასევე m_outcome ცხრილში:
აირჩიეთ DISTINCT product_id
მოითხოვეთ Q038.ნაჩვენებია პროდუქტის კოდები, რომლებიც შეიცავს m_income ცხრილში, მაგრამ არ შეიცავს m_outcome ცხრილში:
აირჩიეთ DISTINCT product_id
მოთხოვნა Q039.ნაჩვენებია პროდუქტების სია, რომელთა გაყიდვები ყველაზე მაღალია. ალგორითმი ასეთია. თითოეული პროდუქტისთვის გამოითვლება მისი გაყიდვების ჯამი. შემდეგ განისაზღვრება ამ თანხების მაქსიმუმი. შემდეგ, თითოეული პროდუქტისთვის, კვლავ გამოითვლება მისი გაყიდვების ჯამი და ნაჩვენებია კოდი და საქონლის გაყიდვების ჯამი, რომლის გაყიდვების ჯამი უდრის მაქსიმუმს:
SELECT product_id, SUM (თანხა*ფასი) AS თანხა_ჯამად
მოითხოვეთ Q040.შეფასებისთვის გამოიყენება დაცული სიტყვა IIF (პირობითი განცხადება). ლოგიკური გამოხატულებადა შეასრულეთ ერთი ან მეორე მოქმედება შედეგის მიხედვით (TRUE ან FALSE). შემდეგ მაგალითში ნივთის მიწოდება ითვლება „პატარად“, თუ რაოდენობა 500-ზე ნაკლებია. წინააღმდეგ შემთხვევაში, ანუ ქვითრის რაოდენობა 500-ზე მეტი ან ტოლია, მიწოდება ითვლება „დიდი“:
SELECT dt, product_id, თანხა,
SQL შეკითხვა Q041.იმ შემთხვევაში, როდესაც IIF განცხადება გამოიყენება არაერთხელ, უფრო მოსახერხებელია მისი შეცვლა SWITCH განაცხადით. SWITCH ოპერატორი (მრავალჯერადი არჩევანის ოპერატორი) გამოიყენება ლოგიკური გამოხატვის შესაფასებლად და შედეგის მიხედვით მოქმედების შესასრულებლად. შემდეგ მაგალითში, მიწოდებული ლოტი ითვლება "პატარად", თუ ლოტში საქონლის რაოდენობა 500-ზე ნაკლებია. წინააღმდეგ შემთხვევაში, თუ საქონლის რაოდენობა 500-ზე მეტი ან ტოლია, ლოტი ჩაითვლება "დიდი". ":
SELECT dt, product_id, თანხა,
მოთხოვნა 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
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,
SQL შეკითხვა Q047.დღეების რაოდენობა საქონლის მიღების დღიდან (ცხრილი მ_ შემოსავალი) მდე მიმდინარე თარიღი DateDiff ფუნქციის გამოყენებით და ვადის გასვლის თარიღი შედარებულია (ცხრილი m_პროდუქტი):
SQL შეკითხვა Q048.გამოითვლება დღეების რაოდენობა საქონლის მიღებიდან მიმდინარე თარიღამდე, შემდეგ მოწმდება, აღემატება თუ არა ეს რიცხვი ვარგისიანობის ვადას:
აირჩიეთ a.id, product_id, dt, lifedays,
SQL შეკითხვა Q049.გამოითვლება თვეების რაოდენობა საქონლის მიღებიდან მიმდინარე თარიღამდე. სვეტი month_last1 ითვლის თვეების აბსოლუტურ რაოდენობას, სვეტი month_last2 ითვლის სრული თვეების რაოდენობას:
SELECT dt, DateDiff("m",dt,Date()) AS month_last1,
SQL შეკითხვა Q050.ნაჩვენებია კვარტალური ანგარიში 2011 წელს მიღებული საქონლის რაოდენობისა და რაოდენობის შესახებ:
SELECT kvartal, SUM(outcome_sum) AS სულ
მოთხოვნა Q051.შემდეგი შეკითხვა გვეხმარება იმის გარკვევაში, მოახერხეს თუ არა მომხმარებლებმა სისტემაში შეიყვანონ ინფორმაცია საქონლის მოხმარების შესახებ საქონლის მიღების ოდენობაზე მეტი ოდენობით:
SELECT product_id, SUM(in_sum) AS შემოსავალი_sum, SUM(out_sum) AS outcome_sum
აირჩიეთ COUNT(*) როგორც N, b.id, b.product_id, b.amount, b.price
მოთხოვნა Q053.გაყიდვების ოდენობით პროდუქტებს შორის საუკეთესო ხუთეულია ნაჩვენები. პირველი ხუთი ჩანაწერის გამოტანა ხორციელდება TOP ინსტრუქციის გამოყენებით:
აირჩიეთ TOP 5, product_id, ჯამი (თანხა*ფასი) როგორც ჯამი
მოთხოვნა Q054.გაყიდვების ოდენობით პროდუქტებს შორის საუკეთესო ხუთეულია ნაჩვენები და შედეგად ხაზები დანომრილია:
SELECT COUNT(*) AS N, b.product_id, b.summa
მოთხოვნა Q055.შემდეგი SQL მოთხოვნა აჩვენებს მათემატიკური ფუნქციების COS, SIN, TAN, SQRT, ^ და ABS გამოყენებას MS Access SQL-ში:
SELECT (აირჩიეთ რაოდენობა(*) m_income-დან) როგორც N, 3.1415926 როგორც pi, k,
განაახლეთ m_income SET ფასი = ფასი*1.1
მოთხოვნა U002.შემდეგი SQL განახლების მოთხოვნა ზრდის m_income ცხრილში ყველა პროდუქტის რაოდენობას 22 ერთეულით, რომელთა სახელები იწყება სიტყვით "კარაქი":
განაახლეთ m_income SET თანხა = თანხა+22
მოთხოვნა U003.შემდეგი SQL ცვლილების მოთხოვნა m_outcome ცხრილში ამცირებს ყველა საქონლის ფასებს OOO Sladkoe-ს მიერ 2 პროცენტით:
განაახლეთ m_outcome SET ფასი = ფასი*0.98