MySQL
MySQL-də sorğuların icra olunması
Ötən dərsdə cədvəllərin strukturu ilə tanış olduq. İndi isə gəlin cədvəllərə əlavə edilmiş verilənlərlə (məlumatlarla) işləməyi öyrənək.
Verilənlərin cədvələ əlavə edilməsi
Verilənlərin cədvələ əlavə edilməsi üçün INSERT
əmrindən istifadə edilir. Yazılış sintaksisi aşağıdakı kimidir:
INSERT INTO cədvəlin_adı ([sütunlar]) VALUES ([qiymətlər]);
Ötən dərsdə yaratdığımız users
cədvəlinə bir neçə istifadəçi əlavə edirik:
INSERT INTO users (email, name, age) VALUES('x1@codecourse.info', 'Emil', 35);
INSERT INTO users (email, name, age) VALUES('x2@codecourse.info', 'Zaur', 37);
INSERT INTO users (email, name, age) VALUES('x3@codecourse.info', 'Famil', 50);
INSERT INTO users (email, name, age) VALUES('x4@codecourse.info', 'Ellada', 25);
INSERT INTO users (email, name, age) VALUES('x5@codecourse.info', 'Zaur', 37);
INSERT INTO users (email, name, age) VALUES('x6@codecourse.info', 'Rasim', 18);
INSERT INTO users (email, name, age) VALUES('x7@codecourse.info', 'Emil', 35);
INSERT INTO users (email, name, age) VALUES('x8@codecourse.info', 'Ellada', 25);
INSERT INTO users (email, name, age) VALUES('x9@codecourse.info', 'Emil', 35);
Verilənlərin cədvəldən əldə edilməsi
Verilənləri seçilmiş cədvəldən əldə etmək üçün SELECT
əmrindən istifadə edilir. Aşağıdakı sorğu ilə users
cədvəlindən bütün sütun və sətirləri əldə edirik:
SELECT * FROM users;
* işarəsi VBİS-ə seçilmiş cədvəldən bütün sütunların əldə edilməsini əmr edir.
Cədvəldən məlumatları bütün sütunlar üzrə deyil, yalnız konkret sütunlar üzrə əldə etmək üçün SELECT
açar sözündən sonra həmin sütunların adını yazırıq:
SELECT email, name, age FROM users;
Aydındır ki müəyyən vaxtdan sonra cədvəldə məlumatların həcmi artır. Bu halda cədvəldən məlumatların konkret sütunlar üzrə əldə edilməsi tövsiyə edilir, çünki bu, daha sürətlidir.
DISTINCT
users
cədvəlindən yalnız istifadəçilərin adlarını əldə edən sorğunu icra edirik:
SELECT name FROM users;
Göründüyü kimi sorğunun nəticəsində bir neçə təkrarlanan ad mövcuddur: Emil, Zaur və Ellada.
Sorğunun nəticəsində təkrarlanan qiymətlərin aradan qaldırılması üçün DISTINCT
açar sözündən istifadə edilir:
SELECT DISTINCT name FROM users;
Verilənlərin cədvəldən şərtlərə görə əldə edilməsi
Verilənləri cədvəldən hər hansı şərtə görə əldə etmək üçün WHERE
açar sözündən istifadə edilir. Məsələn, users
cədvəlindən adı (name) Emil olan sətirləri əldə etmək üçün aşağıdakı sorğunu icra edirik:
SELECT * FROM users WHERE name = 'Emil';
AND və OR məntiqi operatorları
AND
və OR
məntiqi operatorlarından istifadə etməklə bir neçə şərt təyin etmək mümkündür. Məsələn, users
cədvəlindən adı Emil və email
-i x1@codecourse.info olan sətri əldə etmək üçün aşağıdakı sorğunu icra edək:
SELECT * FROM users WHERE name = 'Emil' AND email = 'x1@codecourse.info';
Yuxarıdakı sorğu AND
açar sözü vasitəsilə hər iki şərti özündə birləşdirir və cədvəldən hər iki şərti təmin edən sətir(lər)i əldə edir:
Əgər bütün şərtlər doğru olmalıdırsa, onda AND
məntiqi operatorundan istifadə edin. Əgər şərtlərdən heç olmasa biri doğru olmalıdırsa, onda OR
məntiqi operatorundan istifadə edirik:
SELECT * FROM users WHERE name = 'Emil' OR email = 'admin@codecourse.info';
IN operatoru
IN
operatoru vasitəsi ilə bir neçə OR
məntiqi operatorunu əvəz etmək mümkündür. Məsələn, users
cədvəlindən id
-si 2, 4, 6, 8 olan istifadəçiləri əldə etmək üçün aşağıdakı sorğunu icra edək:
SELECT * FROM users WHERE id IN (2, 4, 6, 8);
Eyni nəticəni aşağıdakı sorğu ilə də əldə etmək olardı:
SELECT * FROM users WHERE id = 2 OR id = 4 OR id = 6 OR id = 8;
Göründüyü kimi IN
operatoru ilə işləmək daha rahatdır.
BETWEEN operatoru
BETWEEN
operatoru müəyyən diapazonu və ya aralığı təyin edir. Məsələn, users
cədvəlindən yaşı 30-37 aralığında olan istifadəçiləri əldə edən sorğu aşağıdakı kimi olacaq:
SELECT * FROM users WHERE age BETWEEN 30 AND 37;
Şablon üzrə axtarış
Verilənlər bazasında məlumatların şablon üzrə axtarışı üçün LIKE
operatorundan istifadə edilir. Sözügedən operator %
və _
xüsusi simvolları ilə birgə işlənir. %
simvolu istənilən sayda simvol üçün şablon hesab edilir. _
simvolu isə istənilən bir simvol üçün şablon hesab edilir. Hər iki simvolu şablonun istənilən hissəsində yerləşdirmək mümkündür. users
cədvəlindən adında r
simvolu olan bütün məlumatları əldə edən sorğu aşağıdakı kimi olacaq:
SELECT * FROM users WHERE name LIKE "%r%";
Adının son hərfi a
ilə bitən istifadəçiləri əldə edən sorğu aşağıdakı kimi olacaq:
SELECT * FROM users WHERE name LIKE "%a";
users
cədvəlinin adının dördüncü hərfi i
olan istifadəçiləri əldə edək:
SELECT * FROM users WHERE name LIKE "___i%";
LIMIT və OFFSET
LIMIT
açar sözündən istifadə edərək böyükhəcmli verilənlər blokundan yalnız müəyyən sətirləri əldə edə bilərik. Təsəvvür edək ki, cədvəldə 1000 sətir mövcuddur, lakin bizə yalnız 10 sətir lazımdır. Bu vaxt LIMIT
operatoru köməyimizə gəlir. Bu, böyükhəcmli məlumatların axtarışı vaxtı məhsuldarlığa böyük təsir göstərir. Cədvəlimizdən yalnız ilk iki istifadəçini geri qaytaran sorğu belə olacaq:
SELECT * FROM users LIMIT 2;
Cədvəldən göstərilmiş sayda sətirləri buraxmaq üçün OFFSET
açar sözündən istifadə edirik:
SELECT * FROM users LIMIT 4 OFFSET 3;
Göründüyü kimi OFFSET
açar sözünün köməyilə ilk 3 sətri buraxdıq və LIMIT
ilə cədvəldən geri qaytarılan 4 sətri əldə etdik.
LIMIT
və OFFSET
vasitəsilə məlumatların səhifələrə bölünməsi (pagination) reallaşdırılır.
ORDER BY sıralama operatoru
ORDER BY
operatoru cədvəldən əldə edilən qiymətləri sütunlar üzrə sıralayır. Sözügedən operator məlumatları başlanğıc parametr kimi artan sıra (ASC
) üzrə sıralayır. Məsələn, aşağıdakı sorğu users
cədvəlindən əldə edilən məlumatları age
sütunu üzrə sıralayır:
SELECT * FROM users ORDER BY age;
Məlumatları azalan sıra ilə sıralamaq üçün DESC
açar sözündən istifadə edirik:
SELECT * FROM users ORDER BY age DESC;
Şərh yazmaq üçün hesabınıza daxil olun.