საბაზისო ბრძანებები

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

ყველა სვეტისა და მწკრივის სელექცია

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

გასათვალისწინებელია შემდეგი:

  1. FROM პირობა მოსდევს SELECT პირობას
  2. * ნიშნავს ყველა სვეტს
  3. ცხრილის სახელი მიეთითება FROM პირობაში
  4. სვეტები და მწკრივები გამოჩნდება წესრიგის გარეშე (არ იქნება დალაგებული რაიმე პირობის მიხედვით)
SELECT *
FROM Students;

(10 rows affected)   Total execution time: 00:00:00.003

StudentIDFirstNameLastNameAgeMajor
1DavitGiorgadze20Computer Science
2AnaBeridze21Business Administration
3LukaKhutsishvili22Computer Science
4MariamLomidze19Psychology
5SandroKapanadze23Computer Science
6SalomeGelashvili20Law
7GiorgiNadaraya21Economics
8TamarKiknadze22Computer Science
9DatoChkheidze24Computer Science
10NinoJibuti20Architecture
სინტაქსის შეჯამება:
SELECT *
FROM Table_Name;

სპეციფიკური სვეტების სელექცია

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

-- ერთი სვეტის (FirstName) სელექცია
SELECT FirstName
FROM Students;

(10 rows affected)   Total execution time: 00:00:00.004

FirstName
Davit
Ana
Luka
Mariam
Sandro
Salome
Giorgi
Tamar
Dato
Nino
-- ორი სვეტის (FirstName და LastName) სელექცია
SELECT FirstName, LastName
FROM Students;

(10 rows affected)   Total execution time: 00:00:00.004

FirstNameLastName
DavitGiorgadze
AnaBeridze
LukaKhutsishvili
MariamLomidze
SandroKapanadze
SalomeGelashvili
GiorgiNadaraya
TamarKiknadze
DatoChkheidze
NinoJibuti
-- სამი სვეტის (FirstName, LastName და Major) სელექცია
SELECT FirstName, LastName, Major
FROM Students;

(10 rows affected)   Total execution time: 00:00:00.004

FirstNameLastNameMajor
DavitGiorgadzeComputer Science
AnaBeridzeBusiness Administration
LukaKhutsishviliComputer Science
MariamLomidzePsychology
SandroKapanadzeComputer Science
SalomeGelashviliLaw
GiorgiNadarayaEconomics
TamarKiknadzeComputer Science
DatoChkheidzeComputer Science
NinoJibutiArchitecture

გასათვალისწინებელია შემდეგი:

  1. სვეტების სახელების სია მიეთითება SELECT პირობაში
  2. სვეტების სახელები ერთმანეთისგან გამოიყოფა მძიმით
  3. სვეტები გამოჩნდება დალაგებულად (როგორც SELECT პირობაში მივუთითებთ)
  4. მწკრივები გამოჩნდება წესრიგის გარეშე (არ იქნება დალაგებული რაიმე პირობის მიხედვით)
სინტაქსის შეჯამება:
SELECT Column1, Column2, ...
FROM Table_Name;

განსხვავებული მნიშვნელობების სელექცია

განსხვავებული (უნიკალური) მნიშვნელობების გამოსატანად გამოიყენება SELECT DISTINCT პირობა. იგი გამორიცხავს დუბლირებულ მნიშვნელობებს.

მოცემულ ცხრილში Major სვეტის მნიშვნელობები შეიცავს დუბლირებულ მნიშვნელობებს (Computer Science პროგრამაზე 5 სტუდენტია). იმისათვის, რომ გავიგოთ განსხვავებული Major-ების შესახებ ინფორმაცია, გამოვიყენოთ SELECT DISTINCT:

SELECT DISTINCT Major
FROM Students;

(6 rows affected)   Total execution time: 00:00:00.002

Major
Architecture
Business Administration
Computer Science
Economics
Law
Psychology
სინტაქსის შეჯამება:
SELECT DISTINCT Column_Name
FROM Table_Name;

სპეციფიკური მწკრივების სელექცია

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

რიცხვითი მნიშვნელობების ჩაწერის სინტაქსი

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

WHERE Age = 20
WHERE Age > 22
WHERE Age <= 21

გასათვალისწინებელია:

  1. ნიშნის მითითება არ არის სავალდებულო. თუმცა თუ მიეთითება, ის უნდა ეწეროს პირველი
  2. მხოლოდ ერთი ათწილადური ნიშნის (.) მითითებაა შესაძლებელი
  3. დოლარის ნიშნის, მძიმისა და პროცენტული ნიშნის მითითება არ არის ნებადართული
არა-რიცხვითი (NON-NUMERIC) მნიშვნელობების ჩაწერის სინტაქსი

სტრიქონული მნიშვნელობები ჩაიწერება ბრჭყალებში:

WHERE Major = 'Computer Science'
WHERE LastName = 'Beridze'
თარიღის კატეგორიის მნიშვნელობების ჩაწერის სინტაქსი

თარიღის მნიშვნელობები ასევე ჩაიწერება ბრჭყალებში:

WHERE EnrollmentDate = '2023-09-01'
WHERE BirthDate < '2005-01-01'
შედარების ოპერატორები

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

ოპერატორიმნიშვნელობა
=ტოლია
<>არ უდრის
<ნაკლებია
>მეტია
<=ნაკლები ან ტოლია
>=მეტი ან ტოლია

შედარებები უნდა მიეთითოს WHERE პირობაში, რომელიც მოდის FROM-ის შემდეგ:

-- იმ სტუდენტების სელექცია, რომელთა ასაკი 22 წელზე მეტია
SELECT *
FROM Students
WHERE Age > 22;

(2 rows affected)   Total execution time: 00:00:00.002

StudentIDFirstNameLastNameAgeMajor
5SandroKapanadze23Computer Science
9DatoChkheidze24Computer Science
 -- იმ სტუდენტების FirstName, LastName, Major ჩვენება, რომელთა ასაკი 20 წელს უდრის
SELECT FirstName, LastName, Major
FROM Students
WHERE Age = 20;

(3 rows affected)   Total execution time: 00:00:00.003

FirstNameLastNameMajor
DavitGiorgadzeComputer Science
SalomeGelashviliLaw
NinoJibutiArchitecture
სინტაქსის შეჯამება:
SELECT Column1, Column2, ...
FROM Table_Name
WHERE Column_Name operator value;

მწკრივების სორტირება

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

-- სორტირება LastName-ის მიხედვით (ზრდადობის მიხედვით)
SELECT *
FROM Students
ORDER BY LastName;

(10 rows affected)   Total execution time: 00:00:00.005

StudentIDFirstNameLastNameAgeMajor
2AnaBeridze21Business Administration
9DatoChkheidze24Computer Science
6SalomeGelashvili20Law
1DavitGiorgadze20Computer Science
10NinoJibuti20Architecture
5SandroKapanadze23Computer Science
3LukaKhutsishvili22Computer Science
8TamarKiknadze22Computer Science
4MariamLomidze19Psychology
7GiorgiNadaraya21Economics

გასათვალისწინებელია:

  1. თუ ORDER BY-ს არ ახლავს ASC ან DESC, სორტირება ავტომატურად განხორციელდება ზრდადობის (ASC) მიხედვით
  2. ტექსტური მნიშვნელობები სორტირდებიან ალფაბეტის მიხედვით, ხოლო რიცხვითი — სიდიდის მიხედვით
  3. შესაძლებელია რამდენიმე დონის სორტირება — სვეტების სახელწოდებები ერთმანეთისგან გამოიყოფა მძიმით
-- სორტირება Age-ის მიხედვით (კლებადობის მიხედვით)
SELECT *
FROM Students
ORDER BY Age DESC;

(10 rows affected)   Total execution time: 00:00:00.005

StudentIDFirstNameLastNameAgeMajor
9DatoChkheidze24Computer Science
5SandroKapanadze23Computer Science
8TamarKiknadze22Computer Science
3LukaKhutsishvili22Computer Science
2AnaBeridze21Business Administration
7GiorgiNadaraya21Economics
6SalomeGelashvili20Law
1DavitGiorgadze20Computer Science
10NinoJibuti20Architecture
4MariamLomidze19Psychology
-- სორტირება LastName-ისა (ზრდადობის) და Age-ის (კლებადობის) მიხედვით
SELECT *
FROM Students
ORDER BY LastName ASC, Age DESC;

(10 rows affected)   Total execution time: 00:00:00.005

StudentIDFirstNameLastNameAgeMajor
2AnaBeridze21Business Administration
9DatoChkheidze24Computer Science
6SalomeGelashvili20Law
1DavitGiorgadze20Computer Science
10NinoJibuti20Architecture
5SandroKapanadze23Computer Science
3LukaKhutsishvili22Computer Science
8TamarKiknadze22Computer Science
4MariamLomidze19Psychology
7GiorgiNadaraya21Economics

შესაძლებელია სორტირება სვეტის პოზიციის მიხედვით:

-- სვეტის პოზიციის გამოყენებით სორტირება (სორტირება Major-ის მიხედვით)
SELECT FirstName, LastName, Major
FROM Students
ORDER BY 3;

(10 rows affected)   Total execution time: 00:00:00.005

FirstNameLastNameMajor
NinoJibutiArchitecture
AnaBeridzeBusiness Administration
LukaKhutsishviliComputer Science
SandroKapanadzeComputer Science
DavitGiorgadzeComputer Science
TamarKiknadzeComputer Science
DatoChkheidzeComputer Science
GiorgiNadarayaEconomics
SalomeGelashviliLaw
MariamLomidzePsychology
სინტაქსის შეჯამება: (კვადრატული ფრჩხილები მიუთითებს არასავალდებულო ელემენტებს)
SELECT Column1, Column2, ...
FROM Table_Name
[WHERE condition]
ORDER BY Column_Name [DESC];

პირველი N მწკრივის ნახვა სორტირებასთან ერთად

სორტირების გამოყენების დროს მნიშვნელობას იძენს მხოლოდ პირველი რამდენიმე მწკრივის გამოჩენა, რათა ვნახოთ Top მნიშვნელობები. MySQL-ში ამისათვის გამოიყენება LIMIT N (სადაც N რიცხვია).

-- 5 ყველაზე ასაკიანი სტუდენტი
SELECT *
FROM Students
ORDER BY Age DESC
LIMIT 5;

(5 rows affected)   Total execution time: 00:00:00.005

StudentIDFirstNameLastNameAgeMajor
9DatoChkheidze24Computer Science
5SandroKapanadze23Computer Science
3LukaKhutsishvili22Computer Science
8TamarKiknadze22Computer Science
2AnaBeridze21Business Administration
-- ყველაზე ასაკიანი სტუდენტი Computer Science პროგრამაზე
SELECT FirstName, LastName, Age, Major
FROM Students
WHERE Major = 'Computer Science'
ORDER BY Age DESC
LIMIT 1;

(1 row affected)   Total execution time: 00:00:00.006

FirstNameLastNameAgeMajor
DatoChkheidze24Computer Science
სინტაქსის შეჯამება:
SELECT Column1, Column2, ...
FROM Table_Name
[WHERE condition]
ORDER BY Column_Name [DESC]
LIMIT N;

სვეტების Aliases

Aliases არის მომხმარებლის მიერ სვეტისთვის მინიჭებული სახელი. სვეტების Aliases-თვის გამოიყენება საკვანძო სიტყვა AS.

-- Major სვეტის Program-ად გამოტანა
SELECT FirstName, LastName, Major AS Program
FROM Students
WHERE Major = 'Computer Science';

(5 rows affected)   Total execution time: 00:00:00.002

FirstNameLastNameProgram
DavitGiorgadzeComputer Science
LukaKhutsishviliComputer Science
SandroKapanadzeComputer Science
TamarKiknadzeComputer Science
DatoChkheidzeComputer Science
-- რამდენიმე სვეტისთვის Alias-ების მინიჭება
SELECT FirstName AS UserName, LastName AS Surname
FROM Students;

(10 rows affected)   Total execution time: 00:00:00.004

UserNameSurname
DavitGiorgadze
AnaBeridze
LukaKhutsishvili
MariamLomidze
SandroKapanadze
SalomeGelashvili
GiorgiNadaraya
TamarKiknadze
DatoChkheidze
NinoJibuti
-- Top 2 ყველაზე ასაკიანი სტუდენტი CS-ზე, სახელი და გვარი გაერთიანებულად
SELECT FirstName, LastName, CONCAT(FirstName, ' ', LastName) AS Oldest_Students_CS
FROM Students
WHERE Major = 'Computer Science'
ORDER BY Age DESC
LIMIT 2;

(2 rows affected)   Total execution time: 00:00:00.005

FirstName LastName Oldest_Students_CS
Dato Chkheidze Dato Chkheidze
Sandro Kapanadze Sandro Kapanadze
-- AS საკვანძო სიტყვის გამოყენება არ არის სავალდებულო
SELECT FirstName USER_NAME
FROM Students;

(10 rows affected)   Total execution time: 00:00:00.034

USER_NAME
Davit
Ana
Luka
Mariam
Sandro
Salome
Giorgi
Tamar
Dato
Nino

გასათვალისწინებელია:

  1. Column Aliases უნდა განისაზღვროს SELECT პირობაში
  2. Aliases-ის გამოყენება შეგვიძლია ORDER BY პირობაში
  3. ასეთ შემთხვევებში AS საკვანძო სიტყვის გამოყენება არ არის სავალდებულო
სინტაქსის შეჯამება:
SELECT Column_Name AS Alias_Name
FROM Table_Name;