Sobes.tech
Middle

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

sobes.tech AI

პასუხი AI-სგან

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

SELECT [ALL | DISTINCT]
    select_expr, select_expr, ...
FROM
    table_references
[WHERE
    where_condition]
[GROUP BY
    {col_name | expr | position}
    [ASC | DESC], ... [WITH ROLLUP]]
[HAVING
    having_condition]
[ORDER BY
    {col_name | expr | position}
    [ASC | DESC], ...]
[LIMIT
    [offset,] row_count | row_count OFFSET offset]
    [FOR UPDATE | LOCK IN SHARE MODE];

ძირითადი ნაწილები:

  • SELECT [ALL | DISTINCT] select_expr, ...:

    • SELECT: სიტყვა, რომელიც აღნიშნავს მონაცემების არჩევას.
    • ALL: (ნაგულისხმევი) მოიცავს ყველა პოვნილ ხაზს, მათ შორის დუბლიკატებს.
    • DISTINCT: ამოწმებს დუბლიკატებს შედეგიდან.
    • select_expr: გამოთვლა, რომელიც განსაზღვრავს არჩეულ სვეტებს ან გამოთვლილ მნიშვნელობებს (მაგ., column_name, function(column), column1 + column2, * ყველა სვეტისთვის). შეიძლება გამოიყენოს მეტსახელები (AS-ის საშუალებით).
  • FROM table_references:

    • FROM: სიტყვა, რომელიც აღნიშნავს მონაცემთა წყაროს.
    • table_references: სია ცხრილების, რომლებიციდან ხდება მონაცემთა არჩევა. შეიძლება იყოს მარტივი ცხრილები, წარმოდგენები ან შეუერთებები (JOIN). სხვადასხვა ტიპის შეუერთებები: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: სიტყვა, რომელიც გამოიყენება ხაზების ფილტრაციისთვის მითითებული პირობით.
    • where_condition: ლოგიკური გამოთვლა, რომელიც იყენებს შედარების ოპერატორებს (=, !=, >, <, >=, <=), ლოგიკურ ოპერატორებს (AND, OR, NOT), დიაპაზონის ოპერატორებს (BETWEEN), სია (IN), სქემები (LIKE) და NULL-ის შემოწმებები (IS NULL, IS NOT NULL).
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: ჯგუფավորում ერთნაირი მნიშვნელობების ხაზებს მითითებულ სვეტებში, რათა გამოიყენოს აგრეგატული ფუნქციები (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: სვეტი, გამოთვლა ან სვეტის პოზიცია ჯგუფավորմանთვის.
    • ASC | DESC: არჩევითი, განსაზღვრავს სორტირების წესს ჯგუფში (ხშირად გამოიყენება ORDER BY-თან ერთად).
    • WITH ROLLUP: არჩევითი, დამატებით ხატავს საბოლოო გამოთვლების ხაზებს (MySQL-ისთვის).
  • [HAVING having_condition]:

    • HAVING: ფილტრავს GROUP BY-ით შექმნილ ჯგუფებს მითითებული პირობით. განსხვავდება WHERE-დან, რადგან შეუძლია გამოიყენოს აგრეგატული ფუნქციები.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: სორტირებს შედეგების ხაზებს.
    • col_name | expr | position: სვეტი, გამოთვლა ან სვეტის პოზიცია სორტირებისთვის.
    • ASC: ზრდადობით (ნაგულისხმევი):
    • DESC: კლებადობით.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: შეზღუდავს დაბრუნებულ ხაზების რაოდენობას. შეიძლება გამოყენებულ იქნას გვერდის განლაგებისთვის.
    • offset: გადახვევა დასაწყისიდან, გამოტოვებული ხაზების რაოდენობა.
    • row_count: მაქსიმალური ხაზების რაოდენობა.
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • არჩევითი სვეტების ბლოკირება, რომლებიც გამოიყენება ტრანზაქციებში პარალელური წვდომის მართვისთვის:
    • FOR UPDATE: იღებს ექსკლუზიურ ბლოკირებას არჩეულ ხაზებზე, ხელს უშლის მათ შეცვლას სხვა ტრანზაქციებიდან.
    • LOCK IN SHARE MODE: იღებს განაწილებულ ბლოკირებას, რომელიც საშუალებას აძლევს სხვა ტრანზაქციებს წაიკითხონ ხაზები, მაგრამ არა შეცვალონ ისინი (MySQL-ისთვის). სხვა მონაცემთა ბაზებში შეიძლება გამოყენებულ იქნას მსგავსი მექანიზმები (FOR SHARE).

საერთო ჯამში, SELECT ოპერაციის ნაწილები გამოიყენება შემდეგი წესით:

  1. FROM
  2. JOIN
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. DISTINCT
  8. ORDER BY
  9. LIMIT
  10. FOR UPDATE / LOCK IN SHARE MODE