ნახვა SQL ძიება ყველა მაგიდები. მარტივი SQL მოთხოვნები - მოკლე დახმარება და მაგალითები

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

აირჩიეთ * d_staff

შეიყვანეთ SQL შეკითხვა სასწავლო პროგრამაში.

აირჩიეთ [SQL] Explorer- ზე მარცხნივ, დააჭირეთ [SQL ღილაკს] სიის ზემოთ მარჯვნივ, შეიტანეთ მოთხოვნა და დააჭირეთ ღილაკს [SQL ღილაკს]. შეკითხვის აღსრულების შემდეგ, სია ასე გამოიყურება. იმ შემთხვევაში, ყველაფერი უფრო ადვილია: უბრალოდ შეიყვანეთ SQL შეკითხვის შესაბამისი სფეროში და დააჭირეთ [Run].


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

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

აირჩიეთ s_name, s_experience from d_staff

უკანასკნელი SQL შეკითხვის შედეგი შედარებით ნაკლებია სივრცე "სიგანე".


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

ნაბიჯი 2. SQL მოთხოვნა მარტივი შერჩევის კრიტერიუმით

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

აირჩიეთ s_name, s_experience დან d_staff სადაც s_experience


გამოყენება მარტივი კრიტერიუმი ჩანაწერების შერჩევა.

ნაბიჯი 3. SQL მოთხოვნა კომპოზიტური შერჩევის კრიტერიუმით

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

აირჩიეთ s_name, s_experience, s_position from d_staff, სადაც (d_staff.s_position 20) და d_staff.s_experience


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

ნაბიჯი 4. ოპერატორს შორის

ოპერატორს შორის ამარტივებს სინტაქსის განსაზღვრის კრიტერიუმების სინტაქსს დასაშვები ღირებულებები. ნაცვლად 3-დან 7-მდე ქვემოთ, შესაძლებელი იქნებოდა d_staff.s_experience\u003e \u003d 3 და d_staff.s_experience<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

აირჩიეთ s_name, s_experience, s_position from d_staff, სადაც (d_staff.s_position 20) და d_staff.s_experience შორის 3 და 7


გამოყენებით ოპერატორს შორის.

ნაბიჯი 5. ოპერატორის მსგავსად

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

აირჩიეთ s_name d_Staff- დან, სადაც S_Name Like "S%" და S_name Like "% Sale" და S_name Like "% ICH"

აირჩიეთ s_name from d_staff სადაც s_name მოსწონს "C% wall% ich"


გამოიყენეთ ოპერატორი.

ნაბიჯი 6. ცხრილებისა და სფეროების ფსევდონიმები

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

აირჩიეთ s_name როგორც თანამშრომელი, s_experience როგორც [სამუშაო გამოცდილება], s_position როგორც პოზიცია d_Staff როგორც პერსონალი


მაგიდის ფსევდონიმებისა და სფეროების გამოყენება.

ნაბიჯი 7. თანაფარდობა "უფროსი - დაქვემდებარებული"

ეს მაგალითი ასრულებს "პირველი ნაბიჯები" SQL მოთხოვნებს, ყველაზე რთულია. აქ ჩვენ ვართ "პროგრამირების" თანამშრომლების ჩამონათვალი მათი პირდაპირი ხელმძღვანელობით. სირთულე ის არის, რომ ჩანაწერები და სხვები ინახება იმავე მაგიდაზე, ხოლო აქ არ შეიძლება გააკეთოს aliases. DBMS, შეკითხვის დროს, მიიღებს D_Staff მაგიდას, თითქოს ორი სხვადასხვა მაგიდა (ფსევდონიმების პერსონალისა და უფროსი), რათა ერთჯერადი ჩანაწერების ერთში სასამართლო ურთიერთობების საფუძველზე "უფროსი - ქვედანაყოფები". თანაფარდობა არის მოდელირებული შემდეგნაირად: S_chief_ID- ის ველი ვალდებულებებში შეესაბამება XD_IID- ის ღირებულების ღირებულებას.

შეარჩიეთ პერსონალი.


მიღება იერარქიის "უფროსი - მონა" გამოყენებით მაგიდა alias SQL.

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

ამიტომაც მოვამზადეთ მოკლე ექსკურსია SQL- ის საფუძვლებზე. Დავიწყოთ!

1. მაგიდის შექმნა

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

შექმენით მარტივი მაგიდა სახელით თვე.. იგი შედგება 3 სვეტისგან:

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

ეს არის ის, თუ როგორ შეესაბამება SQL შეკითხვას:

შექმენით მაგიდა თვეები (id int, სახელი varchar (10), დღე Int);

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

შექმენით მაგიდა თვეები (id int, სახელი varchar (10), დღე Int, პირველადი გასაღები (სახელი));

თარიღი და დრო
Მონაცემთა ტიპიაღწერილობა
თარიღი.თარიღი ღირებულებები
Datetime.თარიღი და დრო ღირებულებები პიტნის
დრო.დრო ღირებულებები

2. სტრიქონის ჩასმა

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

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

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

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

3. ცხრილების მონაცემების მოპოვება

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

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

აირჩიეთ * "პერსონაჟები"

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

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

აირჩიეთ ID, სახელით

გარდა ამისა, ხშირ შემთხვევაში, ჩვენ გვინდა შედეგების გარკვეული წესრიგის დასალაგებლად. SQL- ში, ჩვენ ამას ვაკეთებთ. მას შეუძლია მიიღოს სურვილისამებრ მოდიფიკატორი - ASC (default) აღმავალი ან DESC, დახარისხება Descending:

აირჩიეთ ID, სახელი დღემდე DESC- ის სახელით

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

4. მონაცემთა ფილტრაცია

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

ამ შეკითხვაზე, ჩვენ მხოლოდ ვირჩევთ თვეების მაგიდასთან თვე., რომელშიც 30 დღეზე მეტია ოპერატორის დახმარებით მეტი (\u003e).

აირჩიეთ ID, სახელით თვეში, სადაც დღეები\u003e 30

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

მანამდე, ერთი კრიტერიუმის გამოყენებით ფილტრაციის მონაცემების გამოყენება. დამატებითი კომპლექსური მონაცემების ფილტრაცია, შეგიძლიათ გამოიყენოთ და ან ოპერატორები და შედარების ოპერატორები (\u003d,<,>,<=,>=,<>).

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


აირჩიეთ * ალბომიდან, სადაც ჟანრია \u003d "როკ" და sales_in_millions<= 50 ORDER BY released

6. / მოსწონს /

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

  • In - ემსახურება განსაზღვრავს სპექტრი პირობები, რომელთაგან ნებისმიერი შეიძლება შესრულდეს
  • შორის - ამოწმებს თუ არა ღირებულება არის განსაზღვრული დიაპაზონი
  • მომწონს - ეძებს კონკრეტულ ნიმუშებს

მაგალითად, თუ ჩვენ გვინდა აირჩიოთ ალბომები პაპი და სული მუსიკა, ჩვენ შეგვიძლია გამოვიყენოთ ("VALUE1", "VALUE2").

აირჩიეთ * ალბომიდან, სადაც ჟანრი ("პოპ", "სული");

თუ ჩვენ გვინდა, რომ ყველა ალბომს, გამოქვეყნდეს 1975 და 1985 წლებში, ჩვენ უნდა დავწერო:

აირჩიეთ ალბომებისგან, სადაც 1975 და 1985 წლებში გაათავისუფლეს;

7. ფუნქციები

SQL Stuffers ერთად თვისებები, რომ სხვადასხვა სასარგებლო რამ. აქ არის რამოდენიმე ყველაზე ხშირად გამოყენებული:

  • Count () - ბრუნდება რიგი რიგების
  • თანხა () - დააბრუნებს რიცხვითი სვეტის საერთო რაოდენობას
  • AVG () - აბრუნებს საშუალო ღირებულებების საშუალო ღირებულებას
  • Min () / max () - იღებს მინიმალური / მაქსიმალური ღირებულება სვეტიდან

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

აირჩიეთ MAX (გაათავისუფლეს) ალბომებისგან;

8. სუბკუბები

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

ჩვენ ვიცით, როგორ მივიღოთ ეს კონკრეტული სვეტები:

აირჩიეთ მხატვარი, ალბომი, ალბომიდან ამოღებული;

ჩვენ ასევე ვიცით, როგორ მივიღოთ ადრეული წელი:

აირჩიეთ წონა (გაათავისუფლეს) ალბომიდან;

ყველაფერი რაც თქვენ გჭირდებათ, არის ორი მოთხოვნის კომბინაცია, სადაც:

შეარჩიეთ მხატვარი, ალბომი, რომელიც გაათავისუფლეს ალბომიდან, სადაც გაათავისუფლეს \u003d (ალბომების არჩევა);

9. აერთიანებს ცხრილებს

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


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

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

აირჩიეთ video_games.name, game_developers.name, game_developers.name, game_developers.Country from video_games შიდა გაწევრიანება game_developers on video_games.developer_id \u003d game_developers.id;

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

10. alias.

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

ჩვენ ასევე შეგვიძლია შევამციროთ მოთხოვნის მითითება ცხრილი სახელი Pseudonyms: Ვიდეო თამაშები. სახელი თამაშები., თამაშის advelopers. - devs.:

აირჩიეთ თამაშები.ახალგაზრდა, თამაშები.

11. მონაცემთა განახლება

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

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

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

ცხრილი მონაცემები tv_series განახლება tv_series მითითებული ჟანრის \u003d "Dram" სადაც ID \u003d 2;

12. მონაცემების წაშლა

SQL- ს მაგიდის რიგის წაშლა ძალიან მარტივი პროცესია. ყველაფერი რაც თქვენ გჭირდებათ, აირჩიოს მაგიდა და სიმებიანი, რომ გსურთ ამოიღონ. მოდი წაშალოთ ბოლო მაგალითი წინა მაგალითიდან მაგიდაზე. Ტელესერიალი.. ეს კეთდება ინსტრუქციის გამოყენებით\u003e წაშლა

წაშლა tv_series სადაც id \u003d 4

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

13. მაგიდის წაშლა

თუ ჩვენ გვინდა წაშალოთ ყველა ხაზი, მაგრამ დატოვეთ მაგიდა თავად, მაშინ გამოიყენოთ truncate ბრძანება:

Truncate მაგიდა table_name;

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

ჩამოაგდეს ცხრილი table_name;

ძალიან ფრთხილად იყავით ამ გუნდთან ერთად. ისინი არ შეიძლება გაუქმდეს! / P\u003e

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

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

და დავიწყოთ, რა თქმა უნდა, სრული ტექსტის ძიების საფუძვლების გათვალისწინებით, I.E. რა არის და რისთვისაც ზოგადად საჭიროა.

რა არის სრული ტექსტური ძებნა?

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

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

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

სრული ტექსტური ძებნა მახასიათებლები MS SQL Server

  • სრულ ტექსტში SQL სერვერებზე, თქვენ შეგიძლიათ მოძებნოთ არა მხოლოდ ინდივიდუალური სიტყვები ან ფრაზები, არამედ პრეფიქსი გამონათქვამებიმაგალითად, მაგალითად, ტექსტის დაწყების სიტყვა ან ფრაზა;
  • თქვენ ასევე შეგიძლიათ მოძებნოთ სიტყვა სიტყვების შესახებ, მაგალითად, მხოლოდ ზმნის სხვადასხვა ფორმების ან არსებითი სახელით ერთადერთი და მრავლობითი, ანუ. გასწვრივ მიღებული გამონათქვამები;
  • თქვენ შეგიძლიათ შექმნათ შეკითხვა ისე, რომ იპოვოთ სიტყვა ან ფრაზები, რომლებიც მდებარეობს სხვა სიტყვებით ან ფრაზებით, ანუ. გამონათქვამები;
  • არსებობს შესაძლებლობა იპოვოთ კონკრეტული სიტყვის სინონიმი ფორმები (თეზაურუსი), I.E. მაგალითად, თუ თეზაურუსში განისაზღვრება " ავტომობილი"და" Მანქანა"- ეს არის სინონიმები, მაშინ ეძებს სიტყვა" ავტომობილი»შედეგების კომპლექტი მოიცავს სიტყვას, რომელიც შეიცავს" Მანქანა»;
  • შეკითხვაზე შეგიძლიათ მიუთითოთ სიტყვები ან ფრაზები შეწონილი ღირებულებებიმაგალითად, თუ რამდენიმე სიტყვა ან ფრაზები მითითებულია შეკითხვაზე, მაშინ მათ შეუძლიათ დაინიშნოს მნიშვნელობა 0.0-დან 1.0-მდე ( 1.0 ნიშნავს, რომ ეს არის ყველაზე მნიშვნელოვანი სიტყვა ან ფრაზა);
  • იმისათვის, რომ არ განიხილონ ძიებაში ზოგიერთი სიტყვა შეგიძლიათ გამოიყენოთ " გაჩერების სიტყვების ჩამონათვალი", მე. ამ სიის მიხედვით, ძებნა არ შესრულდება.

MS SQL Server- ში სრული ტექსტის ძიების განხორციელების მომზადება

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

  • სრულ ტექსტში ძიების კომპონენტის სრული ტექსტის ძიების მიზნით ( სრული ტექსტი ძიება) უნდა იყოს დამონტაჟებული;
  • მაგიდა შეიძლება ჰქონდეს მხოლოდ ერთი სრული ტექსტური ინდექსი;
  • სრული ტექსტური ინდექსის შესაქმნელად, მაგიდა უნდა შეიცავდეს ერთ უნიკალურ ინდექსს, რომელიც მოიცავს ერთ სვეტს და არ აძლევს null ღირებულებებს. მიზანშეწონილია გამოიყენოთ უნიკალური კლასტერული ინდექსი ( ან უბრალოდ პირველადი გასაღები), რომელთა პირველი სვეტი უნდა ჰქონდეს მთელი რიცხვითი მონაცემების ტიპი;
  • სრული ტექსტური ინდექსი შეიძლება შეიქმნას სვეტებში მონაცემთა ტიპის: Char, Varchar, Nchar, Nvarchar, ტექსტი, NText, სურათი, XML, Varbiny ან Varbiny (MAX);
  • სრული ტექსტური ინდექსის შესაქმნელად, პირველ რიგში უნდა შეიქმნას სრული ტექსტური დირექტორია. დაწყებული SQL Server 2008, სრული ტექსტური კატალოგი არის ლოგიკური კონცეფცია, რომელიც აღწერს სრულ ტექსტურ ინდექსებს, I.E. არის ვირტუალური ობიექტი და არ შედის ფაილურ ჯგუფში ( არსებობს გზა, რათა შეიქმნას სრული ტექსტური ინდექსი "სამაგისტრო", რომელშიც დირექტორია შეიძლება შეიქმნას ერთდროულად ინდექსით, ეს მეთოდი ჩვენ მხოლოდ ქვემოთ).

Შენიშვნა! განახორციელოს სრული ტექსტური ძებნა მე ვიქნები SQL Server 2008 R2- ის მაგალითზე. ასევე ითვალისწინებს, რომ სრული ტექსტური ძიების კომპონენტი უკვე დამონტაჟებულია, თუ არა, მაშინ დააინსტალირეთ იგი "SQL Server ინსტალაციის ცენტრის" მეშვეობით, I.E. განათავსეთ შესაბამისი tick.

ქვემოთ მოყვანილი მაგალითებით, როგორც სრული ტექსტური დირექტორიებისა და ინდექსების შექმნისა და მართვის ინსტრუმენტი, მე გამოვიყენებ SQL Server Management Studio- ს.

წყარო მონაცემები სრული ტექსტის ძიების შესაქმნელად

ჩვენ ვივარაუდოთ, რომ ჩვენ გვაქვს testbase მონაცემთა ბაზა, და არსებობს testtable მაგიდა, რომელშიც მხოლოდ ორი სფეროა, პირველი (ID) არის პირველადი გასაღები და მეორე (TextData) არის ტექსტური მონაცემები, რომელთათვისაც ჩვენ განახორციელებთ -ტექსტის ძიება..

შექმნა მაგიდა testtable (id int intentity (1,1) არ არის , textdatata varchar (500) , შეზღუდვა pk_testtable პირველადი გასაღები კლასტერული (ID ASC))

მაგალითად, ის შეიცავს შემდეგ მონაცემებს.


SQL Server- ში სრული ტექსტის დირექტორია შექმნა

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

სრული ტექსტური დირექტორია T-SQL- ზე

სრული ტექსტის კატალოგი TestCatalog Accent_sensitivity \u003d როგორც ნაგულისხმები ავტორიზაციის DBO Go

  • შექმენით სრული ტექსტის კატალოგი - სრული ტექსტის შექმნის ბრძანება;
  • TestCatalog - ჩვენი სრული ტექსტის კატალოგი;
  • Accent_sensitivity (On | OF OF) - ვარიანტი მიუთითებს თუ არა სრული ტექსტის კატალოგი, რომელიც ითვალისწინებს სრულ ტექსტში ინდექსირებას. ჩვეულებრივ;
  • როგორც ნაგულისხმევი - ვარიანტი, რათა მიუთითოთ, რომ დირექტორია არის ნაგულისხმევი დირექტორია. სრული ტექსტური ინდექსის შემთხვევაში, ნაგულისხმევი დირექტორია გამოიყენება პირდაპირ მითითების გარეშე;
  • ავტორიზაციის DBO - აწესებს სრულ ტექსტურ დირექტორიას, ეს შეიძლება იყოს მომხმარებლის ან მონაცემთა ბაზის როლი. -ში ეს საქმე ჩვენ მიუთითეთ DBO- ს როლი.

სრული ტექსტის კატალოგის შექმნა გრაფიკული ინტერფეისი მენეჯმენტის სტუდია.

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


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


სრული ტექსტის კატალოგის შეცვლა და მოხსნა SQL Server- ში

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

Alter Fulltext კატალოგი ThristCatalog Rebuild ერთად Accent_sensitivity \u003d Off Go

დირექტორიაში წაშლის მიზნით, შეგიძლიათ გამოიყენოთ T-SQL ინსტრუქცია, მაგალითად

DROP FULTTEXT კატალოგი TESTCATALALALALAL

ეს ყველაფერი შეიძლება გაკეთდეს GUI Guiement Studio- ში ( "თვისებების" დირექტორია პარამეტრების შესაცვლელად, "წაშლის" წაშლა)

სრული ტექსტური ინდექსის შექმნა SQL Server- ში

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

სრული ტექსტური ინდექსის შექმნა T-SQL- ზე

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

სრული ტექსტის ინდექსი TestTable (TextData) ძირითადი ინდექსი PK_testtable on (testcatalog) ერთად (Change_Tracking Auto) გადასვლა

  • სრული ტექსტის ინდექსი - სრული ტექსტის ინდექსის შექმნის ბრძანება;
  • Testtable (TextData) - ცხრილი და სვეტი შედის ინდექსში;
  • ძირითადი ინდექსი pk_testtable - testtable ცხრილის უნიკალური ინდექსის სახელი;
  • On (testcatalog) - მიუთითებს, რომ სრული ტექსტური ინდექსი შეიქმნება tespatalog სრული ტექსტური დირექტორიაში. თუ არ დააკონკრეტებთ ამ პარამეტრს, ინდექსი შეიქმნება ნაგულისხმევ სრულ ტექსტში;
  • ერთად (CHANGE_TRACKING AUTO) - ჩვენ ვამბობთ, რომ ყველა ცვლილება, რომელიც საბაზისო მაგიდაზე (testtable) ავტომატურად გამოჩნდება ჩვენი სრული ტექსტური ინდექსით, ანუ. ავტომატური შევსება.

შექმენით სრული ტექსტური ინდექსი მენეჯმენტის სტუდია GUI- ში

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


სრული ტექსტის ინდექსის შეცვლა და მოხსნა

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

ან შეგიძლიათ დაწეროთ შემდეგი კოდი

სრული ტექსტის ინდექსი Testtable Set Change_Tracking \u003d სახელმძღვანელო

სრული ტექსტის ინდექსის წაშლის მიზნით, საკმარისია, რომ ამოთჯგუფთან სრული ტექსტის დირექტორიასთან დაკავშირებული ობიექტების ჩამონათვალიდან მხოლოდ ცხრილის წაშლა " სრული ტექსტის კატალოგი თვისებები -\u003e მაგიდები ან შეხედულებები»


ან დაწერეთ T-SQL კოდი

DROP სრული ტექსტის ინდექსი TestTable- ზე

სრული ტექსტის კატალოგისა და ინდექსის შექმნა ოსტატის გამოყენებით

როგორც უკვე აღვნიშნე პირველი ტექსტური დირექტორია და ინდექსი შეიძლება შეიქმნას სამაგისტრო, ანუ. ნაბიჯები, ამისთვის, დააჭირეთ მარჯვენა მაუსის ღილაკს მაგიდაზე, რომ ჩვენ გვინდა, რომ შეიცავდეს სრულ ტექსტში ძებნა, და აირჩიოს " სრული ტექსტის ინდექსი -\u003e სრული ტექსტის ინდექსი».

Შენიშვნა! მანამდე, მე წაიშალა დირექტორია და ინდექსი, რომელიც ჩვენ შევქმენით წინა მაგალითები.


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



შემდეგ სვეტი, რომელიც შედის სრულ ტექსტში.


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


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


აქ ჩვენ შეგვიძლია Customize სრული ტექსტის კატალოგი.


კატალოგისა და ინდექსის შესაქმნელად " მომზადებული».


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


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

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

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

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

აირჩიეთ * საწყისი ტესტირება, სადაც შეიცავს (TextData, "Microsoft")


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

აირჩიეთ მაგიდა 1.id id, rowrank.rank as, table1.textdata როგორც testtable ცხრილი 1 შიდა გაწევრიანება controbant (testtable, textdata, "Microsoft") როგორც Rowrank on table1.id \u003d rowrank. შეკვეთა rowrank.Rank Desc


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

ეს ვარაუდობს, რომ დასრულდება, ვიმედოვნებ, ყველაფერი ნათელი იყო, გისურვებთ წარმატებებს!

მოთხოვნები იწერება დამცავი შეთავაზებების გარეშე, რადგან Mysql, MS SQL. და Postgree ისინი განსხვავდებიან.

SQL მოთხოვნა: მაგიდისგან განსაზღვრული (აუცილებელი) სფეროების მოპოვება

აირჩიეთ ID, Country_Title, Count_People საწყისი Table_Name

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: ყველა ქვეყანა და მათი მოსახლეობა. სასურველი დარგების სახელი მითითებულია მძიმით.

აირჩიეთ * საწყისი table_name

* მიუთითებს ყველა სფეროში. ანუ, იქნება შოუები ყველაფერი მონაცემთა სფეროები.

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

აირჩიეთ მკაფიო Country_Title from table_name

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

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

აირჩიეთ ID, Country_title, City_Title საწყისი Table_Name სადაც Count_People\u003e 100000000

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: ქვეყნები, სადაც მოსახლეობის რაოდენობა 100,000 000-ზე მეტია.

SQL მოთხოვნა: განაცხადის ჩანაწერების ჩვენება

აირჩიეთ ID, City_Title საწყისი Table_Name Order by City_title

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: ქალაქები ანბანური თანმიმდევრობით. დასაწყისში A, ბოლოს YA.

აირჩიეთ ID, City_Title საწყისი Table_Name Order by City_title Desc

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: ქალაქები საპირისპირო ( Desc.). დასაწყისში, მე, ბოლოს ა.

SQL შეკითხვა: ჩანაწერების რაოდენობა

აირჩიეთ რაოდენობა (*) საწყისი table_name

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

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

აირჩიეთ * Table_Name Limit 2, 3

ჩვენ მივიღებთ 2 (მეორე) და 3 (მესამე) შესვლის მაგიდასთან. მოთხოვნა სასარგებლოა, როდესაც ვებ-გვერდებზე ნავიგაციის შექმნაა.

SQL მოითხოვს პირობებს

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

SQL მოთხოვნა: მშენებლობა და (და)

აირჩიეთ ID, City_Title from table_name სადაც ქვეყანა \u003d "რუსეთი" და ზეთი \u003d 1

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

SQL მოთხოვნა: დიზაინი ან (ან)

აირჩიეთ ID, City_Title საწყისი table_name სადაც ქვეყანა \u003d "რუსეთი" ან ქვეყანა \u003d "აშშ"

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: ყველა ქალაქი რუსეთიდან ან ᲐᲨᲨ. ოპერატორის გამოყენებისას ან., უნდა ემთხვეოდეს მინიმუმ ერთი პირობა.

SQL შეკითხვის: დიზაინი და არა (და არა)

აირჩიეთ ID, user_login from table_name სადაც ქვეყანა \u003d "რუსეთი" და არა COUNT_Comments<7

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: რუსეთის ყველა მომხმარებელი და დამზადებულია ᲐᲠᲐᲜᲐᲙᲚᲔᲑ 7 კომენტარი.

SQL მოთხოვნა: In (ბ) დიზაინი

აირჩიეთ ID, User_login from table_name სადაც ქვეყანა ("რუსეთი", "ბულგარეთი", "ჩინეთი")

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: ყველა მომხმარებელი ცხოვრობს ( შემოსული) (რუსეთი, ან ბულგარეთი, ან ჩინეთი)

SQL მოთხოვნა: არ არის დიზაინი (არა)

აირჩიეთ ID, user_login from table_name სადაც ქვეყანა არ არის ("რუსეთი", "ჩინეთი")

ჩვენ მივიღებთ ჩანაწერების ჩამონათვალს: ყველა მომხმარებელი, რომელიც ცხოვრობს არ არის ( არა) (რუსეთი ან ჩინეთი).

SQL მოთხოვნა: არის null დიზაინი (ცარიელი ან არ ცარიელი ღირებულებები)

აირჩიეთ ID, user_login from table_name სადაც სტატუსი null

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

აირჩიეთ ID, user_login from table_name სადაც სახელმწიფო არ არის null

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

SQL მოთხოვნა: როგორც დიზაინი

აირჩიეთ ID, user_login from table_name სადაც გვარი, როგორიცაა "ივან%"

ჩვენ ვიღებთ ჩანაწერების ჩამონათვალს: მომხმარებლები, რომლებსაც აქვთ გვარი, რომლებიც იწყება კომბინაციით "ივანთან". შესვლა ნიშნავს ნებისმიერი რაოდენობის ნებისმიერი სიმბოლო. მოვძებნოთ ნიშანი, თქვენ უნდა გამოვიყენოთ სკრინინგი "ივან \\%".

SQL შეკითხვა: დიზაინს შორის

აირჩიეთ ID, user_login from table_name სადაც ხელფასი 25000 და 50000

ჩვენ ვიღებთ ჩანაწერების ჩამონათვალს: მომხმარებლები, რომლებიც იღებენ ხელფასს 25,000-დან 50,000-მდე.

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

კომპლექსი SQL მოთხოვნები

SQL შეკითხვის: მრავალჯერადი მოთხოვნის შერწყმა

(Select ID, User_login from table_name1) კავშირი (აირჩიეთ ID, User_login from table_name2)

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

SQL მოთხოვნა: დათვლა მაქს, მინ, თანხა, AVG, ითვლიან საველე ღირებულებებს

დასკვნა ერთი, მაქსიმალური მრიცხველის ღირებულების ცხრილში:

აირჩიეთ მაქს (Counter) საწყისი table_name

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

აირჩიეთ min (counter) საწყისი table_name

ცხრილში მრიცხველების ყველა ღირებულების გამომუშავება:

აირჩიეთ თანხა (counter) საწყისი table_name

მაგიდაზე საშუალო მეტრის ღირებულების გამომავალი:

აირჩიეთ AVG (Counter) table_name

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

აირჩიეთ რაოდენობა (counter) საწყისი table_name

სემინარის ნომერი 1-ში მეტრი 1, ცხრილში:

აირჩიეთ Count (Counter) საწყისი table_name სადაც ოფისი \u003d "მაღაზია ნომერი 1"

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

SQL შეკითხვის: დაჯგუფების ჩანაწერები

აირჩიეთ კონტინენტი, თანხა (Country_area) ქვეყნის ჯგუფიდან კონტინენტზე

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

SQL მოთხოვნა: მრავალჯერადი მაგიდის გამოყენებით (alias)

აირჩიეთ ო.

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

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

აირჩიეთ ო.

Nested Subqueries

აირჩიეთ * საწყისი table_name სადაც ხელფასი \u003d (აირჩიეთ max (ხელფასი) თანამშრომელი)

ჩვენ მივიღებთ ერთ ჩანაწერს: მომხმარებლის ინფორმაცია მაქსიმალური ხელფასით.

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

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

SQL მოთხოვნა: ჩასმა

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

ვარიანტი ნომერი 1. ინსტრუქცია ხშირად გამოიყენება:

ჩადეთ Table_name (ID, User_login) ღირებულებები (1, "ივანოვი"), (2, "პეტროვი")

Მაგიდაზე " table_name."დაუყოვნებლივ იქნება 2 (ორი) მომხმარებელი.

ვარიანტი ნომერი 2. ეს არის უფრო მოსახერხებელი სტილი:

ჩადეთ Table_name Set ID \u003d 1, user_login \u003d "ივანოვი"; ჩადეთ Table_Name Set ID \u003d 2, user_login \u003d "Petrov";

მას აქვს თავისი უპირატესობები და უარყოფითი მხარეები.

ძირითადი უარყოფითი მხარეები:

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

მთავარი უპირატესობები:

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

SQL მოთხოვნა: განახლება

განაახლეთ table_name set user_login \u003d "ivanov", user_surname \u003d "ivanov", სადაც ID \u003d 1

Მაგიდაზე " table_name."ID NUMBER \u003d 1-ში ჩანაწერებში მითითებულ ფასეულობებში შეიცვლება მომხმარებლის ოდენობის ნომერი \u003d 1-ის ღირებულებები.

SQL მოთხოვნა: წაშლა

წაშლა table_name სადაც id \u003d 3

Table_name მაგიდა წაიშლება ნომერ 3 ID- ით.

  1. ყველა საველე სახელწოდება რეკომენდირებულია პატარა ასოებით და საჭიროების შემთხვევაში, გაყოფა მათ იძულებითი სივრცის მეშვეობით "_" სხვადასხვა პროგრამირების ენებზე, როგორიცაა Delphi, Perl, Python და Ruby.
  2. SQL გუნდები წერენ დიდი წერილები readability. დამახსოვრება ყოველთვის, რომ მას შემდეგ, რაც თქვენ შეგიძლიათ წაიკითხოთ კოდი და სხვა ხალხი, და სავარაუდოდ თქვენ მეშვეობით მეშვეობით n დროის.
  3. დარეკეთ სფეროებში არსებითი სახელით, შემდეგ კი აქცია. მაგალითად: city_status, user_login, user_name.
  4. სცადეთ თავიდან ავიცილოთ სარეზერვო სიტყვები სხვადასხვა ენებზე, რომლებიც შეიძლება გამოიწვიოს SQL, PHP ან Perl ენების პრობლემები, როგორიცაა (სახელი, რაოდენობა, ბმული). მაგალითად: ლინკი შეიძლება გამოყენებულ იქნას MS SQL- ში, მაგრამ MySQL- ში დაცულია.

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